ListEx() does exactly this.Marty2PB wrote:... an CanvasGadget() to the look of the ListIconGadget()... Puhh.. This is many work.... I try
Maybe you can reach your goal with ListEx() and his parameters.
ListEx() does exactly this.Marty2PB wrote:... an CanvasGadget() to the look of the ListIconGadget()... Puhh.. This is many work.... I try
Code: Select all
Procedure OnDrawItem(hWnd, lParam)
Protected Text$ = Space(#MAX_PATH)
*lpdis.DRAWITEMSTRUCT = lparam
If (*lpdis\itemID > -1 )
Select *lpdis\itemAction
Case #ODA_DRAWENTIRE
;
; Text Color
SetTextColor_(*lpdis\hDC,$FCF7F5)
If( *lpdis\itemState & #ODS_SELECTED )
;
; Highlighted
SetBkColor_( *lpdis\hDC, GetSysColor_( #COLOR_HIGHLIGHT ) );
hBackBrush = CreateSolidBrush_( GetSysColor_( #COLOR_HIGHLIGHT ) );
Else
;
; Not Highlighted
SetBkColor_( *lpdis\hDC, $B15629 );
hBackBrush = CreateSolidBrush_( $B15629 );
EndIf
Dim itemrect.RECT(3)
For i = 0 To 2 ; Columns
RtlZeroMemory_(@itemrect(i),SizeOf(RECT))
itemrect(i)\top = i
SendMessage_(*lpdis\hwndItem, #LVM_GETSUBITEMRECT, *lpdis\itemid, @itemrect(i))
text$ = GetGadgetItemText(GetDlgCtrlID_(*lpdis\hwndItem), *lpdis\itemid, i)
SelectObject_(*lpdis\hDC, GetStockObject_(#NULL_PEN))
SelectObject_(*lpdis\hDC, hBackBrush)
Rectangle_ (*lpdis\hDC, itemrect(i)\left, itemrect(i)\top, itemrect(i)\right, itemrect(i)\bottom-1) ; Size of Highlighted Bar
TextOut_(*lpdis\hDC, itemrect(i)\left, itemrect(i)\top, text$, Len(text$))
DeleteObject_(hBackBrush)
Next
Case #ODA_SELECT
Case #ODA_FOCUS
EndSelect
EndIf
EndProcedure
Procedure WinCallback(hWnd, uMsg, wParam, lParam)
Select uMsg
Case #WM_DRAWITEM
OnDrawItem(hWnd, lParam)
Case #WM_MEASUREITEM
*lpmis.MEASUREITEMSTRUCT = lparam
*lpmis\itemheight = 12 ; <<-- Set ListIconGadget Row Size
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
If OpenWindow(0, 0, 0, 340, 600, Preview$, #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
SetWindowCallback(@WinCallback()) ; Callback aktivieren
ListIconGadget(1,4,4,332,400, "",50, #LVS_OWNERDRAWFIXED)
SendMessage_(GadgetID(1),#WM_SETFONT,CBMFontCharset1(),1)
SendMessage_(GadgetID(1),#LVM_SETEXTENDEDLISTVIEWSTYLE,0,#LVS_EX_LABELTIP| #LVS_EX_FULLROWSELECT)
........