Position der Scrollbar in einem ListIconGadget ermitteln

Für allgemeine Fragen zur Programmierung mit PureBasic.
SBond
Beiträge: 266
Registriert: 22.05.2013 20:35

Position der Scrollbar in einem ListIconGadget ermitteln

Beitrag von SBond »

Hallo Leute,

gibt es eine Möglichkeit, die Position der Scrollbar in einem ListIconGadget zu ermitteln?
Ich möchte zwei ListIconGadget von der Position synchronisieren. Also wenn ich die erste herunter scrolle, dann soll die zweite auch herunterscrollen (auf die gleiche Position).

Über WinAPI kann ich die Position setzen, aber ich weiß nicht wie ich diese auslesen kann. Kann jemand helfen?


Code: Alles auswählen

OpenWindow(0,0,0,600,400,"",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)

ListIconGadget(1, 10,10,285,380,"Irgendetwas",200, #PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
ListIconGadget(2,305,10,285,380,"Irgendetwas",200, #PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)

For i=1 To 100 Step 1
	AddGadgetItem(1,-1,"Item" + Str(i))
	AddGadgetItem(2,-1,"Item" + Str(i))
Next

SendMessage_(GadgetID(1), #LVM_SCROLL, 0, 500)

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
viele Grüße,
SBond
41 6c 73 6f 20 77 65 6e 6e 20 64 75 20 73 6f 20 76 69 65 6c 20 4c 61 6e 67 65 77 65 69 6c 65 20 68 61 73 74 2c 20 64 61 6e 6e 20 6b 61 6e 6e 73 74 20 64 75 20 61 75 63 68 20 67 6c 65 69 63 68 20 7a 75 20 6d 69 72 20 6b 6f 6d 6d 65 6e 20 75 6e 64 20 61 62 77 61 73 63 68 65 6e 2e

:D
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Position der Scrollbar in einem ListIconGadget ermitteln

Beitrag von RSBasic »

Mit:

Code: Alles auswählen

GetScrollPos_(GadgetID(#Gadget), #SB_VERT)
Bzw.: http://www.purebasic.fr/english/viewtop ... 88#p440288
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Re: Position der Scrollbar in einem ListIconGadget ermitteln

Beitrag von X360 Andy »

Das hätte ich noch im Angebot

Code: Alles auswählen

LVM_GOI = SendMessage_(GadgetID(1),#LVM_GETTOPINDEX,0,0)
LVM_GCP = SendMessage_(GadgetID(1),#LVM_GETCOUNTPERPAGE,0,0)
 SendMessage_(GadgetID(2),#LVM_ENSUREVISIBLE,LVM_GOI+LVM_GCP - 1,0)
SBond
Beiträge: 266
Registriert: 22.05.2013 20:35

Re: Position der Scrollbar in einem ListIconGadget ermitteln

Beitrag von SBond »

super.

vielen Dank :)
41 6c 73 6f 20 77 65 6e 6e 20 64 75 20 73 6f 20 76 69 65 6c 20 4c 61 6e 67 65 77 65 69 6c 65 20 68 61 73 74 2c 20 64 61 6e 6e 20 6b 61 6e 6e 73 74 20 64 75 20 61 75 63 68 20 67 6c 65 69 63 68 20 7a 75 20 6d 69 72 20 6b 6f 6d 6d 65 6e 20 75 6e 64 20 61 62 77 61 73 63 68 65 6e 2e

:D
SBond
Beiträge: 266
Registriert: 22.05.2013 20:35

Re: Position der Scrollbar in einem ListIconGadget ermitteln

Beitrag von SBond »

Zur Vollständigkeit die (mögliche) Lösung:

Code: Alles auswählen

Declare Synchronisation()

OpenWindow(0,0,0,600,400,"",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)

ListIconGadget(1, 10,10,285,380,"Irgendetwas",200, #PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
ListIconGadget(2,305,10,285,380,"Irgendetwas",200, #PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)

For i=0 To 100 Step 1
   AddGadgetItem(1,-1,"Item" + Str(i))
   AddGadgetItem(2,-1,"Item" + Str(i))
Next


AddWindowTimer(0,1,10)
BindEvent(#PB_Event_Timer, @Synchronisation())

Repeat:Until WaitWindowEvent(20) = #PB_Event_CloseWindow



Procedure Synchronisation()
	
	Static Pos_List_A_old
	Static Pos_List_B_old
	
	Pos_List_A = SendMessage_(GadgetID(1),#LVM_GETTOPINDEX,0,0)
	Pos_List_B = SendMessage_(GadgetID(2),#LVM_GETTOPINDEX,0,0)
	
	PageCount_A = SendMessage_(GadgetID(1),#LVM_GETCOUNTPERPAGE,0,0)
	PageCount_B = SendMessage_(GadgetID(2),#LVM_GETCOUNTPERPAGE,0,0)
	
	If EventTimer() = 1
		
		If Pos_List_A <> Pos_List_A_old
			SendMessage_(GadgetID(2),#LVM_ENSUREVISIBLE,Pos_List_A + PageCount_A - 1, 0)
			SendMessage_(GadgetID(2),#LVM_ENSUREVISIBLE,Pos_List_A, 0)
			Pos_List_A_old = Pos_List_A
			Pos_List_B_old = Pos_List_B
			
		ElseIf Pos_List_B <> Pos_List_B_old
			SendMessage_(GadgetID(1),#LVM_ENSUREVISIBLE,Pos_List_B + PageCount_B - 1, 0)
			SendMessage_(GadgetID(1),#LVM_ENSUREVISIBLE,Pos_List_B, 0)
			Pos_List_A_old = Pos_List_A
			Pos_List_B_old = Pos_List_B
			
		EndIf
		
	EndIf
	
EndProcedure
nochmals Danke für eure Hilfe ;)
41 6c 73 6f 20 77 65 6e 6e 20 64 75 20 73 6f 20 76 69 65 6c 20 4c 61 6e 67 65 77 65 69 6c 65 20 68 61 73 74 2c 20 64 61 6e 6e 20 6b 61 6e 6e 73 74 20 64 75 20 61 75 63 68 20 67 6c 65 69 63 68 20 7a 75 20 6d 69 72 20 6b 6f 6d 6d 65 6e 20 75 6e 64 20 61 62 77 61 73 63 68 65 6e 2e

:D
Antworten