Hallo!
Ich habe ein Problem mit dem Listicon Gadget bei aktiven #PB_ListIcon_HeaderDragDrop.
So wie ich es verstanden habe, ändert Windows zwar die visuelle Reihenfolge der Spalten wenn der User Spalten per Drag&Drop verschoben hat, nicht aber deren Index.
Wie komme ich nun an die richtige Spaltenreihenfolge?
Habe mir schon die Userlibaries PureLVSort un MorelisticonGadget angeschaut.
Deren Befehle gehen aber immer auf den Index.
Oder habe ich da etwas übersehen?
Bin für Hilfe dankbar.
Greetings
Ralf
Listicon Gadget, Spalte bestimmen
Aber ja.
Bitte per Drag&Drop Spalte 3 ganz nach vorn ziehen.
Wie komme ich jetzt an den Spaltenkopf der ersten Spalte?
Gruß
Ralf
Code: Alles auswählen
#MyWindow = 0
#MyGadget = 1
#MyButton = 2
If OpenWindow(#MyWindow,100,100,500,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"ListIcon Beispiel")
If CreateGadgetList(WindowID())
ListIconGadget(#MyGadget,5,5,500,200,"Spalte0",100,#PB_ListIcon_HeaderDragDrop|#PB_ListIcon_GridLines)
For x = 1 To 3
AddGadgetColumn(#MyGadget,x,"Spalte" + Str(x),100)
Next
ButtonGadget(#MyButton, 5, 230, 70, 20, "Zeige")
AddGadgetItem(#MyGadget, -1, "Wert 0" + Chr(10) + "Wert 1" + Chr(10) + "Wert 2" + Chr(10) + "Wert 3")
Repeat
EventID = WaitWindowEvent()
GID = EventGadgetID()
If EventID = #PB_Event_Gadget
If GID = #MyButton
Debug = GetColumnHeaderText(#MyGadget, 0) ; Funktion aus MoreListIcon Gadget Userlibary
Debug GetGadgetItemText(#MyGadget, 0, 0)
;Debug = GetGadgetText(#MyGadget)
EndIf
EndIf
Until EventID = #PB_Event_CloseWindow And EventWindowID() = #MyWindow
EndIf
EndIf
Wie komme ich jetzt an den Spaltenkopf der ersten Spalte?
Gruß
Ralf
Vileicht hilft dir das weiter!
http://msdn.microsoft.com/library/defau ... eflist.asp
http://msdn.microsoft.com/library/defau ... eflist.asp
Purebasic 5.0 32bit und 64 bit
I'm back from hell
I'm back from hell
Danke!
Damit hab ich die Lösung gefunden.
lvspalte ist die sichtbare Spaltenr. (beginnend mit 0).
Zurück gegeben wird der Spaltenindex des Listicons.
Gruß
Ralf
Damit hab ich die Lösung gefunden.
Code: Alles auswählen
Procedure.l GET_REAL_SPALTEN_INDEX(lhandle, lvspalte.l)
Protected speicherbuffer.l, spindex.l
anzcol = COUNT_COLUMNS(lhandle)
If lvspalte > (anzcol - 1)
ProcedureReturn -1
EndIf
speicherbuffer = AllocateMemory(anzcol * 4)
spindex = - 1
If SendMessage_(GadgetID(lhandle), #LVM_GETCOLUMNORDERARRAY, anzcol, speicherbuffer) <> #False
spindex = PeekL(speicherbuffer + lvspalte * 4)
EndIf
FreeMemory(speicherbuffer)
ProcedureReturn spindex
EndProcedure
lvspalte ist die sichtbare Spaltenr. (beginnend mit 0).
Zurück gegeben wird der Spaltenindex des Listicons.
Gruß
Ralf