Code: Select all
Procedure AUTOSIZE_USEHEADER(gad,font)
Header = SendMessage_(GadgetID(gad), #LVM_GETHEADER, 0, 0)
nColumns = SendMessage_(Header, #HDM_GETITEMCOUNT, 0, 0)
For col = 0 To ncolumns - 1
text$ = GetGadgetItemText(gad, -1,col)
StartDrawing(WindowOutput(0))
DrawingFont(FontID(font))
width = TextWidth(Text$)+12
StopDrawing()
SetGadgetItemAttribute(gad, -1, #PB_ListIcon_ColumnWidth, width,col)
Next
EndProcedure
Procedure AUTOSIZE_USECOLUMN(gad,font)
Header = SendMessage_(GadgetID(gad), #LVM_GETHEADER, 0, 0)
nColumns = SendMessage_(Header, #HDM_GETITEMCOUNT, 0, 0)
For col = 0 To ncolumns - 1
width = 0:oldwidth = 0
newwidth=0
For item = 0 To CountGadgetItems(gad)
text$ = GetGadgetItemText(gad,item , col)
StartDrawing(WindowOutput(0))
DrawingFont(FontID(font))
width = TextWidth(Text$)+12; *** would change that to 8 ***
StopDrawing()
If width > newwidth; ***
newwidth=width ; ***
EndIf ; ***
Next
SetGadgetItemAttribute(gad, -1, #PB_ListIcon_ColumnWidth, newwidth,col); ***
Next
EndProcedure
Procedure Full_AUTOSIZE(gad,font,fontname$,fontsize)
LoadFont(font,fontname$,fontsize)
SetGadgetFont(gad,FontID(font))
Header = SendMessage_(GadgetID(gad), #LVM_GETHEADER, 0, 0)
nColumns = SendMessage_(Header, #HDM_GETITEMCOUNT, 0, 0)
For col = 0 To ncolumns - 1
SendMessage_(GadgetID(gad), #LVM_SETCOLUMNWIDTH, col,#LVSCW_AUTOSIZE_USEHEADER & #LVSCW_AUTOSIZE)
Next
EndProcedure
LoadFont(0,"Segoe UI SemiLight",12)
If OpenWindow(0, 0, 0, 570, 305, "Header Auto Resize", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(0,10,10,550,250, "Column 0", 150,#PB_ListIcon_GridLines)
AddGadgetColumn(0, 1, "Column 1" , 150)
AddGadgetColumn(0, 2, "Column 2" , 150)
For x = 0 To 100
AddGadgetItem(0, x, "Item Item item item item item "+Str(x)+Chr(10)+"Item "+Str(x)+Chr(10)+"Item Item item item item item "+Str(x))
Next
SetGadgetFont(0,FontID(0))
ButtonGadget(1,10,270,150,28,"Header length")
ButtonGadget(2,210,270,150,28,"Column content (slow)")
ButtonGadget(3,410,270,150,28,"Complete width")
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit = 1
Case #PB_Event_Gadget
Select EventGadget()
Case 1
AUTOSIZE_USEHEADER(0,0)
Case 2
AUTOSIZE_USECOLUMN(0,0)
Case 3
Full_AUTOSIZE(0,1,"Georgia",14)
EndSelect
EndSelect
Until Quit = 1