Hello!
How to draw a box - border around
current/focused line in TWBrowse.
Thanks, Roman
© I'm not patented!
Hello!
How to draw a box - border around
current/focused line in TWBrowse.
Thanks, Roman
You can't.
Roman, James,
Class TWBrowse Method Paint() can be easily modified to paint a dotted line or similar around the focused line.
Antonio,
Well, easy for you probably, but I remember spending quite some time trying to get it working without success. I think part of the problem was that the cells are kind of still 3d from the old days. There are actually two lines around each cell. Maybe one is drawn in the background color. I don't remember exactly, but there were issues.
I'd be happy if someone proved me wrong.
James
case nLineStyle == LINES_GRAY
hPen = CreatePen( PS_SOLID, 1, CLR_GRAY )
hOld = SelectObject( hDC, hPen )
MoveTo( hDC, nLeft - 2, nTop - 2 )
LineTo( hDC, nLeft - 2, nBottom )
LineTo( hDC, nRight , nBottom )
SelectObject( hDC, hOld )
DeleteObject( hPen ) case nLineStyle == LINES_GRAY
hPen = CreatePen( PS_SOLID, 1, CLR_GRAY )
hOld = SelectObject( hDC, hPen )
MoveTo( hDC, nLeft - 2, nTop - 1 )
LineTo( hDC, nLeft - 2, nBottom )
LineTo( hDC, nRight , nBottom )
MoveTo( hDC, nLeft - 2, nTop - 1 )
LineTo( hDC, nRight , nTop - 1 )
SelectObject( hDC, hOld )
DeleteObject( hPen )
hPen = CreatePen( PS_SOLID, 1, CLR_WHITE )
hOld = SelectObject( hDC, hPen )
MoveTo( hDC, nLeft - 1, nTop )
LineTo( hDC, nLeft - 1, nBottom )
SelectObject( hDC, hOld )
DeleteObject( hPen )**************************************************************************
static function wBrwSimple( hWnd, hDC, nRowPos, aValues, aColSizes,;
nColPos, nClrText, nClrPane,;
hFont, lTree, aJustify, nPressed, nLineStyle,;
nColAct, lFocused, oVScroll, bLogicLen )
**************************************************************************
local nTxtHeight, hOldFont
local nColStart := -1
local nWidth := WndWidth( hWnd ) - If( oVScroll != nil .and. ;
Eval( bLogicLen ) > 1,;
GetSysMetrics( SM_CYHSCROLL ) + 3, 0 )
local nRow := nRowPos, nTop, nBottom, nLeft, nRight, n
local lReleaseDC := .f.
local nForeColor, nBackColor
local hPen, hOld, hBrush
DEFAULT lTree := .f.
if Empty( hDC )
hDC = GetDC( hWnd )
lReleaseDC = .t.
endif
hOldFont = SelectObject( hDC, hFont )
nTxtHeight = GetTextHeight( hWnd, hDC ) + 1
nTop = nTxtHeight * nRow
nBottom = nTop + nTxtHeight - 1
for n := nColPos to Len( aValues )
nLeft = nColStart + 1
nRight = Min( nColStart := ( nLeft + aColSizes[ n ] - 1 ), nWidth )
if nLeft > nWidth
exit
endif
if n == Len( aValues )
nRight = nWidth
endif
if lFocused
hPen = CreatePen( PS_SOLID, 1, CLR_BLACK )
hOld = SelectObject( hDC, hPen )
MoveTo( hDC, nLeft-1 , nBottom-1 )
LineTo( hDC, nRight, nBottom-1 )
MoveTo( hDC, nRight-1, nTop )
LineTo( hDC, nLeft-2 , nTop )
SelectObject( hDC, hOld )
DeleteObject( hPen )
else
hPen = CreatePen( PS_DOT, 1, CLR_BLACK )
hOld = SelectObject( hDC, hPen )
MoveTo( hDC, nLeft-1 , nBottom )
LineTo( hDC, nRight, nBottom )
MoveTo( hDC, nRight-1, nTop-1 )
LineTo( hDC, nLeft-2 , nTop-1 )
SelectObject( hDC, hOld )
DeleteObject( hPen )
endif
if nColPos > nWidth
exit
endif
next
return NIL // wBrwSimple
Great, Roman!
EMG
Good work Roman.
One question. Why a static function rather than a method?
James


Roman,
Excellent ![]()