Re: *Gelöst* Listicongadget quälend langsam
Verfasst: 03.07.2023 14:13
@Led Zep:
Mit BindGadgetEvent hast du sogar ein "Live-Resize":
Mit BindGadgetEvent hast du sogar ein "Live-Resize":
Code: Alles auswählen
Enumeration
#parent
#font1
#lig
#menu
#csb
EndEnumeration
Procedure updateLig()
SendMessage_(GadgetID(#lig),#WM_SETREDRAW,0,0)
ResizeGadget(#lig, 0, 0, WindowWidth(#parent), WindowHeight(#parent)-StatusBarHeight(#csb)-MenuHeight())
korrekturwert = 2
If GetWindowLongPtr_(GadgetID(#lig), #GWL_STYLE) & #WS_VSCROLL ;wenn scrollbalken vorhanden
korrekturwert = 4 + GetSystemMetrics_(#SM_CXVSCROLL) ;dann Bereich für die Spalten reduzieren
EndIf
MaxColWidth = GadgetWidth(#lig) - korrekturwert
cols = GetGadgetAttribute(#lig, #PB_ListIcon_ColumnCount)
x = MaxColWidth/cols : rest = MaxColWidth
For i = 0 To cols-2 ;Platz für erste bis vorletzte Spalte verteilen
SetGadgetItemAttribute(#lig, #PB_Ignore, #PB_ListIcon_ColumnWidth, x, i)
rest - x
Next
SetGadgetItemAttribute(#lig, #PB_Ignore, #PB_ListIcon_ColumnWidth, rest ,cols-1) ; Rest für die letzte Spalte
SendMessage_(GadgetID(#lig),#WM_SETREDRAW,1,0)
EndProcedure
; initialisieren
winflags = #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered
ligflags = #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection
;- openwindow
OpenWindow(#parent,0,0,1200,700,"Tabelle",winflags)
LoadFont(#font1, "Arial", 11) : SetGadgetFont(#PB_Default, FontID(#font1))
;- Menu
If CreateMenu(#menu, WindowID(#parent))
MenuTitle("Tabelle")
MenuItem(101, "Tabelle")
EndIf
;- Statusbar
CreateStatusBar(#csb, WindowID(#parent))
AddStatusBarField(100)
AddStatusBarField(#PB_Ignore)
AddStatusBarField(#PB_Ignore)
StatusBarText(#csb, 0, "")
StatusBarText(#csb, 1, "")
;- LIG
ListIconGadget(#lig, 0, 0, WindowWidth(#parent), WindowHeight(#parent), "A", 10, ligflags)
AddGadgetColumn(#lig, 1, "B", 10)
AddGadgetColumn(#lig, 2, "C", 10)
AddGadgetColumn(#lig, 3, "D", 10)
AddGadgetColumn(#lig, 4, "E", 10)
AddGadgetColumn(#lig, 5, "F", 10)
AddGadgetColumn(#lig, 6, "G", 10)
AddGadgetColumn(#lig, 7, "H", 10)
AddGadgetColumn(#lig, 8, "I", 10)
AddGadgetColumn(#lig, 9, "J", 10)
AddGadgetColumn(#lig, 10, "K", 10)
AddGadgetColumn(#lig, 11, "L", 10)
AddGadgetColumn(#lig, 12, "M", 10)
AddGadgetColumn(#lig, 13, "N", 10)
AddGadgetColumn(#lig, 14, "O", 10)
AddGadgetColumn(#lig, 15, "P", 10)
AddGadgetColumn(#lig, 16, "Q", 10)
x$ = ""
For i = 0 To 15
x$ + "Blutwurst" + Chr(10)
Next
x$ + "Blutwurst"
For i = 0 To 105
AddGadgetItem(#lig, -1, x$)
Next
updateLig()
;- ********** Event ************
BindEvent(#PB_Event_SizeWindow,@updateLig(),#Parent)
Repeat
event = WaitWindowEvent()
Gadget = EventGadget()
Select event
Case #PB_Event_CloseWindow
Select EventWindow()
Case #parent
End
EndSelect
; Case #PB_Event_SizeWindow
; ResizeGadget(#lig,0,0,WindowWidth(#parent),WindowHeight(#parent))
; updateLig()
Case #PB_Event_Menu
Select EventMenu()
Case 101
EndSelect
EndSelect
Select Gadget
Case #lig
Select EventType()
Case #PB_EventType_Change
Case #PB_EventType_DragStart
Case #PB_EventType_LeftClick
Case #PB_EventType_LeftDoubleClick
SetGadgetState(Gadget, -1)
Case #PB_EventType_RightClick
SetGadgetState(Gadget, -1)
Case #PB_EventType_RightDoubleClick
SetGadgetState(Gadget, -1)
EndSelect
EndSelect
ForEver
End