Interception de la touche <Entrée> et Form Designer
Interception de la touche <Entrée> et Form Designer
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,
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,
Re: Interception de la touche <Entrée> et Form Designer
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
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()
C'est plus simple et rapide que de traiter tout ce que peut "inventer" l'utilisateur
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 : Tout sélectionner
XIncludeFile "... .pbf"
...
OpenWindow_0()
...
AddKeyboardShortcut(#Window_0, #PB_Shortcut_...
Re: Interception de la touche <Entrée> et Form Designer
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.
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.
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Interception de la touche <Entrée> et Form Designer
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.
Poste un code simple de ton formulaire pour qu'on puisse poster le code finale incluant l'interception de la touche entré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: Interception de la touche <Entrée> et Form Designer
Le système est un peu bizarre à comprendre car il faut créer un menu même si on ne l'affiche pas
Exemple
Test_Shortcut.pbf
Test_Shortcut.pb
Enregistre ces deux fichiers dans le même répertoire
Lance le deuxième
Saisie du texte et valide l'entrée
Exemple
Test_Shortcut.pbf
Code : Tout sélectionner
;
; 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
Code : Tout sélectionner
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
Lance le deuxième
Saisie du texte et valide l'entrée
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Interception de la touche <Entrée> et Form Designer
Pas besoin de menu Marc. BindEvent(Event, @Callback() [, Window [, Object [, EventType]]])
Code : Tout sélectionner
...
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Return, 15)
BindEvent(#PB_Event_Menu, @OK(), 0, 15) ;0 : Constante de la fenetre
...
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: Interception de la touche <Entrée> et Form Designer
Super!falsam a écrit :Pas besoin de menu Marc. BindEvent(Event, @Callback() [, Window [, Object [, EventType]]])
...
Merci falsam, je n'avais pas regardé de ce côté là
@François
Variante si jamais tu utilises la méthode classique
Code : Tout sélectionner
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
Re: Interception de la touche <Entrée> et Form Designer
@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.
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.