Have fun
Tested with PB 5.60 x86 - Windows 10 x64
Code: Select all
Global oldliproc,oldhproc, header_h,header
Procedure SetHeaderImage(Gadget, Image, Column)
HwndHeader = SendMessage_(GadgetID(Gadget), #LVM_GETHEADER, 0, 0)
TextColumn.s = Space(255)
Var.LVCOLUMN\mask = #LVCF_TEXT
Var\pszText = @TextColumn
Var\cchTextMax = 255
SendMessage_(GadgetID(Gadget), #LVM_GETCOLUMN, Column, @Var)
VarHeader.HDITEM\mask = #HDI_BITMAP | #HDI_FORMAT; | #HDI_TEXT
VarHeader\fmt = #HDF_BITMAP
VarHeader\hbm = ImageID(Image)
VarHeader\pszText = @TextColumn
VarHeader\cchTextMax = Len(TextColumn)
SendMessage_(HwndHeader, #HDM_SETITEM, Column, @VarHeader)
EndProcedure
Procedure lihCB(hWnd, uMsg, wParam, lParam)
Select uMsg
Case #HDM_LAYOUT
result = CallWindowProc_(oldhproc, hWnd, uMsg, wParam, lParam)
*hdlayout.HD_LAYOUT = lParam
If *hdlayout\prc <> 0
*rect.RECT = *hdlayout\prc
*rect\top = header_h
EndIf
If *hdlayout\pwpos <> 0
*windowpos.WINDOWPOS = *hdlayout\pwpos
*windowpos\cy = header_h
EndIf
Default
result = CallWindowProc_(oldhproc, hWnd, uMsg, wParam, lParam)
EndSelect
ProcedureReturn result
EndProcedure
header_h = 60
row_h = 60
LoadImage(100, #PB_Compiler_Home + "examples/Sources/Data/PureBasicLogo.bmp")
OpenWindow(0, 0, 0, 600, 400, "ListIcon Header", #PB_Window_SystemMenu |#PB_Window_ScreenCentered)
hWnd = ListIconGadget(0, 10, 10, 580, 380, "", 300,#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
AddGadgetColumn(0,1,"",200)
AddGadgetColumn(0,2,"",200)
AddGadgetColumn(0,3,"",200)
SetGadgetColor(0,#PB_Gadget_BackColor,$E2FEFE)
imageList = ImageList_Create_(1,row_h, #ILC_COLOR32, 0, 30)
SendMessage_(hWnd, #LVM_SETIMAGELIST, #LVSIL_SMALL, imageList)
header = SendMessage_(hWnd, #LVM_GETHEADER, 0, 0)
oldhproc = SetWindowLongPtr_(header, #GWL_WNDPROC, @lihCB())
LoadFont(0,"Georgia",16,#PB_Font_Bold)
LoadFont(1,"Tahoma",12)
SendMessage_(header,#HDM_SETBITMAPMARGIN,0,0)
CreateImage(0,600,60,24,$FFFFFF)
StartDrawing(ImageOutput(0))
DrawImage(ImageID(100),0,0,300,60)
DrawImage(ImageID(100),300,0,300,60)
DrawingFont(FontID(font))
DrawingMode(#PB_2DDrawing_Transparent)
DrawText(5,5,"RASHAD",$0000FF,$FFFFFF)
StopDrawing()
CreateImage(1,600,60,24,$FFFFFF)
StartDrawing(ImageOutput(1))
Box(0,0,600,60,$FDF5E3)
DrawingFont(FontID(font))
DrawingMode(#PB_2DDrawing_Transparent)
DrawText(10,15,"RASHAD",$000000,$FFFFFF)
StopDrawing()
CreateImage(2,600,60,24,$FFFFFF)
StartDrawing(ImageOutput(2))
Box(0,0,600,60,$FDF5E3)
DrawingFont(FontID(font))
DrawingMode(#PB_2DDrawing_Transparent)
DrawText(10,15,"RASHAD",$FF0000,$FFFFFF)
StopDrawing()
SetHeaderImage(0, 0, 0)
SetHeaderImage(0, 1, 1)
SetHeaderImage(0, 2, 2)
For l = 1 To 10
AddGadgetItem(0, -1, "Item " + Str(l) + Chr(10)+"Item " + Str(l)+ Chr(10)+"Item " + Str(l))
Next
SetGadgetFont(0,FontID(1))
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow