Page 1 sur 1
[RESOLU] Click sur TextGadget
Publié : dim. 06/mai/2018 13:29
par omega
Bonjour,
Après plusieurs tentatives, je n'ai pas réussi finalement à détecter UN CLIC sur un TextGadget. J'ai créé un menu formé par des textGadget qui changent de couleur au passage de la souris, mais quand on clique sur un menu (textGadget) rien ne se passe. Comment savoir si on a cliqué sur une zône texte? J'ai essayé d'utiliser #PB_EventType_LeftClick mais sans résultat.
Merci
Re: Evènement clic sur textgadget
Publié : dim. 06/mai/2018 13:49
par Marc56
Le TextGadget n'est pas un gadget interactif, c'est juste un étiquette.
Le plus simple est d'utiliser des ImageGadgets dont on créé l'image "texte" dynamiquement. (Startdrawing/DrawText/StopDrawing)
L'imageGadget supporte en plus le clic simple, double, gauche, droit.
Re: Evènement clic sur textgadget
Publié : dim. 06/mai/2018 13:54
par falsam
un minimum de code aurait été bien.
Comme l'a dit Marc, TextGadget() n'a pas d'évenement natif.
Par contre tu peux utiliser la constance API #SS_NOTIFY
Code : Tout sélectionner
OpenWindow(0, 0, 0, 800, 600,"Event TextGadget()")
TextGadget(0, 20, 20, 100, 22, "Item de menu", #SS_NOTIFY)
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
Select EventGadget()
Case 0
Debug "click"
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow
Re: Evènement clic sur textgadget
Publié : dim. 06/mai/2018 14:26
par microdevweb
Une autre solution est d'utiliser un canvas comme container, tous les traitements événementiels sont alors possible.
Code : Tout sélectionner
Enumeration
#mainForm
#txtGadget
#canvasGadget
EndEnumeration
Procedure exit()
CloseWindow(#mainForm)
End
EndProcedure
Procedure _eventText()
Select EventType()
Case #PB_EventType_MouseEnter
Debug "sourris sur le texte"
Case #PB_EventType_LeftClick
Debug "click sur le texte"
EndSelect
EndProcedure
OpenWindow(#mainForm,0,0,800,600,"Teste",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
; le canvas qui va servir de container
CanvasGadget(#canvasGadget,350,300,100,30,#PB_Canvas_Container)
TextGadget(#txtGadget,0,0,100,30,"Hello")
CloseGadgetList()
BindEvent(#PB_Event_CloseWindow,@exit(),#mainForm)
BindGadgetEvent(#canvasGadget,@_eventText())
Repeat:WaitWindowEvent():ForEver
Re: Evènement clic sur textgadget
Publié : dim. 06/mai/2018 23:27
par omega
Merci à vous tous !
La solution de Falsam marche bien, en attendant de tester celle du Canevas, je réitère mes sincères remerciements.
Bonne continuation
Re: [RESOLU] Click sur TextGadget
Publié : lun. 07/mai/2018 7:34
par Marc56
Il faut cependant se méfier, car si un paramètre d'une fonction n'est pas dans la
doc officielle, cela veut dire que cela ne fonctionnera peut être plus dans la version suivante de PB
... donc tu peux avoir à refaire une grande partie de ton programme ou être obligé de rester à une certaine version de PB.
Pour assurer la pérennité d'une application, rester au maximum dans le jeu de fonctions proposé par le développeur.
Re: [RESOLU] Click sur TextGadget
Publié : lun. 07/mai/2018 9:01
par MLD
regarde avec ceci
Code : Tout sélectionner
#Fenetre = 0
#TexteGadget0 = 0
OpenWindow(#Fenetre, 0, 0, 270, 160, "TextGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TextGadget(#TexteGadget0, 10, 10, 250, 20, "Gadget texte standard (texte aligné à gauche)", #SS_NOTIFY)
; #SS_NOTIFY detecte uniquement un clic avec le bouton gauche de la souris
Repeat
Evenement = WaitWindowEvent()
Select Evenement
Case #PB_Event_Gadget
If EventGadget() = #TexteGadget0
Debug "#TexteGadget0 cliqué"
EndIf
EndSelect
Until Evenement = #PB_Event_CloseWindow
Re: [RESOLU] Click sur TextGadget
Publié : lun. 07/mai/2018 9:41
par falsam
@MLD : Commenter quand le sujet est résolu pourquoi pas si ça apporte quelques chose de plus. Mais là ce n'est pas le cas car c'est la solution que j'ai donné plus haut et qu'Omega a validée.
Re: [RESOLU] Click sur TextGadget
Publié : lun. 07/mai/2018 9:56
par venom
Ou sans APi avec la fonction
HyperLinkGadget
Code : Tout sélectionner
If OpenWindow(0,0,0,270,160,"HyperLinkGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
HyperLinkGadget(8, 10, 10,250,20,"Lien rouge", RGB(255,0,0))
SetGadgetFont(1, LoadFont(8, "Arial", 12))
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget
Select EventGadget()
Case 8
Debug "clic"
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
EndIf
Bien évidement tout dépend si ça colle avec ton interface.
@++
Re: [RESOLU] Click sur TextGadget
Publié : mar. 08/mai/2018 21:39
par mestnyi
Re: [RESOLU] Click sur TextGadget
Publié : mar. 08/mai/2018 23:07
par GallyHC
Bonjour,
Avec le code de "Falsam", et donc avec l'utilisation de "#SS_NOTIFY" en option, il y a un comportement un peu étrange au double-clic gauche. Reprenez le code de "Falsam" (je met en dessous).
Code : Tout sélectionner
OpenWindow(0, 0, 0, 800, 600,"Event TextGadget()")
TextGadget(0, 20, 20, 100, 22, "Item de menu", #SS_NOTIFY)
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
Select EventGadget()
Case 0
Debug "click"
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow
Executer le code comme normal et faites un double clique gauche de la souris. Allez dans n'importe qu'elle éditeur de texte (notepad, notepad++, ...) et faites un coller, si c'est comme moi le texte du textgadget à été placer dans le clipboard.
Cordialement,
GallyHC