Seite 1 von 2
Listicon, zur Spalte Scrollen
Verfasst: 09.08.2006 00:26
von hawk009
Hallo!
Ich möchte im Listicon, per Programm, zu einer (nicht sichtbaren) Spalte scrollen.
Code: Alles auswählen
OpenWindow(0, 100, 300, 400, 200, "Listicon Scroll Test", #PB_Window_SystemMenu)
If CreateGadgetList(WindowID(0))
ListIconGadget(1, 1, 1, 300, 160, "Spalte0", 100, #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect | #PB_ListIcon_HeaderDragDrop)
AddGadgetColumn(1, 1, "Spalte1", 100)
AddGadgetColumn(1, 2, "Spalte2", 100)
AddGadgetColumn(1, 3, "Spalte3", 100)
AddGadgetItem(1, -1, "0:0" + Chr(10) + "0:1" + Chr(10) + "0:2" + Chr(10) + "0:3")
AddGadgetItem(1, -1, "1:0" + Chr(10) + "1:1" + Chr(10) + "1:2" + Chr(10) + "0:3")
AddGadgetItem(1, -1, "2:0" + Chr(10) + "2:1" + Chr(10) + "2:2" + Chr(10) + "0:3")
AddGadgetItem(1, -1, "3:0" + Chr(10) + "3:1" + Chr(10) + "3:2" + Chr(10) + "0:3")
AddGadgetItem(1, -1, "4:0" + Chr(10) + "4:1" + Chr(10) + "4:2" + Chr(10) + "0:3")
EndIf
Repeat
EventID.l = WaitWindowEvent()
Until EventID = #PB_Event_CloseWindow
Im Beispiel also die Spalte3 sichtbar machen.
Hat jemand eine Idee, wie man das realisiert?
Danke
Ralf
Verfasst: 09.08.2006 01:06
von winduff
alkohol + dein code + deine erklärung = 0
Ähm verstehe nicht ganz was du meinst, sorry
Verfasst: 09.08.2006 01:47
von ts-soft
winduff hat geschrieben:alkohol + dein code + deine erklärung = 0
Ähm verstehe nicht ganz was du meinst, sorry
Dann geh mal Rausch ausschlafen
Code: Alles auswählen
OpenWindow(0, 100, 300, 400, 200, "Listicon Scroll Test", #PB_Window_SystemMenu)
If CreateGadgetList(WindowID(0))
ListIconGadget(1, 1, 1, 300, 160, "Spalte0", 100, #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect | #PB_ListIcon_HeaderDragDrop)
AddGadgetColumn(1, 1, "Spalte1", 100)
AddGadgetColumn(1, 2, "Spalte2", 100)
AddGadgetColumn(1, 3, "Spalte3", 100)
AddGadgetItem(1, -1, "0:0" + Chr(10) + "0:1" + Chr(10) + "0:2" + Chr(10) + "0:3")
AddGadgetItem(1, -1, "1:0" + Chr(10) + "1:1" + Chr(10) + "1:2" + Chr(10) + "0:3")
AddGadgetItem(1, -1, "2:0" + Chr(10) + "2:1" + Chr(10) + "2:2" + Chr(10) + "0:3")
AddGadgetItem(1, -1, "3:0" + Chr(10) + "3:1" + Chr(10) + "3:2" + Chr(10) + "0:3")
AddGadgetItem(1, -1, "4:0" + Chr(10) + "4:1" + Chr(10) + "4:2" + Chr(10) + "0:3")
SendMessage_(GadgetID(1), #LVM_SCROLL, 110, 0)
EndIf
Repeat
EventID.l = WaitWindowEvent()
Until EventID = #PB_Event_CloseWindow
Das berechnen, wieviel zu scrollen ist, mußte aber selber rausfinden
Verfasst: 09.08.2006 07:54
von hawk009
Hi!
Die Position errechne ich schon anhand der Spaltenbreiten.
Danke für den Tip.
Gruß
Ralf
Verfasst: 09.08.2006 08:28
von AND51
gnozales' PureLVSORT Lib kann das auch für dich machen und bietet noch eine Menge nützlicher Befehele für ListIconGadget()s. Kann ich nur empfehlen.
Verfasst: 09.08.2006 08:49
von ts-soft
@AND51
Es gibt auch Leute, die wollen selber programmieren. Eine Lib erspart oft viel
Arbeit, aber für solche Kleinigkeiten, wohl nicht nötig. Erst selber rausfinden,
dann fragen, und wenns zu kompliziert wird, kann man immer noch die Lib
nehmen

Verfasst: 09.09.2006 07:57
von hawk009
Hi!
Noch einmal ein Frage dazu.
Mit der Message #LVM_SCROLL kann ich im Listicon "pixelgenau" horizontal scrollen.
Gibt es eine Möglichkeit die derzeitige Position des Scrollbars im Listicon
zu ermitteln?
Irgend einen Winapi Befehl?
Gruß
Ralf
Verfasst: 10.09.2006 19:38
von MLK
keine lust jetzt näher darauf einzugehen, zu erklären oder den code noch mehr anzupassen, aber vielleicht hilfts:
Code: Alles auswählen
#LVM_GETSUBITEMRECT = #LVM_FIRST+$38
OpenWindow(0, 100, 300, 400, 200, "Listicon Scroll Test", #PB_Window_SystemMenu)
If CreateGadgetList(WindowID(0))
ListIconGadget(1, 1, 1, 300, 160, "Spalte0", 100, #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect | #PB_ListIcon_HeaderDragDrop)
AddGadgetColumn(1, 1, "Spalte1", 100)
AddGadgetColumn(1, 2, "Spalte2", 100)
AddGadgetColumn(1, 3, "Spalte3", 100)
AddGadgetItem(1, -1, "0:0" + Chr(10) + "0:1" + Chr(10) + "0:2" + Chr(10) + "0:3")
AddGadgetItem(1, -1, "1:0" + Chr(10) + "1:1" + Chr(10) + "1:2" + Chr(10) + "0:3")
AddGadgetItem(1, -1, "2:0" + Chr(10) + "2:1" + Chr(10) + "2:2" + Chr(10) + "0:3")
AddGadgetItem(1, -1, "3:0" + Chr(10) + "3:1" + Chr(10) + "3:2" + Chr(10) + "0:3")
AddGadgetItem(1, -1, "4:0" + Chr(10) + "4:1" + Chr(10) + "4:2" + Chr(10) + "0:3")
SendMessage_(GadgetID(1), #LVM_SCROLL, 110, 0)
EndIf
Repeat
EventID.l = WaitWindowEvent()
If GetAsyncKeyState_(#VK_RETURN)
rec.RECT\left = #LVIR_BOUNDS
SendMessage_(GadgetID(1), #LVM_GETSUBITEMRECT, 0, @rec)
rec\right = rec\left + GetGadgetItemAttribute(1, #Null, #PB_ListIcon_ColumnWidth, 0)
GetClientRect_(GadgetID(1), @clientrec.RECT)
If rec\left < 0 Or (rec\right-rec\left) >= clientrec\right
SendMessage_(GadgetID(1), #LVM_SCROLL, rec\left-1-1, 0)
ElseIf rec\right > clientrec\right
SendMessage_(GadgetID(1), #LVM_SCROLL, rec\right-clientrec\right, 0)
EndIf
EndIf
Until EventID = #PB_Event_CloseWindow
ausführen und enter drücken
Verfasst: 10.09.2006 19:43
von vonTurnundTaxis
Verfasst: 10.09.2006 19:49
von ts-soft
vonTurnundTaxis hat geschrieben:Wie wäre es einfach mit
Weil dadurch nicht erreicht wird, was gefragt wurde. Das Scrollen einer
Spalte in den sichtbaren Bereich, also nach rechts oder links, nicht rauf und
runter
