[RESOLU] Click sur TextGadget
[RESOLU] Click sur TextGadget
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
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
Dernière modification par omega le dim. 06/mai/2018 23:29, modifié 2 fois.
Win7 (x64) 64 bits Pb 5.72
Re: Evènement clic sur textgadget
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.
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.
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Evènement clic sur textgadget
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
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
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- microdevweb
- Messages : 1800
- Inscription : mer. 29/juin/2011 14:11
- Localisation : Belgique
Re: Evènement clic sur textgadget
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
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Work at Centre Spatial de Liège
Re: Evènement clic sur textgadget
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
La solution de Falsam marche bien, en attendant de tester celle du Canevas, je réitère mes sincères remerciements.
Bonne continuation
Win7 (x64) 64 bits Pb 5.72
Re: [RESOLU] Click sur TextGadget
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.
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
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
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: [RESOLU] Click sur TextGadget
@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.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: [RESOLU] Click sur TextGadget
Ou sans APi avec la fonction HyperLinkGadget
Bien évidement tout dépend si ça colle avec ton interface.
@++
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
@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Re: [RESOLU] Click sur TextGadget
http://www.purebasic.fr/english/viewtop ... 16#p521892
ou utilisez ce module prêt à l'emploi.
ou utilisez ce module prêt à l'emploi.
Re: [RESOLU] Click sur TextGadget
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).
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
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
Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)