LIG: Scroll-Event oder Scrollen temporär deaktivieren
LIG: Scroll-Event oder Scrollen temporär deaktivieren
Hallo,
Gibt es ein Event (oder API-Callback), dass auf scrollen eines ListIconGadget reagiert?
Oder besser:
Kann ich irgendwie temporär das Scrollen eines LIG deaktivieren?
Rahmenbedingungen:
- Das Gadget darf nicht deaktiviert werden
- Betriebssystem ist Windows - d.h. es ist auch API möglich
- PB-Version 5.61 (momentan noch x86)
Danke.
Gibt es ein Event (oder API-Callback), dass auf scrollen eines ListIconGadget reagiert?
Oder besser:
Kann ich irgendwie temporär das Scrollen eines LIG deaktivieren?
Rahmenbedingungen:
- Das Gadget darf nicht deaktiviert werden
- Betriebssystem ist Windows - d.h. es ist auch API möglich
- PB-Version 5.61 (momentan noch x86)
Danke.
Never change a running system - Never run a changed system!
(PB 6.03 LTS [x86])
(PB 6.03 LTS [x86])
Re: LIG: Scroll-Event oder Scrollen temporär deaktivieren
Aber dann ist die Scrollmöglichkeit komplett weg..? Oder? Das soll nicht sein.
Nur bei einem bestimmten Ereignis darf (vorübergehend) nicht mehr gescrollt werden.
Nur bei einem bestimmten Ereignis darf (vorübergehend) nicht mehr gescrollt werden.
Never change a running system - Never run a changed system!
(PB 6.03 LTS [x86])
(PB 6.03 LTS [x86])
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
Re: LIG: Scroll-Event oder Scrollen temporär deaktivieren
Warum nicht?techniker hat geschrieben:- Das Gadget darf nicht deaktiviert werden
Windows 10 Pro, 64-Bit / Outtakes | Derek
Re: LIG: Scroll-Event oder Scrollen temporär deaktivieren
Da das LIG "editierbar" ist..
D.h. das LIG ist per API das Eltern-Gadget und ein Stringgadget als Kind definiert.
Wenn ich nun das LIG deaktiviere bekomme ich keine Infos mehr, welche Zelle bearbeitet werden soll.
D.h. das LIG ist per API das Eltern-Gadget und ein Stringgadget als Kind definiert.
Wenn ich nun das LIG deaktiviere bekomme ich keine Infos mehr, welche Zelle bearbeitet werden soll.
Never change a running system - Never run a changed system!
(PB 6.03 LTS [x86])
(PB 6.03 LTS [x86])
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
Re: LIG: Scroll-Event oder Scrollen temporär deaktivieren
Wird dann etwas komplizierter. Es gibt viele Möglichkeiten zu scrollen: Scrollbar, Mausrad, Pfeiltasten. Das Problem ist das die Scrollbar keine eigenes Fenster ist sondern das was du siehst ist vom System selbst gemalt und ausgegeben.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Re: LIG: Scroll-Event oder Scrollen temporär deaktivieren
Korrekt - und genau dass ist mein Problem..
Pfeiltasten habe/hatte ich schon abgefangen.
Aber wie mache ich es mit der Maus? (#WM_MOUSEWHEEL oder so ähnlich?)
Und wie mit den Scrollbalken?
Pfeiltasten habe/hatte ich schon abgefangen.
Aber wie mache ich es mit der Maus? (#WM_MOUSEWHEEL oder so ähnlich?)
Und wie mit den Scrollbalken?
Never change a running system - Never run a changed system!
(PB 6.03 LTS [x86])
(PB 6.03 LTS [x86])
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
Re: LIG: Scroll-Event oder Scrollen temporär deaktivieren
Code: Alles auswählen
Global hwndPrevProc
OpenWindow(0,0,0,400,300,"",#PB_Window_SystemMenu | 1)
ListIconGadget(0,0,0,400,270,"derka",350,#PB_ListIcon_FullRowSelect)
ButtonGadget(1,0,270,400,30,"scrollen deaktivieren")
For i=1 To 100 : AddGadgetItem(0,-1,"derka derka jihad" + Str(i)) : Next
Procedure ListIconProc(hWnd,uMsg,wParam,lParam)
Select umsg
Case #WM_VSCROLL
ProcedureReturn 0
Case #WM_MOUSEWHEEL
ProcedureReturn 0
Case #WM_KEYDOWN
If wParam = #VK_UP Or wParam = #VK_DOWN
ProcedureReturn 0
EndIf
EndSelect
ProcedureReturn CallWindowProc_(hwndPrevProc,hwnd,umsg,wparam,lparam)
EndProcedure
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget And EventGadget() = 1
Deactivated = 1 - Deactivated
If Deactivated
hwndPrevProc = SetWindowLongPtr_(GadgetID(0),#GWLP_WNDPROC,@ListIconProc())
SetGadgetText(1,"scroll aktivieren")
Else
SetWindowLongPtr_(GadgetID(0),#GWLP_WNDPROC,hwndPrevProc)
SetGadgetText(1,"scroll deaktivieren")
EndIf
EndIf
Until EventID = #PB_Event_CloseWindow
Windows 10 Pro, 64-Bit / Outtakes | Derek
- hjbremer
- Beiträge: 822
- Registriert: 27.02.2006 22:30
- Computerausstattung: von gestern
- Wohnort: Neumünster
Re: LIG: Scroll-Event oder Scrollen temporär deaktivieren
fast die gleiche Lösung
da es ein editierbares LV ist, hat er wahrscheinlich schon einen Callback fürs LV, der immer da ist.
da es ein editierbares LV ist, hat er wahrscheinlich schon einen Callback fürs LV, der immer da ist.
Code: Alles auswählen
Enumeration
#lig
#butoff
#buton
EndEnumeration
Global bflag
Procedure.i List_CB(hwnd, msg, wParam, lParam)
Protected oldproc = GetWindowLongPtr_(hwnd, #GWL_USERDATA)
Select msg
Case #WM_VSCROLL, #WM_HSCROLL, #WM_MOUSEWHEEL
If bflag
ProcedureReturn 0
EndIf
;case andere Messages wie keydown etc
EndSelect
ProcedureReturn CallWindowProc_(oldproc, hwnd, msg, wParam, lParam)
EndProcedure
OpenWindow(0, 0, 0, 500, 300, "ListIconGadgets", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
id = ListIconGadget(#lig, 10, 25, 400, 100, "Column 1", 100, #PB_ListIcon_FullRowSelect)
oldproc_gadget = SetWindowLongPtr_(id, #GWL_WNDPROC, @List_CB())
SetWindowLongPtr_(id, #GWL_USERDATA, oldproc_gadget)
ButtonGadget(#butoff, 10, 140, 55, 22, "off")
ButtonGadget(#buton , 10, 170, 55, 22, "on")
For b = 2 To 4
AddGadgetColumn(#lig, b, "Column " + Str(b), 65)
Next
For b = 0 To 20
AddGadgetItem(#lig, b, "Item 1"+ Str(b)+Chr(10)+"Item 2"+Chr(10)+"Item 3"+Chr(10)+"Item 4")
Next
Repeat :
event = WaitWindowEvent()
Select event
Case #PB_Event_Gadget
Select EventGadget()
Case #butoff: bflag = 1: Debug "butoff" + bflag
Case #buton: bflag = 0: Debug "buton" + bflag
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
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
Re: LIG: Scroll-Event oder Scrollen temporär deaktivieren
Läuft
Danke
Danke
Never change a running system - Never run a changed system!
(PB 6.03 LTS [x86])
(PB 6.03 LTS [x86])