PureBasic

Forums PureBasic
Nous sommes le Dim 20/Oct/2019 14:55

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 8 messages ] 
Auteur Message
 Sujet du message: Interception de la touche <Entrée> et Form Designer
MessagePosté: Mer 01/Mar/2017 16:44 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 14/Juin/2016 12:31
Messages: 26
Bonjour,

J’utilise (en suivant les conseils délivrés sur ce forum) le « Form Designer » pour créer l’interface et cela fonctionne très bien sauf pour un détail.

Dans mon interface, j’ai un StringGadget pour saisir une chaîne de caractères et je veux lancer un traitement sur cette chaîne quand on appuie sur la touche Entrée.

Sur le forum, j’ai repéré et testé avec succès l’utilisation d’ « AddKeyboardShortcut » qui marche parfaitement si j’ajoute le code après coup dans le fichier « .PBF » mais les modifications disparaissent quand je bascule du mode « code » au mode « design ».

Quelqu’un connaitrait-il le super truc pour conserver les modifications dans le codes PBF ou pour intercepter l’action sur la touche Entrée dans le code du fichier « .PB » ?

Par avance merci,


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Interception de la touche <Entrée> et Form Designer
MessagePosté: Mer 01/Mar/2017 17:13 
Hors ligne

Inscription: Sam 08/Fév/2014 15:19
Messages: 1616
le « Form Designer » supprime à chaque bascule tout ce qu'il n'a pas généré lui-même.
C'est plus simple et rapide que de traiter tout ce que peut "inventer" l'utilisateur :mrgreen:

Seules les modification manuelles de contenu de chaine de caractères ou les valeurs numériques sont acceptées.

Pour ajouter un raccourci clavier (autre que pour les menus), tu mets la ligne
dans le code principal, après la commande OpenWindow_0()
Code:
XIncludeFile "... .pbf"
...
OpenWindow_0()
...
AddKeyboardShortcut(#Window_0, #PB_Shortcut_...

:wink:

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


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Interception de la touche <Entrée> et Form Designer
MessagePosté: Mer 01/Mar/2017 17:19 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 14/Juin/2016 12:31
Messages: 26
Merci Marc,

J'ai tenté ce que tu proposes mais je ne sais pas comment traiter l'interruption dans le code .PB.

J'ai fait de nombreux essais tous plus tordus les uns que les autres.

Cordialement.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Interception de la touche <Entrée> et Form Designer
MessagePosté: Mer 01/Mar/2017 17:31 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6856
Localisation: IDF (Yvelines)
Les explications de Marc sont pourtant claires.

Poste un code simple de ton formulaire pour qu'on puisse poster le code finale incluant l'interception de la touche entré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: Interception de la touche <Entrée> et Form Designer
MessagePosté: Mer 01/Mar/2017 17:33 
Hors ligne

Inscription: Sam 08/Fév/2014 15:19
Messages: 1616
Le système est un peu bizarre à comprendre car il faut créer un menu même si on ne l'affiche pas 8)

Exemple

Test_Shortcut.pbf
Code:
;
; This code is automatically generated by the FormDesigner.
; Manual modification is possible to adjust existing commands, but anything else will be dropped when the code is compiled.
; Event procedures needs to be put in another source file.
;

Enumeration FormWindow
  #Window_0
EndEnumeration

Enumeration FormGadget
  #String_0
EndEnumeration


Procedure OpenWindow_0(x = 0, y = 0, width = 385, height = 65)
  OpenWindow(#Window_0, x, y, width, height, "Hello World", #PB_Window_SystemMenu)
  StringGadget(#String_0, 15, 20, 355, 25, "")
EndProcedure


Test_Shortcut.pb
Code:
XIncludeFile "Test_Shortcut.pbf"

Procedure OK()
     MessageRequester("Saisie", "Vous avez entré: " + #CRLF$ + GetGadgetText(#String_0))     
EndProcedure

OpenWindow_0()

CreateMenu(0, WindowID(0))
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Return, 15)

BindMenuEvent(0, 15, @OK())

While WaitWindowEvent() <> #PB_Event_CloseWindow : Wend


Enregistre ces deux fichiers dans le même répertoire
Lance le deuxième
Saisie du texte et valide l'entrée

:wink:

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


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Interception de la touche <Entrée> et Form Designer
MessagePosté: Mer 01/Mar/2017 17:44 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6856
Localisation: IDF (Yvelines)
Pas besoin de menu Marc. BindEvent(Event, @Callback() [, Window [, Object [, EventType]]])
Code:
...
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Return, 15)
BindEvent(#PB_Event_Menu, @OK(), 0, 15) ;0 : Constante de la fenetre
...

_________________

➽ 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: Interception de la touche <Entrée> et Form Designer
MessagePosté: Mer 01/Mar/2017 17:50 
Hors ligne

Inscription: Sam 08/Fév/2014 15:19
Messages: 1616
falsam a écrit:
Pas besoin de menu Marc. BindEvent(Event, @Callback() [, Window [, Object [, EventType]]])
...
Super!
Merci falsam, je n'avais pas regardé de ce côté là 8)

@François
Variante si jamais tu utilises la méthode classique
Code:
XIncludeFile "Test_Shortcut.pbf"

OpenWindow_0()

CreateMenu(0, WindowID(0))
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Return, 15)

Repeat
     Select WaitWindowEvent()
               
          Case #PB_Event_CloseWindow
               Break
               
          Case #PB_Event_Menu
               Select EventMenu()
                    Case 15
                         MessageRequester("Saisie",
                                          "Vous avez entré: " +
                                          #CRLF$ + GetGadgetText(#String_0))   
               EndSelect
               
     EndSelect
ForEver

:wink:

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


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Interception de la touche <Entrée> et Form Designer
MessagePosté: Mer 01/Mar/2017 17:52 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 14/Juin/2016 12:31
Messages: 26
@Marc,

MERCI ! Cela fonctionne parfaitement comme je le souhaite.

J'avais tenté la création d'un menu dans le PB mais le truc du "BindMenuEvent", je n'y avais pas pensé.

La doc de PureBasic est particulièrement bien faite et j'admets que pour une question comme la mienne, il est difficile de l'anticiper. Donc vive les forums.

@falsam : cela fonctionne également et c'est plus simple et concis.

Encore merci, vous êtes des As.


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

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 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 à:  

 


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