Seite 1 von 1

ListIconGadget_ResizeColumns()

Verfasst: 11.10.2009 18:19
von Kai
War nur eine Idee. :mrgreen:

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

Re: ListIconGadget_ResizeColumns()

Verfasst: 14.10.2009 13:48
von Andesdaf
:allright: