
Code: Alles auswählen
EnableExplicit
Procedure ListIconGadget_ResizeColumns(Gadget, Columns, *ColumnArray)
If IsGadget(Gadget) And GadgetType(Gadget) = #PB_GadgetType_ListIcon
Protected R.RECT
Protected iNext.i
Protected iCurrWidth.i, iFullWidth.i
Protected iGadgetWidth.i
If GetClientRect_(GadgetID(Gadget), @R)
iGadgetWidth = R\right - R\left
For iNext = 0 To Columns - 1
iCurrWidth = PeekI(*ColumnArray + iNext * SizeOf(Integer))
If iCurrWidth > -1 And iCurrWidth < 101
iCurrWidth = iGadgetWidth * iCurrWidth / 100
EndIf
If iCurrWidth > 0
SetGadgetItemAttribute(Gadget, -1, #PB_ListIcon_ColumnWidth, iCurrWidth, iNext)
EndIf
iFullWidth = iFullWidth + iCurrWidth
Next
SetGadgetItemAttribute(Gadget, -1, #PB_ListIcon_ColumnWidth, iGadgetWidth - iFullWidth, Columns)
ProcedureReturn 1
EndIf
EndIf
EndProcedure
; Größen der Spalten definieren (Prozent oder >100 in Pixel)
; Letzte Spalte muss nicht angegeben werden, sie bekommt immer den Rest!
Dim CLMNP(2)
CLMNP(0) = 10
CLMNP(1) = 20
CLMNP(2) = 30
If OpenWindow(0, 0, 0, 640, 480, "Beispiel - ResizeColumns", #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget)
ListIconGadget(0, 2, 2, 0, 0, "Spalte 1", 100, #LVS_NOSORTHEADER)
AddGadgetColumn(0, 1, "Spalte 2", 100)
AddGadgetColumn(0, 2, "Spalte 3", 100)
AddGadgetColumn(0, 3, "Spalte 4", 100)
WindowBounds(0, WindowWidth(0), WindowHeight(0), #PB_Ignore, #PB_Ignore)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
Case #PB_Event_SizeWindow
ResizeGadget(0, #PB_Ignore, #PB_Ignore, WindowWidth(0) - 4, WindowHeight(0) - 4)
ListIconGadget_ResizeColumns(0, 3, @CLMNP())
EndSelect
ForEver
EndIf