[PB 4.1 B4] TextGadget & Events (erledigt: Kein PB-Bug)

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

[PB 4.1 B4] TextGadget & Events (erledigt: Kein PB-Bug)

Beitrag von Kiffi »

Hallo,

ist mir gerade aufgefallen: Wenn ich auf einem Textgadget einen linken
Doppelklick ausführe, dann bekomme ich die EventTypes LeftClick und
RightClick anstelle von LeftDoubleClick.

Ist das bei Euch auch so?

Code: Alles auswählen

OpenWindow(0, #PB_Ignore, #PB_Ignore, 200, 30, "")
CreateGadgetList(WindowID(0))
TextGadget(1, 5, 5, 190, 20, "Hier klicken!", #PB_Text_Border | #SS_NOTIFY)

Repeat
  
  WWE = WaitWindowEvent()
  
  If WWE=#PB_Event_Gadget And EventGadget()=1

    Select EventType()
      Case #PB_EventType_LeftClick        : Debug "#PB_EventType_LeftClick"
      Case #PB_EventType_RightClick       : Debug "#PB_EventType_RightClick"
      Case #PB_EventType_LeftDoubleClick  : Debug "#PB_EventType_LeftDoubleClick"
      Case #PB_EventType_RightDoubleClick : Debug "#PB_EventType_RightDoubleClick"
      Case #PB_EventType_Focus            : Debug "#PB_EventType_Focus"
      Case #PB_EventType_LostFocus        : Debug "#PB_EventType_LostFocus"
      Case #PB_EventType_Change           : Debug "#PB_EventType_Change"
      Case #PB_EventType_DragStart        : Debug "#PB_EventType_DragStart"
    EndSelect
    
  EndIf
  
  
Until WWE=#PB_Event_CloseWindow
Grüße ... Kiffi

// Edit: Subject angepasst. Ist wohl kein PB-Bug.
Zuletzt geändert von Kiffi am 08.11.2007 10:28, insgesamt 2-mal geändert.
a²+b²=mc²
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Ja, bei mir ist es genauso.
Habe es aber noch mit der v4.10 BETA 3 getestet, denke aber, dass dies zeigt, dass der Bug sich doch über mehrere Versionen erstreckt.
Debugger hat geschrieben:#PB_EventType_LeftClick
#PB_EventType_RightClick
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
PMTheQuick
Beiträge: 630
Registriert: 05.05.2005 19:06

Beitrag von PMTheQuick »

Mit der PB 4.10 Beta 4 genau das gleiche...

Gruss
PMTheQuick ;)
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

@AND51 & PMTheQuick: Danke für Eure schnelle Rückmeldung!

Ich hab's mal im englischen Forum als Bug gemeldet:

http://www.purebasic.fr/english/viewtop ... 692#217692

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Ligatur
Beiträge: 196
Registriert: 09.07.2006 00:41

Beitrag von Ligatur »

Hallo,
ist zwar bei mir auch so. Es ist aber zumindest kein PB - Bug, denn ein entsprechendes Control vom System verhält sich genauso:

Code: Alles auswählen

hwnd = OpenWindow(0, #PB_Ignore, #PB_Ignore, 200, 30, "") 
; CreateGadgetList(WindowID(0)) 
; TextGadget(1, 5, 5, 190, 20, "Hier klicken!", #PB_Text_Border | #SS_NOTIFY) 

CreateWindowEx_(0, "STATIC", "Hier klicken", #WS_CHILD | #WS_VISIBLE | #SS_NOTIFY | #WS_BORDER, 5, 5, 190, 20, hwnd, 1, 0, 0)

Repeat 
  
  WWE = WaitWindowEvent() 
  
  If WWE=#PB_Event_Gadget And EventGadget()=1 

    Select EventType() 
      Case #PB_EventType_LeftClick        : Debug "#PB_EventType_LeftClick" 
      Case #PB_EventType_RightClick       : Debug "#PB_EventType_RightClick" 
      Case #PB_EventType_LeftDoubleClick  : Debug "#PB_EventType_LeftDoubleClick" 
      Case #PB_EventType_RightDoubleClick : Debug "#PB_EventType_RightDoubleClick" 
      Case #PB_EventType_Focus            : Debug "#PB_EventType_Focus" 
      Case #PB_EventType_LostFocus        : Debug "#PB_EventType_LostFocus" 
      Case #PB_EventType_Change           : Debug "#PB_EventType_Change" 
      Case #PB_EventType_DragStart        : Debug "#PB_EventType_DragStart" 
    EndSelect 
    
  EndIf 
  
  
Until WWE=#PB_Event_CloseWindow
Grüße,
Ligatur
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Jetzt kommst,

bei PB v3.94 ist es auch so. Ist also eine eigendschaft von STATIC Text und kein Bug.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Ligatur hat geschrieben:Hallo,
ist zwar bei mir auch so. Es ist aber zumindest kein PB - Bug, denn ein entsprechendes Control vom System verhält sich genauso:
Das Eventsystem gibt es aber nicht so unter Windows. Es ist ein Bug
in PB. Normal kommt ja wm_lbuttondblclk und kein wm_rbuttondown
oder dergleichen.

Edit:
Habe gerade Freds Post gelesen. Es ist also kein Bug, eher ein
undefiniertes Verhalten ...
Zuletzt geändert von edel am 08.11.2007 01:16, insgesamt 1-mal geändert.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Hallo!
Ich hoffe, das passt halbwegs, was ich hier poste. Es scheint kein PB Bug zu sein, wenn ich das hier richtig mitverfolgt habe.
Möchte daher die Reaktion des englischen Boards hier nochmal reinstellen:
edel hat geschrieben:Es ist ein Bug in PB.
  • Dagegen sprechen:
  • gnozal hat geschrieben:Iirc, #PB_EventType_LeftDoubleClick never worked with static controls (even with #SS_NOTIFY style).
    It works with subclassing though.
  • freak hat geschrieben:#SS_NOTIFY is not a PB flag...
  • Fred hat geschrieben:A TextGadget() doesn't support any event officially.
Der Link zum englischen Topic ist in Kiffis Beitrag zu finden.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Ligatur
Beiträge: 196
Registriert: 09.07.2006 00:41

Beitrag von Ligatur »

Eigendlich werden laut MSDN mit SS_NOTIFY - Message gesendete Nachrichten über eine WM_COMMAND - Nachricht versendet mit HIWORD(wParam) = #STN_* (In Fall von Doppelklicks #STN_DBLCLK). Sie lassen sich also so abfragen ohne Subclassing zu verwenden:

Code: Alles auswählen

Procedure.l wcb(hwnd, msg, wParam, lParam)
  Result = #PB_ProcessPureBasicEvents
  
  If msg = #WM_COMMAND And lParam = GadgetID(1)
    If (wParam >> 16) = #STN_DBLCLK
      Debug "Doubleclick"
    EndIf
  EndIf
  
  ProcedureReturn Result
EndProcedure

OpenWindow(0, #PB_Ignore, #PB_Ignore, 200, 30, "") 
CreateGadgetList(WindowID(0)) 
TextGadget(1, 5, 5, 190, 20, "Click here!", #PB_Text_Border | #SS_NOTIFY) 

SetWindowCallback(@wcb())

Repeat 
  
  WWE = WaitWindowEvent() 
  
  If WWE=#PB_Event_Gadget And EventGadget()=1 

;     Select EventType() 
;       Case #PB_EventType_LeftClick        : Debug "#PB_EventType_LeftClick" 
;       Case #PB_EventType_RightClick       : Debug "#PB_EventType_RightClick" 
;       Case #PB_EventType_LeftDoubleClick  : Debug "#PB_EventType_LeftDoubleClick" 
;       Case #PB_EventType_RightDoubleClick : Debug "#PB_EventType_RightDoubleClick" 
;       Case #PB_EventType_Focus            : Debug "#PB_EventType_Focus" 
;       Case #PB_EventType_LostFocus        : Debug "#PB_EventType_LostFocus" 
;       Case #PB_EventType_Change           : Debug "#PB_EventType_Change" 
;       Case #PB_EventType_DragStart        : Debug "#PB_EventType_DragStart" 
;     EndSelect 
    
  EndIf
   
  
Until WWE=#PB_Event_CloseWindow
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Hallo,

danke für die rege Anteilnahme! Ich bin auch zu dem Schluss gekommen,
dass es sich hierbei wohl nicht direkt um einen PB-Bug handelt und habe den
Thread-Betreff entsprechend angepasst.

... und durch die Verwendung des Callbacks kann man dann ja doch noch an
die Events herankommen.

Grüße ... Kiffi
a²+b²=mc²
Antworten