Dafür gibt es
#LVM_GETCOLUMNORDERARRAY und
#LVM_SETCOLUMNORDERARRAY.
Diese beiden Windows Messages kannst du mit SendMessage_() sowohl die Reihenfolge der Spalten ermitteln als auch setzen.
Beispielcode:
Code: Alles auswählen
EnableExplicit
Define a
Define LV_ColumnTotal
If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(1, 0, 0, WindowWidth(0), WindowHeight(0)-40, "Spalte 1", 100, #PB_ListIcon_HeaderDragDrop)
AddGadgetColumn(1, 1, "Spalte 2", 100)
AddGadgetColumn(1, 2, "Spalte 3", 100)
AddGadgetColumn(1, 3, "Spalte 4", 100)
ButtonGadget(2, WindowWidth(0)-210, WindowHeight(0)-30, 200, 20, "Spaltenreihenfolge ermitteln", 0)
LV_ColumnTotal = SendMessage_(SendMessage_(GadgetID(1), #LVM_GETHEADER, 0, 0), #HDM_GETITEMCOUNT, 0, 0)
Dim LV_Columns(LV_ColumnTotal-1)
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case 2
SendMessage_(GadgetID(1), #LVM_GETCOLUMNORDERARRAY, LV_ColumnTotal, LV_Columns())
For a = 1 To LV_ColumnTotal
Debug GetGadgetItemText(1, -1, LV_Columns(a-1))
Next
Debug "--------------------------------------------------"
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
EndIf
Wenn du die Reihenfolge gespeichert hast, kannst du diese auch jederzeit wiederherstellen:
Code: Alles auswählen
EnableExplicit
Define LV_ColumnTotal
If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(1, 0, 0, WindowWidth(0), WindowHeight(0)-40, "Spalte 1", 100, #PB_ListIcon_HeaderDragDrop)
AddGadgetColumn(1, 1, "Spalte 2", 100)
AddGadgetColumn(1, 2, "Spalte 3", 100)
AddGadgetColumn(1, 3, "Spalte 4", 100)
ButtonGadget(2, WindowWidth(0)-210, WindowHeight(0)-30, 200, 20, "Spaltenreihenfolge wiederherstellen", 0)
LV_ColumnTotal = SendMessage_(SendMessage_(GadgetID(1), #LVM_GETHEADER, 0, 0), #HDM_GETITEMCOUNT, 0, 0)
Dim LV_Columns(LV_ColumnTotal-1)
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case 2
LV_Columns(0) = 3
LV_Columns(1) = 2
LV_Columns(2) = 1
LV_Columns(3) = 0
SendMessage_(GadgetID(1), #LVM_SETCOLUMNORDERARRAY, LV_ColumnTotal, LV_Columns())
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
EndIf