Hallo,
seit Langen habe ich mal wieder ne Frage naja eigentlich 2
Nach dem ich den Tag damit verbracht habe zu begreiffen warum es so schwer ist die veränderungen im "ListIcon HeaderDragDrop" bzw die veränder der Spaltenbreite durch den User zu erfasen. Hoffe ich hier auf hilfe das zu Lösen.
Möchte nur anmerken ich habe die Such Funktion benutzt aber keine in meinen Augen wirklich gute Lösung gefunden da alle irgend wie API-Funktionen nutzen was ich Lieber vermeinden würde.
Der sinn meiner frage ist ich möchte das ListIcon nach einne Neustart mit den vom User veränderten Standart einstellungen nutzen.
Ich Danke für evetulle Hilfe schon mal vorab.
AFG Aspi
Änderung im ListIcon HeaderDragDrop erfassen
Änderung im ListIcon HeaderDragDrop erfassen
Ich würde mich ja gerne geistig mit dir duellieren, aber wie ich sehe bist du unbewaffnet.
================================
WinXP Pro, W2k3, Eisfair
-----------------------------
PB 4.40 auf WinXPpro kauf
================================
WinXP Pro, W2k3, Eisfair
-----------------------------
PB 4.40 auf WinXPpro kauf
- KeyKon
- Beiträge: 1412
- Registriert: 10.09.2004 20:51
- Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit) - Wohnort: Ansbach
- Kontaktdaten:
Ich wage es mal zu behaupten das das ohne API unmöglich is...
Mit API gehts auf jeden Fall so:
Kleines Beispiel:
Dadurch das die Prozeduren das nich direkt auf die Platte schreiben kann man den Speicherbereich wunderbar mit in irgendeine komplette Konfigurationsdatei schreiben...
Übrigens, is der GrafikBug in Verbindung mit GridLines (Wenn man die Erste Spalte nach weiter hinten versetzt fehlt da eine Trennlinie) PB- oder Windowsverschuldet?
PS: Mit welcher Funktion/API kann man eigentlich die GadgetColumns zählen?
Mit API gehts auf jeden Fall so:
Code: Alles auswählen
Procedure HeaderCount(Gadget)
hd = SendMessage_(GadgetID(Gadget), #LVM_GETHEADER, 0, 0)
ProcedureReturn SendMessage_( hd, #HDM_GETITEMCOUNT, 0, 0)
EndProcedure
Procedure HeaderToMem(Gadget)
Columns = HeaderCount(Gadget)
*Buffer = AllocateMemory(Columns*4*2)
If SendMessage_(GadgetID(Gadget), #LVM_GETCOLUMNORDERARRAY, Columns, *Buffer)
For c = 0 To Columns-1
PokeL(*Buffer+Columns*4+c*4,GetGadgetItemAttribute(Gadget,1,#PB_ListIcon_ColumnWidth,c))
Next
ProcedureReturn *Buffer
Else
FreeMemory(*Buffer)
ProcedureReturn 0
EndIf
EndProcedure
Procedure MemToHeader(Gadget,*Buffer)
Columns = HeaderCount(Gadget)
For c = 0 To Columns-1
SetGadgetItemAttribute(Gadget,1,#PB_ListIcon_ColumnWidth,PeekL(*Buffer+Columns*4+c*4),c)
Next
SendMessage_(GadgetID(Gadget), #LVM_SETCOLUMNORDERARRAY, Columns, *Buffer)
DisableGadget(Gadget,1):DisableGadget(Gadget,0)
EndProcedure
Code: Alles auswählen
If OpenWindow(0, 0, 0, 640, 300, "ListIconGadgets", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(0, 10, 10, 620,280, "Column 1", 100, #PB_ListIcon_HeaderDragDrop|#PB_ListIcon_GridLines)
For b = 2 To 4 ; fügt 3 weitere Spalten zu jedem ListIcon hinzu
AddGadgetColumn(0, b, "Column " + Str(b), 65)
Next
For b = 1 To 4 ; fügt 4 Einträge auf jeder Zeile der ListIcons hinzu
AddGadgetItem(0, -1, "Item "+Str(b)+".1"+Chr(10)+"Item "+Str(b)+".2"+Chr(10)+"Item "+Str(b)+".3"+Chr(10)+"Item "+Str(b)+".4")
Next
If ReadFile(0,"columns.config")
*Load = AllocateMemory(FileSize("columns.config"))
ReadData(0,*Load,FileSize("columns.config"))
CloseFile(0)
MemToHeader(0,*Load)
FreeMemory(*Load)
EndIf
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
*Save = HeaderToMem(0)
If *Save And CreateFile(0,"columns.config")
WriteData(0,*Save,MemorySize(*Save))
CloseFile(0)
FreeMemory(*Save)
EndIf
EndIf
Übrigens, is der GrafikBug in Verbindung mit GridLines (Wenn man die Erste Spalte nach weiter hinten versetzt fehlt da eine Trennlinie) PB- oder Windowsverschuldet?
PS: Mit welcher Funktion/API kann man eigentlich die GadgetColumns zählen?
Zuletzt geändert von KeyKon am 01.02.2009 14:37, insgesamt 1-mal geändert.
(\/) (°,,,°) (\/)
- hjbremer
- Beiträge: 822
- Registriert: 27.02.2006 22:30
- Computerausstattung: von gestern
- Wohnort: Neumünster
KeyKon hat geschrieben:Mit welcher Funktion/API kann man eigentlich die GadgetColumns zählen?
Code: Alles auswählen
Procedure Headercount(Gadget)
hd = SendMessage_(GadgetID(Gadget), #LVM_GETHEADER, 0, 0)
ProcedureReturn SendMessage_( hd, #HDM_GETITEMCOUNT, 0, 0)
EndProcedure
Purebasic 5.70 x86 5.72 X 64 - Windows 10
Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Hallo und Guten Morgen,
Das es nicht ohne Api geht finde ich jetzt zwar Blöd aber kann mann dann woll Leider nicht ändern.
@KeyKon
dir Danke ich für deine Beispiele sehen schon mal erheblich compackter aus als das was ich gefunden hatte und es kommt mir sehr endgegegen das ich sie belieb weiter verarbeiten (sollen in einer SQL gespeichert werden.
Danke für deine mühe.
@hjbremer
Ich kann deine Antwort zwar nicht wirklich gebrauchen ( noch nicht) aber auch dir danke ich für deinen Zeitlichen einsatz.
so dann werde ich jetzt mal versuchen weiter zu kommen
MFG Aspi
Das es nicht ohne Api geht finde ich jetzt zwar Blöd aber kann mann dann woll Leider nicht ändern.
@KeyKon
dir Danke ich für deine Beispiele sehen schon mal erheblich compackter aus als das was ich gefunden hatte und es kommt mir sehr endgegegen das ich sie belieb weiter verarbeiten (sollen in einer SQL gespeichert werden.
Danke für deine mühe.
@hjbremer
Ich kann deine Antwort zwar nicht wirklich gebrauchen ( noch nicht) aber auch dir danke ich für deinen Zeitlichen einsatz.
so dann werde ich jetzt mal versuchen weiter zu kommen
MFG Aspi
Ich würde mich ja gerne geistig mit dir duellieren, aber wie ich sehe bist du unbewaffnet.
================================
WinXP Pro, W2k3, Eisfair
-----------------------------
PB 4.40 auf WinXPpro kauf
================================
WinXP Pro, W2k3, Eisfair
-----------------------------
PB 4.40 auf WinXPpro kauf