Auf-/Zuklappen bei Doppelklick bei Treegadget abschalten
- NicTheQuick
- Ein Admin
- Beiträge: 8820
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Auf-/Zuklappen bei Doppelklick bei Treegadget abschalten
Hallo Leute,
wie kann ich dem Treegadget abgewöhnen bei Doppelklick den entsprechenden Eintrag auf- bzw. zuzuklappen? Ich möchte nämlich bei einem Doppelklick etwas anderes tun. Auf- und zuklappen kann man ja immer noch über das [+] und [-] Zeichen.
Muss da ein WindowCallback her oder geht das auch anders?
wie kann ich dem Treegadget abgewöhnen bei Doppelklick den entsprechenden Eintrag auf- bzw. zuzuklappen? Ich möchte nämlich bei einem Doppelklick etwas anderes tun. Auf- und zuklappen kann man ja immer noch über das [+] und [-] Zeichen.
Muss da ein WindowCallback her oder geht das auch anders?
Re: Auf-/Zuklappen bei Doppelklick bei Treegadget abschalten
Aufklappen verhindern:
(für's Zuklappen verhindern habe ich momentan keine Muße; bekommst Du aber sicherlich selber hin)
Zuckelt zwar ein wenig, aber besser als nix
Grüße ... Peter
Code: Alles auswählen
Procedure TreeGadgetEvent()
Protected SelectedItem = GetGadgetState(#myTree)
SetGadgetItemState(#myTree, SelectedItem, #PB_Tree_Expanded | GetGadgetItemState(#myTree, SelectedItem))
EndProcedure
BindGadgetEvent(#myTree, @TreeGadgetEvent(), #PB_EventType_LeftDoubleClick)Zuckelt zwar ein wenig, aber besser als nix
Grüße ... Peter
a²+b²=mc²
Re: Auf-/Zuklappen bei Doppelklick bei Treegadget abschalten
Kurze Frage, bevor ich anfange, was zu schreiben: Für Windows oder Linux? Oder beide Betriebssysteme?
- NicTheQuick
- Ein Admin
- Beiträge: 8820
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Auf-/Zuklappen bei Doppelklick bei Treegadget abschalten
Für beide wäre top. Für Windows aber momentan ausreichend.
- NicTheQuick
- Ein Admin
- Beiträge: 8820
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Auf-/Zuklappen bei Doppelklick bei Treegadget abschalten
Schon eine Idee, RSBasic? *drängel* 
Ich brauche es nur unter Windows. In Linux geht das mit dem Doppelklick eh nicht.
Ich brauche es nur unter Windows. In Linux geht das mit dem Doppelklick eh nicht.
Re: Auf-/Zuklappen bei Doppelklick bei Treegadget abschalten
Ist gar nicht so schwer:
In der Callbackschleife muss man auf #WM_Notify reagieren und da auf #nm_dbclick. Wenn man mit Procedurereturn ungleich 0 antwortet, wird die Nachricht verschluckt.
in *msg\hwndFrom kann man feststellen welches Treegadget betroffen ist (ich hab mal ein primitives global für TreeGadget0 benutzt).
https://msdn.microsoft.com/en-us/librar ... 85%29.aspx
Mehr Infos über das TreeView Control:
https://msdn.microsoft.com/en-us/librar ... 85%29.aspx
Viel Spaß.
Achja: Ich hab jetzt nicht getestet, ob du dann überhaupt noch eine Meldung bekommst, ob ein Doppelklick auf das TreeGadget erfolgt ist. Möglich, das die Meldung komplett geschluckt wird und du mit PostEvent(Event [, Window, Object [, Type [, Data]]]) was bauen musst. Eventuell mit #PB_Event_FirstCustomValue als event und das in deinen Routinen auf das Gadget zurück biegst.
In der Callbackschleife muss man auf #WM_Notify reagieren und da auf #nm_dbclick. Wenn man mit Procedurereturn ungleich 0 antwortet, wird die Nachricht verschluckt.
in *msg\hwndFrom kann man feststellen welches Treegadget betroffen ist (ich hab mal ein primitives global für TreeGadget0 benutzt).
https://msdn.microsoft.com/en-us/librar ... 85%29.aspx
Mehr Infos über das TreeView Control:
https://msdn.microsoft.com/en-us/librar ... 85%29.aspx
Viel Spaß.
Achja: Ich hab jetzt nicht getestet, ob du dann überhaupt noch eine Meldung bekommst, ob ein Doppelklick auf das TreeGadget erfolgt ist. Möglich, das die Meldung komplett geschluckt wird und du mit PostEvent(Event [, Window, Object [, Type [, Data]]]) was bauen musst. Eventuell mit #PB_Event_FirstCustomValue als event und das in deinen Routinen auf das Gadget zurück biegst.
Code: Alles auswählen
EnableExplicit
Global TreeGadget
Procedure WinCallback(hWnd, uMsg, WParam, LParam)
; Windows fills the parameter automatically, which we will use in the callback...
;Debug "xx"+TreeGadget+" "+hwnd +" "+Hex(umsg)
If umsg=#WM_NOTIFY
Protected *msg.nmhdr ; Solange nicht gesichert ist, welche Nachricht es ist, darf man nur auf \code zugreifen!
*msg=LParam
If *msg\code=#NM_DBLCLK
Debug "doubleclick on "+ *msg\hwndFrom +" (tree0:"+TreeGadget+")"
ProcedureReturn 1; verschlucken
EndIf
EndIf
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
Define id,a
If OpenWindow(0, 0, 0, 355, 180, "TreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TreeGadget(0, 10, 10, 160, 160) ; TreeGadget standard
TreeGadget(1, 180, 10, 160, 160, #PB_Tree_CheckBoxes | #PB_Tree_NoLines); TreeGadget with Checkboxes + NoLines
TreeGadget=GadgetID(0)
SetWindowCallback(@WinCallback())
For ID = 0 To 1
For a = 0 To 10
AddGadgetItem (ID, -1, "Normal Item "+Str(a), 0, 0) ; if you want to add an image, use
AddGadgetItem (ID, -1, "Node "+Str(a), 0, 0) ; ImageID(x) as 4th parameter
AddGadgetItem(ID, -1, "Sub-Item 1", 0, 1) ; These are on the 1st sublevel
AddGadgetItem(ID, -1, "Sub-Item 2", 0, 1)
AddGadgetItem(ID, -1, "Sub-Item 3", 0, 1)
AddGadgetItem(ID, -1, "Sub-Item 4", 0, 1)
AddGadgetItem (ID, -1, "File "+Str(a), 0, 0) ; sublevel 0 again
Next
Next
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Re: Auf-/Zuklappen bei Doppelklick bei Treegadget abschalten
Oh, ich habs vergessen, sorry.
Ein Computerspiel war schuld. 
Re: Auf-/Zuklappen bei Doppelklick bei Treegadget abschalten
@nick
hat mein Code dir geholfen?
hat mein Code dir geholfen?
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
- NicTheQuick
- Ein Admin
- Beiträge: 8820
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Auf-/Zuklappen bei Doppelklick bei Treegadget abschalten
Ich hab ihn zwar getestet, aber noch nicht für mich ausgebaut. Ich brauche bei einem Doppelklick ja noch die Position des angeklickten Eintrags. Aber das krieg ich bestimmt auch alleine hin, sobald ich Zeit finde. 
-
Andreas21
- Beiträge: 390
- Registriert: 30.08.2004 09:05
- Computerausstattung: Desktop
Windows 10 Pro x64
CPU: AMD Ryzen 5 2600 3.40 GHz
Ram: 16GB RAM
Grafik: NVIDA Geforce 1060
PB: 5.72 X86/X64 - Wohnort: Heidelberg
Re: Auf-/Zuklappen bei Doppelklick bei Treegadget abschalten
Die Position dürftest du mit GetGadgetState(#Gadget) heraus bekommen.
Windows 10 x64 Pro - PB 5.61 X64 / x32 - PB 4.6 x32

