#PB_EventType_LeftClick beim ImageGadget

Anfängerfragen zum Programmieren mit PureBasic.
Jake
Beiträge: 121
Registriert: 28.05.2005 04:10
Wohnort: Berlin

#PB_EventType_LeftClick beim ImageGadget

Beitrag von Jake »

Hallo,

mir ist aufgefallen, dass das Event #PB_EventType_LeftClick beim ImageGadget schon kommt wenn man den Mausbutton drückt und nicht erst wenn man ihn wieder loslässt.
Das ist beim ButtonGadget z. B. anders. Dort wird das Event #PB_EventType_LeftClick erst ausgelöst wenn man den Button wieder loslässt.

Nun zu meinem Problem. Ich wollte bei einem ImageGadget die Events #PB_EventType_LeftClick und #PB_EventType_DragStart separat verarbeiten. Da aber vor einem #PB_EventType_DragStart immer ein #PB_EventType_LeftClick kommt, stört das.

Hier mal ein Beispielcode zu ausprobieren:

Code: Alles auswählen

If OpenWindow(0, 0, 0, 245, 105, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
	If CreateImage(0, 100, 83)
		StartDrawing(ImageOutput(0))
		DrawText(10, 10, "Hallo")
		StopDrawing()
		ImageGadget(0,  10, 10, 100, 83, ImageID(0))                     ; Imagegadget Standard
		ImageGadget(1, 130, 10, 100, 83, ImageID(0), #PB_Image_Border)   ; Imagegadget mit Rand
	EndIf
EndIf

Repeat
	Select WaitWindowEvent()
		Case #PB_Event_CloseWindow
			Select EventWindow()
				Case 0
					CloseWindow(0)
					End
			EndSelect
		Case #PB_Event_Gadget
			Select EventGadget()
				Case 0
					Select EventType()
						Case #PB_EventType_LeftClick
							Debug "Left Click IMG_0"
						Case #PB_EventType_DragStart
							Debug "DragStart IMG_0"
					EndSelect
				Case 1
					Select EventType()
						Case #PB_EventType_LeftClick
							Debug "Left Click IMG_1"
						Case #PB_EventType_DragStart
							Debug "DragStart IMG_1"							
					EndSelect
			EndSelect
	EndSelect
ForEver	
End
Mache ich was falsch? Soll das so sein? Oder hat PB da einen Fehler?

Gruß Jake
MfG Jake
Benutzeravatar
Bisonte
Beiträge: 2429
Registriert: 01.04.2007 20:18

Re: #PB_EventType_LeftClick beim ImageGadget

Beitrag von Bisonte »

Ob ein Fehler oder nicht... Wenn du keine Transparenz brauchst, dann nimm anstelle des ImageGadgets ein CanvasGadget. Da sind die Events viel differenzierter auswertbar.
PureBasic 6.10 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
silbersurfer
Beiträge: 174
Registriert: 06.07.2014 12:21

Re: #PB_EventType_LeftClick beim ImageGadget

Beitrag von silbersurfer »

Hallo Jake,
wenn du eine Action erst ab Maustaste loslassen durchführen möchtes, kannst du das auch mit dem Event #WM_LBUTTONUP / #WM_RBUTTONUP / #WM_MBUTTONUP
zusätslich abfragen.

Code: Alles auswählen

If OpenWindow(0, 0, 0, 245, 105, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   If CreateImage(0, 100, 83)
      StartDrawing(ImageOutput(0))
      DrawText(10, 10, "Hallo")
      StopDrawing()
      ImageGadget(0,  10, 10, 100, 83, ImageID(0))                     ; Imagegadget Standard
      ImageGadget(1, 130, 10, 100, 83, ImageID(0), #PB_Image_Border)   ; Imagegadget mit Rand
   EndIf
EndIf

Repeat
 
  Select WaitWindowEvent()
    Case #WM_LBUTTONUP
      If Dragstart
        Dragstart=0
        Debug "DragStart IMG_0" 
      EndIf   
        
      Case #PB_Event_CloseWindow
         Select EventWindow()
            Case 0
               CloseWindow(0)
               End
         EndSelect
      Case #PB_Event_Gadget
         Select EventGadget()
            Case 0
               Select EventType()
                  Case #PB_EventType_LeftClick
                     Debug "Left Click IMG_0"
                   Case #PB_EventType_DragStart 
                       Dragstart=1
                       ;Debug "DragStart IMG_0"  
               EndSelect
            Case 1
               Select EventType()
                  Case #PB_EventType_LeftClick
                     Debug "Left Click IMG_1"
                  Case #PB_EventType_DragStart
                     Debug "DragStart IMG_1"                     
               EndSelect
         EndSelect
   EndSelect
ForEver   
End
Intel Quad Core 3,2 Ghz - GTX 1060 - BlitzBasic Plus 1.48 , PureBasic 5.70 LTS / Aktuelles Projekt PureCommander
Antworten