[resolu] EventType() et bouton souris

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

[resolu] EventType() et bouton souris

Message par Ar-S »

Je me remets un peu à PB et je me pine sur les eventtype()
pourquoi cet eventtype() ne réagit pas ?

Code : Tout sélectionner

Enumeration
  #LDV
  #ADD
EndEnumeration

Global adr$
adr$="http://google.fr"

If OpenWindow(#LDV, 450, 200, 613, 488, "WEB LINK SNIFFER", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
  StringGadget(#ADD, 5, 5, 600, 25, adr$, #PB_String_LowerCase|#WS_BORDER)
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #ADD 
            Select EventType()
              Case #PB_EventType_LeftClick 
                Debug "clic"
                SetGadgetText(#ADD,"http://")
            EndSelect  
        EndSelect
        
      Case #PB_Event_CloseWindow
        Select EventWindow()
          Case #LDV
            CloseWindow(#LDV)
            Break
        EndSelect
    EndSelect
  ForEver
EndIf
Dernière modification par Ar-S le sam. 04/déc./2010 13:12, modifié 1 fois.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
zaphod
Messages : 135
Inscription : dim. 07/déc./2008 9:32

Re: Rafraichissement sur EventType()

Message par zaphod »

...
Dernière modification par zaphod le dim. 27/mai/2012 7:53, modifié 1 fois.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Rafraichissement sur EventType()

Message par Ar-S »

certes mais pourquoi mon #PB_EventType_LeftClick ne fonctionne pas ?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: Rafraichissement sur EventType()

Message par boddhi »

PureBasic a écrit :Les évènements suivants sont disponibles par l'intermédiaire d'EventType():
#PB_EventType_Change : Le texte a été modifié par l'utilisateur.
#PB_EventType_Focus : Le StringGadget obtient le focus.
#PB_EventType_LostFocus : Le StringGadget a perdu le focus.
Tu seras probablement obligé de passer par un callback pour détecter un évènement de type LeftClick...
Je vais rechercher la constante windows...
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: Rafraichissement sur EventType()

Message par boddhi »

Une première approche (mais l'évènement n'est pas détecté lors de la prise de focus...)

Code : Tout sélectionner

Enumeration
  #LDV
  #ADD
  #ADD2
EndEnumeration

Global adr$
adr$="http://google.fr"

If OpenWindow(#LDV, 450, 200, 613, 488, "WEB LINK SNIFFER", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
  StringGadget(#ADD, 5, 5, 600, 25, adr$, #PB_String_LowerCase|#WS_BORDER)
  StringGadget(#ADD2, 5, 40, 600, 25, adr$, #PB_String_LowerCase|#WS_BORDER)
  
  Repeat
    Select WaitWindowEvent()
      Case #WM_LBUTTONDOWN
        Select GetActiveGadget()
          Case #ADD
            Debug "Click"
            SetGadgetText(#ADD,"http://")
        EndSelect
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #ADD
            Select EventType()
            EndSelect 
        EndSelect
      Case #PB_Event_CloseWindow
        Select EventWindow()
          Case #LDV
            CloseWindow(#LDV)
            Break
        EndSelect
    EndSelect
  ForEver
EndIf
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: Rafraichissement sur EventType()

Message par boddhi »

Seconde approche qui me semble plus cohérente qu'avec le LeftClick pcq, imaginons que tu aies déjà tapé quelque chose dans le SringGadget, si tu souhaites te déplacer de nouveau dedans à l'aide de la souris, le contenu se réinitialisera automatiquement alors qu'avec le focus, cela ne se produira uniquement que lorsque tu (sortiras et) entreras de nouveau dans le StringGadget :

Code : Tout sélectionner

Enumeration
  #LDV
  #ADD
  #ADD2
EndEnumeration

Global adr$
adr$="http://google.fr"

Procedure.i Fc_CallBack(ArgFenetre,ArgMessage,ArgWParam,ArgLParam)
  Define.i ValeurRetour,Evenmt,Gadget
  ValeurRetour=#PB_ProcessPureBasicEvents
  Select ArgMessage
    Case #WM_COMMAND
      Evenmt=ArgWParam>>16
      Gadget=ArgWParam&$FFFF
      Select Gadget
        Case #ADD
          Select Evenmt
            Case #EN_SETFOCUS
              SetGadgetText(#ADD,"http://")
            ;Case #EN_KILLFOCUS
            ;Case #EN_UPDATE
          EndSelect
      EndSelect
  EndSelect
  ProcedureReturn ValeurRetour
EndProcedure

If OpenWindow(#LDV, 450, 200, 613, 488, "WEB LINK SNIFFER", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
  StringGadget(#ADD, 5, 5, 600, 25, adr$, #PB_String_LowerCase|#WS_BORDER)
  StringGadget(#ADD2, 5, 40, 600, 25, adr$, #PB_String_LowerCase|#WS_BORDER)
  SetWindowCallback(@Fc_CallBack(),#LDV)
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #ADD
            Select EventType()
            EndSelect 
        EndSelect
      Case #PB_Event_CloseWindow
        Select EventWindow()
          Case #LDV
            CloseWindow(#LDV)
            Break
        EndSelect
    EndSelect
  ForEver
EndIf
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Rafraichissement sur EventType()

Message par Ar-S »

Merci boddhi, c'est intéressant même si je trouve cela étrange de devoir ajouter un callback a des fonctions censées être natives.
A terme c'est pour détecter des mouvements de pages web et les url.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: Rafraichissement sur EventType()

Message par boddhi »

Ar-S a écrit :Merci boddhi, c'est intéressant même si je trouve cela étrange de devoir ajouter un callback a des fonctions censées être natives.
Le "souci" est bien là, c'est que ce type d'évènement pour ce type de gadget n'est pas natif en PB...
Pourquoi ??? Franchement, je suis bien incapable de le dire :wink:
Ar-S a écrit :A terme c'est pour détecter des mouvements de pages web et les url.
"WEB LINK SNIFFER"
On s'en serait pas douté :lol:
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Rafraichissement sur EventType()

Message par Ar-S »

boddhi a écrit :
Ar-S a écrit :A terme c'est pour détecter des mouvements de pages web et les url.
"WEB LINK SNIFFER"
On s'en serait pas douté :lol:
héhé :mrgreen:
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Rafraichissement sur EventType()

Message par MLD »

boddhi a écrit :Le "souci" est bien là, c'est que ce type d'évènement pour ce type de gadget n'est pas natif en PB...
Il est rare dans un stringGadget d'avoir a éxécuter une action a partir d'un clic de souris. Par contre tu peux faire une action a partir du clavier par un menu bidon,avec AddKeyboardShortcut .

Code : Tout sélectionner

AddKeyboardShortcut(#fen, #PB_Shortcut_Return, 0) ; menu bidon pour traitement du clavier dans les stringGadgjet
Repeat
 Event = WaitWindowEvent() 
  If Event = #PB_Event_Menu 
      Select EventMenu();pour ok dans les string
        Case 0
        ;ton code
      endselect
  endif   
 ect...   
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Rafraichissement sur EventType()

Message par kernadec »

bonjour
merci, boddhi pour l'option callback ça va m'aider pour deux trois truc ou je savais plus quoi faire :wink:
mais l'idée de zaphod est la bonne , merci!

Cordialement

Code : Tout sélectionner

Enumeration
	#LDV
	#ADD
EndEnumeration

Global adr$
adr$="http://google.fr"

If OpenWindow(#LDV, 450, 200, 613, 488, "WEB LINK SNIFFER", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
	StringGadget(#ADD, 5, 5, 600, 25, adr$, #PB_String_LowerCase|#WS_BORDER)
	
	Repeat
		Select WaitWindowEvent()
			Case #PB_Event_Gadget
				Select EventGadget()
					Case #ADD 
					  Select EventType()
					      Case #PB_EventType_Focus
								Debug "clic"
								SetGadgetText(#ADD,"http://")
						EndSelect  
				EndSelect
				
			Case #PB_Event_CloseWindow
				Select EventWindow()
					Case #LDV
						CloseWindow(#LDV)
						Break
				EndSelect
		EndSelect
	ForEver
EndIf
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: Rafraichissement sur EventType()

Message par boddhi »

kernadec a écrit :mais l'idée de zaphod est la bonne
:oops: Mais diable pourquoi faire simple quand on peut faire compliqué !!! :lol:
C'est vrai, #Pb_Event_Focus est plus simple et présente l'avantage d'être multiOS.
Je l'ai oublié quand j'ai posté ce code, tellement l'habitude d'utiliser cette procédure...
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Rafraichissement sur EventType()

Message par Backup »

....;...............
Dernière modification par Backup le dim. 20/mars/2011 13:25, modifié 1 fois.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Rafraichissement sur EventType()

Message par Backup »

note qu'au lieu d'utiliser un bouton pour remettre en etat le flag
j'aurions pu aussi utiliser l'appuis sur une touche précise (entrée par ex ;) )
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Re: Rafraichissement sur EventType()

Message par GeBonet »

Salut,
@Ar-s Voilà un condensé de code glané un peu partout...
DON la forme d'utilisation d'"Eventype()..."
Et leurs utilisation, et détection des "Click",
Si ça peu servir... :wink:

Code : Tout sélectionner

; **********************************************************
; Detecte les Click / Mouvements et Roulette souris
; **********************************************************
;
Enumeration 
    #Window_0
EndEnumeration

#WM_MOUSEWHEEL = $20A
#WHEEL_DELTA = 120
;
If OpenWindow(#Window_0, 0, 0, 425, 350, "Exemple", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
  Texte1$="ou là : "
  Texte0$="ICI   : "
  PanelGadget(0, 10, 10, 400, 300)
    AddGadgetItem(0, 0, "onglet 1")
    AddGadgetItem(0, 1, "onglet 2")
    TextGadget(11,10,10,50,20,Texte0$)
  PanelGadget(1, 10, 30, 400, 300)
    AddGadgetItem(1, 0, "onglet 11")
    AddGadgetItem(1, 1, "onglet 12")
    TextGadget(10,10,20,50,20,Texte1$)
    
  CloseGadgetList()

EndIf
;{- Event loop
; ******************************************** Debut de la boucle ************************************
Repeat
	; Debug "**********************************deb_boucle **************************************** " + f_n(mclickd) + " " + f_n(meg)
	chaine$ = ""
    ;WE = WindowEvent(); ne pas mettre cette fonction en service sous risque de dysfonctionnement
	WWE = WaitWindowEvent()
	Fenetre = EventWindow()
	EG = EventGadget()
	ET = EventType()
	EM = EventMenu()
	EWP = EventwParam()
	ELP = EventlParam()
	;******************************************************************************************
	Select WWE
		Case #PB_Event_CloseWindow
			End
		Case #WM_LBUTTONDOWN ;"Bouton gauche appuyé")
				Debug "Clic avec le bouton gauche de la souris  Gadget="+Str(EG)+" etat="+Str(GetGadgetState(EG))
		Case #WM_RBUTTONDOWN ;"Bouton droit appuyé")
			Debug "Clic avec le bouton droit de la souris Gadget="+Str(EG)+" etat="+Str(GetGadgetState(EG))
		Case #WM_LBUTTONUP ;"Bouton gauche relaché")
		Case #WM_RBUTTONUP ;"Bouton droit relaché")
		Case #WM_MBUTTONDOWN ;"Bouton du milieu appuyé"
		Case #WM_MBUTTONUP ;"Bouton du milieu relaché")
		Case #WM_LBUTTONDBLCLK ;"Double clic gauche")
			Debug "Double-clic avec le bouton gauche de la souris Gadget="+Str(EG)+" etat="+Str(GetGadgetState(EG))
		Case #WM_RBUTTONDBLCLK ;"Double clic droit")
			Debug "Double-clic avec le bouton droit de la souris Gadget="+Str(EG)+" etat="+Str(GetGadgetState(EG))
		Case #WM_MBUTTONDBLCLK ;"Double clic du milieu")
      Debug "Double-clic avec la roulette du Milieu de la souris Gadget="+Str(EG)+" etat="+Str(GetGadgetState(EG))
		Case #WM_MOUSEWHEEL
			Molette.l = -(EWP>>16)/#WHEEL_DELTA
			If Molette>0 ;"Molette en avant de
		    Debug "Molette Arrière de la souris Gadget="+Str(EG)+" etat="+Str(GetGadgetState(EG))
			ElseIf Molette<0 ;"Molette en arrière de
		    Debug "Molette avant de la souris Gadget="+Str(EG)+" etat="+Str(GetGadgetState(EG))
			EndIf
		Case #WM_MOUSEMOVE
        ;Debug "Déplacement de la souris Gadget="+Str(EG)+" etat="+Str(GetGadgetState(EG));   OK 
		Case #PB_Event_Gadget
			Select ET
			  Case #PB_EventType_LeftClick        ;"Image : Bouton gauche appuyé"
				Case #PB_EventType_LeftDoubleClick  ;"Image : Double clic gauche")
				Case #PB_EventType_RightClick       ;"Image : Bouton Droit appuyé"
				Case #PB_EventType_RightDoubleClick ;"Image : Double clic droit")
			EndSelect
			Debug "EvenType : "+Str(ET)
		Case #PB_Event_Repaint
		  StartDrawing(WindowOutput(#Window_0))
			;DrawImage(ImageID(Frame3D_5), 792, 97)
			;DrawImage(ImageID(1), 320, 80)
			;DrawImage(ImageID(2), 320, 200)
			StopDrawing()
    Case #WM_CHAR 
      Car=EventwParam()
      If Car<>8 Or Car<>13 Or Car<>27
        Debug "#CHAR:    " + Str(Car)+" "+Chr(Car) 
        Texte0$="ou là : "+Chr(Car)
        SetGadgetText(10,Texte0$)
      Else 
        Debug "#CHAR:    " + Str(Car)
      EndIf 
    Case #WM_KEYDOWN 
      Debug "#KEYDOWN: " + Str(EventwParam()) 
    Case #WM_KEYUP 
      Debug "#KEYUP:   " + Str(EventwParam()) 
    Case #WM_DEADCHAR 
      Debug "#DEADCHAR:   " + Str(EventwParam()) 
    Case #WM_SYSCHAR 
      Debug "#SYSCHAR:   " + Str(EventwParam()) 
    Case #WM_SYSKEYDOWN 
      Debug "#SYSKEYDOWN:   " + Str(EventwParam()) 
    Case #WM_SYSKEYUP 
      Debug "#SYSKEYUP:   " + Str(EventwParam()) 
	EndSelect
	; *************************************** fin de la boucle *****************************************
	; Until WE = #PB_Event_CloseWindow Or WWE = #PB_Event_CloseWindow
ForEver
;******************************* fin du PRG *************************************************
End 
Windows 7 et Windows 8.1 Pb 5.0 jusque 5.24 Lts 64 et 5.3 (64)/b]
“Ceux qui rêvent éveillés ont conscience de mille choses qui échappent à ceux qui ne rêvent qu’endormis.”
-Edgar Allan Poe-
Répondre