Seite 1 von 1

Doppelklick auf EditorGadget

Verfasst: 11.04.2018 12:16
von marcelx
Hallo,

der code für EditorGadget funktionniert nicht

http://www.purebasic.fr/german/viewtopic.php?t=23668

Wie kann ich dass für ein EditorGadget realisieren.
Ich will mit ein Doppelklick auf eine Zeile dass, ein Programm aufgerufen wird 9mit der Inhalt der geklickt Zeile

Code: Alles auswählen

If OpenWindow(0, 0, 0, 330, 300, "Eventtypes Beispiel...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  EditorGadget(1, 8, 58, 300, 200)
  For a = 0 To 5
    AddGadgetItem(1, a, "Datei_"+Str(a))
  Next
  
  Repeat
    Event = WaitWindowEvent()
    Select Event
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 1
            Select EventType()
              Case #PB_EventType_LeftClick        : Debug "Klick mit der linken Maustaste"
              Case #PB_EventType_RightClick       : Debug "Klick mit der rechten Maustaste"
              Case #PB_EventType_LeftDoubleClick  : Debug "Doppelklick mit der linken Maustaste"
              Case #PB_EventType_RightDoubleClick : Debug "Doppelklick mit der rechten Maustaste"
            EndSelect
        EndSelect
    EndSelect
  Until Event = #PB_Event_CloseWindow
EndIf
Danke und Gruß
MarcelX

__________________________________________________
Domain angepasst
11.04.2018
RSBasic

Re: Doppelklick auf EditorGadget

Verfasst: 11.04.2018 12:21
von Bisonte
Es ist so wie in dem Post beschrieben. Das EditorGadget unterstützt diese Events nicht.
In der Hilfe sind nur drei Events die unterstützt werden.

In dem verlinkten Thread ist ganz am Ende die Lösung. "Subclassing" des Editorgadgets.
D.h. nur mit WindowsAPI möglich.

Re: Doppelklick auf EditorGadget

Verfasst: 11.04.2018 12:23
von RSBasic
In der PB-Hilfe kannst du immer schauen, was unterstützt wird.
Die folgenden Ereignisse werden mittels EventType() unterstützt:
#PB_EventType_Change : der Text wurde durch den Anwender geändert.
#PB_EventType_Focus : der Editor hat den Fokus erhalten.
#PB_EventType_LostFocus: der Editor hat den Fokus verloren.
Da gibt es kein #PB_EventType_LeftDoubleClick o.ä.
Deshalb wird dein Code nie funktionieren.

Die einzige Möglichkeit ist ein Callback. Damit hast du immer alle Events. Nimm den Code von Andesdaf.

Re: Doppelklick auf EditorGadget

Verfasst: 11.04.2018 12:45
von marcelx
Danke für Ihr Rückmeldungen.
In den PB-Hilfe hatte ich es gesehen und in den Thread habe ich die Lösung überseht

Re: Doppelklick auf EditorGadget

Verfasst: 14.04.2018 07:14
von silbersurfer
Hallo marcelx
man kann das auch ohne API lösen wenn du nur die Mausabfragen benötigst, in dem man diese direkt abfragt.
Für Windows sind das:
Linke Taste:
#WM_LBUTTONDOWN
#WM_LBUTTONUP
#WM_LBUTTONDBLCLK
Rechte Taste:
#WM_RBUTTONDOWN
#WM_RBUTTONUP
#WM_RBUTTONDBLCLK
Ich denke unter Linux/Mac wird es änlich möglich sein

hier ein kleine Beispiel:

Code: Alles auswählen

If OpenWindow(0, 0, 0, 330, 300, "Eventtypes Beispiel...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  EditorGadget(1, 8, 58, 300, 200)
  For a = 0 To 5
    AddGadgetItem(1, a, "Datei_"+Str(a))
  Next
Repeat
    Event = WaitWindowEvent()
    Select Event
    	Case #WM_LBUTTONDOWN
    		If Focus =#True 
    			Debug "linke Maustaste Down"
    		EndIf 
    	Case #WM_LBUTTONDBLCLK
    		If Focus =#True 
    			Debug "linke Maustasten Doppelclick"
    		EndIf   
    	Case #WM_LBUTTONUP	
		Case #PB_Event_Gadget
			Select EventGadget()
				Case 1
					Select EventType()
						Case #PB_EventType_Focus           
						 Debug "Focus erhalten"
					  	Focus=#True
					  Case #PB_EventType_LostFocus
					  	Focus=#False
					  	Debug "Focus Verloren"
					EndSelect        
        	EndSelect
    EndSelect
Until Event = #PB_Event_CloseWindow
EndIf

Re: Doppelklick auf EditorGadget

Verfasst: 14.04.2018 09:41
von marcelx
Super
Danke silbersurfer

Re: Doppelklick auf EditorGadget

Verfasst: 14.04.2018 14:53
von Bisonte
Man sollte dabei bedenken, dass diese Konstanten nicht offiziell von PB in einer Eventschleife unterstützt werden.

Es war auch mal so, dass dieses nicht funktionierte.
Windows API sollte nur in dem dafür unterstütztem Kontext benutzt werden. In diesem Falle in einem Callback. Immer !!!

Es gibt keine Garantie, dass dieses Verhalten von PB so bleibt.

Re: Doppelklick auf EditorGadget

Verfasst: 14.04.2018 15:06
von RSBasic
+1