Doppelklick auf EditorGadget

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
marcelx
Beiträge: 424
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Doppelklick auf EditorGadget

Beitrag 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
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
Bisonte
Beiträge: 2425
Registriert: 01.04.2007 20:18

Re: Doppelklick auf EditorGadget

Beitrag 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.
PureBasic 6.04 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Doppelklick auf EditorGadget

Beitrag 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.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
marcelx
Beiträge: 424
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: Doppelklick auf EditorGadget

Beitrag 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
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
silbersurfer
Beiträge: 174
Registriert: 06.07.2014 12:21

Re: Doppelklick auf EditorGadget

Beitrag 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
Intel Quad Core 3,2 Ghz - GTX 1060 - BlitzBasic Plus 1.48 , PureBasic 5.70 LTS / Aktuelles Projekt PureCommander
Benutzeravatar
marcelx
Beiträge: 424
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: Doppelklick auf EditorGadget

Beitrag von marcelx »

Super
Danke silbersurfer
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
Bisonte
Beiträge: 2425
Registriert: 01.04.2007 20:18

Re: Doppelklick auf EditorGadget

Beitrag 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.
PureBasic 6.04 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Doppelklick auf EditorGadget

Beitrag von RSBasic »

+1
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten