Event für ScrollAreaGadget() ??

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Event für ScrollAreaGadget() ??

Beitrag von Falko »

Kann man mit Event über Case irgendwie in der Repeat/Until-Schleife
das ScrollAreaGadget() abfragen, wenn man es anklickt oder verstellt?

Habe leider nichts passendes in PB_Event gefunden. Oder wie kann man
das irgendwie bewerkstelligen? Wäre sehr nett, wenn mir da jemand
weiterhelfen könnte.

Gruß Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
Franky
Beiträge: 1132
Registriert: 29.08.2004 16:31
Wohnort: Münsterland
Kontaktdaten:

Beitrag von Franky »

Das kannst du mit einem Callback in etwa so:

Code: Alles auswählen

          Case WindowID(#window_scroll)
                  Select message 
                    Case #WM_VSCROLL
                    If scrollmaxy=>1
                    If lParam=#Null
                      wLow=PeekW(@wParam)
                      wHi=PeekW(@wParam+2)
                      Select wLow
                        Case #SB_LEFT         :                                          vert = 0                                :   repaint.l =1 :        mousey=(areay-vert+vert2)*Length+Length 
                        Case #SB_RIGHT        :                                          vert = scrollmaxy                       :   repaint.l =1 :        mousey=(areay-vert+vert2)*Length+Length 
                        Case #SB_PAGELEFT     : If vert>0                              : vert =vert-scrollstepbigvert(0)         :   repaint.l =1 :        mousey=(areay-vert+vert2)*Length+Length    : EndIf 
                        Case #SB_PAGERIGHT    : If vert<scrollmaxy                     : vert =vert+scrollstepbigvert(1)         :   repaint.l =1 :        mousey=(areay-vert+vert2)*Length+Length    : EndIf 
                        Case #SB_LINELEFT     : If vert>0                              : vert =vert-1                            :   repaint.l =1 :        mousey=(areay-vert+vert2)*Length+Length    : EndIf 
                        Case #SB_LINERIGHT    : If vert<scrollmaxy                     : vert =vert+1                            :   repaint.l =1 :        mousey=(areay-vert+vert2)*Length+Length    : EndIf 
                        Case #SB_THUMBPOSITION:                                          vert = wHi                              :   repaint.l =1 :        mousey=(areay-vert+vert2)*Length+Length 
                        Case #SB_THUMBTRACK   :                                          vert = wHi                              :   repaint.l =1 :        mousey=(areay-vert+vert2)*Length+Length 
                      EndSelect
                      result=0
                      SetScrollPos_(WindowID(#window_scroll),#SB_VERT,vert,#True)

endselect
enselect
Is so nicht lauffähig, bin jetzt zu faul, das richtig zu machen, hab´s einfach aus meinem Code kopiert.

Aber du schaffst das schon, ich hab da volles vertrauen in dich :wink:

Einfach Windowid() durch gadgetid() ersetzen
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden :)
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

@Franky
Danke für deinen Tip und dein Vertrauen :wink: .
Ich werde es morgen versuchen, mich mal mit der WindowsCallback-Funktion auseinander zu setzen.

Hab's bis jetzt immer vermieden. Aber anders wird's wohl doch nicht so
einfach sein das in einer schon bestehenden Repeat, Select, Endselect,
Until-Schleife einzubauen.

MfG Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Antworten