Ich hab mir den Code Wereiterte Items aus der Lib kopiert, bei mir eingefügt und die IDs angepasst. Weil ich der API nicht wirkilich mächtig bin, muss ich wohl mehr anpassen als nur die IDs. Es tritt ein Zeiger auf ein Null-Objekt bei folgendem Code an der markierten Stelle auf.
Code: Alles auswählen
Structure LBITEMEX
Icon.i
Title.i
Text.i
EndStructure
Procedure WindowCallback(hWnd,uMsg,wParam,lParam)
Select uMsg
Case #WM_DRAWITEM
Protected *lpdis.DRAWITEMSTRUCT = lParam
Protected *lbex.LBITEMEX = GetGadgetItemData(Dates,*lpdis\itemID)
Protected hbrFace, hdcMem, lplf.LOGFONT, hfntPrevious, hfntTitle
If *lpdis\itemState & #ODS_SELECTED
hbrFace = CreateSolidBrush_(GetSysColor_(#COLOR_HIGHLIGHT))
FillRect_(*lpdis\hdc,*lpdis\rcItem,hbrFace)
DrawFocusRect_(*lpdis\hdc,*lpdis\rcItem)
SetTextColor_(*lpdis\hdc,GetSysColor_(#COLOR_HIGHLIGHTTEXT))
Else
hbrFace = CreateSolidBrush_(GetSysColor_(#COLOR_WINDOW))
FillRect_(*lpdis\hdc,*lpdis\rcItem,hbrFace)
SetTextColor_(*lpdis\hdc,GetSysColor_(#COLOR_WINDOWTEXT))
EndIf
DeleteObject_(hbrFace)
DrawIcon_(*lpdis\hdc,2,*lpdis\rcItem\top + 2,*lbex\Icon) ;######################
GetObject_(SendMessage_(*lpdis\hWndItem,#WM_GETFONT,0,0),SizeOf(LOGFONT),lplf)
lplf\lfHeight = -MulDiv_(12,GetDeviceCaps_(*lpdis\hdc,#LOGPIXELSY),72)
hfntTitle = CreateFontIndirect_(lplf)
SetBkMode_(*lpdis\hdc,#TRANSPARENT)
hfntPrevious = SelectObject_(*lpdis\hdc,hfntTitle)
TextOut_(*lpdis\hdc,40,*lpdis\rcItem\top + 2,*lbex\title,lstrlen_(*lbex\title))
SelectObject_(*lpdis\hdc,hfntPrevious)
TextOut_(*lpdis\hdc,40,*lpdis\rcItem\top + 20,*lbex\text,lstrlen_(*lbex\text))
DeleteObject_(hfntTitle)
ProcedureReturn #True
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
Procedure AddLBItemEx(Gadget,Position,Icon,Title$,Text$)
Protected *lbex.LBITEMEX = AllocateMemory(SizeOf(LBITEMEX)), Index
*lbex\Icon = Icon
CompilerIf #PB_Compiler_Unicode
*lbex\Title = AllocateMemory(Len(Title$) * 2 + 2)
*lbex\Text = AllocateMemory(Len(Text$) * 2 + 2)
CompilerElse
*lbex\Title = AllocateMemory(Len(Title$) + 1)
*lbex\Text = AllocateMemory(Len(Text$) + 1)
CompilerEndIf
PokeS(*lbex\Title,Title$)
PokeS(*lbex\Text,Text$)
Index = SendMessage_(GadgetID(Gadget),#LB_ADDSTRING,0,"")
SetGadgetItemData(Gadget,Index,*lbex)
EndProcedure
; [...]
OpenWindow(#DateWindow,0,0,350,150,"Datum einfügen",#PB_Window_WindowCentered|#PB_Window_SystemMenu,WindowID(Window_0))
Dates = ListViewGadget(#PB_Any,5,25,230,120,#LBS_OWNERDRAWFIXED)
SendMessage_(GadgetID(Dates),#LB_SETITEMHEIGHT,0,36)
SetWindowCallback(@WindowCallback())
AddLBItemEx(Dates,-1,ImageID(CatchImage(#PB_Any,?IconDateICO)),FormatDate("%dd.%mm.%yyy",Date()),"DD.MM.JJJJ")