PureBasic

Forums PureBasic
Nous sommes le Sam 07/Déc/2019 22:16

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 11 messages ] 
Auteur Message
 Sujet du message: [RESOLU] Click sur TextGadget
MessagePosté: Dim 06/Mai/2018 13:29 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 26/Nov/2011 13:04
Messages: 474
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

_________________
Win7 (x86) 32 bits Pb 5.70


Dernière édition par omega le Dim 06/Mai/2018 23:29, édité 2 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Evènement clic sur textgadget
MessagePosté: Dim 06/Mai/2018 13:49 
Hors ligne

Inscription: Sam 08/Fév/2014 15:19
Messages: 1639
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.

_________________
Windows 10 Famille x64 + Linux (Slackware, Debian sur Oracle VirtualBox 6.0), Raspberry Pi


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Evènement clic sur textgadget
MessagePosté: Dim 06/Mai/2018 13:54 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6860
Localisation: IDF (Yvelines)
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:
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

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Evènement clic sur textgadget
MessagePosté: Dim 06/Mai/2018 14:26 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 29/Juin/2011 14:11
Messages: 1662
Localisation: Belgique
Une autre solution est d'utiliser un canvas comme container, tous les traitements événementiels sont alors possible.

Code:
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.71 beta 2


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Evènement clic sur textgadget
MessagePosté: Dim 06/Mai/2018 23:27 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 26/Nov/2011 13:04
Messages: 474
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

_________________
Win7 (x86) 32 bits Pb 5.70


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: [RESOLU] Click sur TextGadget
MessagePosté: Lun 07/Mai/2018 7:34 
Hors ligne

Inscription: Sam 08/Fév/2014 15:19
Messages: 1639
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.

:idea: Pour assurer la pérennité d'une application, rester au maximum dans le jeu de fonctions proposé par le développeur.

_________________
Windows 10 Famille x64 + Linux (Slackware, Debian sur Oracle VirtualBox 6.0), Raspberry Pi


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: [RESOLU] Click sur TextGadget
MessagePosté: Lun 07/Mai/2018 9:01 
Hors ligne

Inscription: Jeu 05/Fév/2009 17:58
Messages: 934
regarde avec ceci

Code:
#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



Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: [RESOLU] Click sur TextGadget
MessagePosté: Lun 07/Mai/2018 9:41 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6860
Localisation: IDF (Yvelines)
@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.

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: [RESOLU] Click sur TextGadget
MessagePosté: Lun 07/Mai/2018 9:56 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 29/Juil/2004 16:33
Messages: 2801
Localisation: Klyntar
Ou sans APi avec la fonction HyperLinkGadget

Code:
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. :wink:






@++

_________________
Windows 10 x64, PureBasic 5.71 Beta 1 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: [RESOLU] Click sur TextGadget
MessagePosté: Mar 08/Mai/2018 21:39 
Hors ligne

Inscription: Dim 09/Mar/2014 21:30
Messages: 4
http://www.purebasic.fr/english/viewtopic.php?f=12&t=70664&p=521916#p521892
ou utilisez ce module prêt à l'emploi. :)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: [RESOLU] Click sur TextGadget
MessagePosté: Mar 08/Mai/2018 23:07 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 17/Déc/2007 12:44
Messages: 1635
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:
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

_________________
Image

Image

Image Official site of PureBasic
Image Official site of SpiderBasic

Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.71 LTS (x86 et x64)


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 11 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  
cron

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye