PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Raccourcis clavier
Raccourcis clavier
Débuté par Julien V, 03 juil. 2020 15:06 - 4 réponses
Membre enregistré
134 messages
Posté le 03 juillet 2020 - 15:06
Bonjour,

Dans l'optique d'améliorer l'expérience de mes utilisateurs je me pose quelques questions au sujet des raccourcis clavier :

Pour un champ onglet, la lettre d'appel exécute quel évènement ?
J'ai essayé des traces sur la plupart des évènements associés au champ, je n'ai pas trouvé.
Idéalement j'aimerai pouvoir utiliser une combinaison de touches (ex. Ctrl + "+") pour pouvoir ouvrir un nouvel onglet mais sans passer par la fonction Evenement.

De quelle manière peut-on calculer l'éventuelle combinaison de touches indiquées dans la propriété ..ToucheRaccourci d'un champ ?
Je sais que si je mets Ctrl + F au niveau d'une lettre d'appel, la propriété va me renvoyer 536870982 qui est la somme de trControl + Asc( "F" ) (536870912 + 70), par contre dans le sens inverse je ne vois pas quelle est la façon de décomposer 536870982 pour tomber sur 536870912 + 70.
L'idée serait de pouvoir présenter par prog les raccourcis clavier définis pour les champs qui en sont pourvus
Membre enregistré
4 363 messages
Posté le 03 juillet 2020 - 15:57
Bonjour,
En ce qui concerne le raccourcis, une solution est de créer un bouton "Hors fenêtre", et de lui affecter le raccourcis désiré. Ce bouton appellera la procédure souhaitée.

En ce qui concerne la décomposition, à moins d'utiliser la méthode "bourrin" :
-Soustraction des combinaisons possible au résultat et vérification de la validité du résultat (le résultat doit être dans les plages désirées)
Je ne vois pas

--
Il y a peut être plus simple, mais, ça tourne
Membre enregistré
310 messages
Posté le 03 juillet 2020 - 16:01
Bonjour,
Vous pouvez convertir la valeur en hexa, les 2 octets de poids faible correspondront au 70

dec : 536870982

Hex : 20 00 00 46



Bon dev.
Posté le 03 juillet 2020 - 16:13
Bonjour

la lettre d'appel d'un onglet ne semble rien faire ( PCSOFT sait peut être ... )

on ne peux pas programmer dans Windev ONGLET1..ToucheRaccourci=trControl+ASC("F") : retourne une erreur non disponible pour ce champ ; idem que ce soit un onglet normal ou dynamique

le mieux est d'avoir un bouton en dehors de l'écran ( le placer à gauche en dehors de l'écran ) avec la touche de raccourci associée Ctrl + F ; dans le code de ce bouton ouvrir un nouvel onglet ; testé avec un onglet dynamique cela fonctionne

pour le calcul inverse il suffit de tester les bornes des totaux vu qu'ils ne se chevauchent pas :
Raccourcis avec CTRL ( entre 536870977 et 536871002 de A à Z )
CTRL A : 536870977=536870912+65
CTRL B : 536870978=536870912+66
...
CTRL Z : 536871002=536870912+90

Raccourcis avec SHIFT ( entre 268435521 et 268435546 de A à Z )
SHIFT A : 268435521=268435456+65
SHIFT B : 268435522=268435456+66
...
SHIFT Z : 268435546=268435456+90

Raccourcis avec ALT ( entre 1073741889 et 1073741914 de A à Z )
ALT A : 1073741889=1073741824+65
ALT B : 1073741890=1073741824+66
...
ALT Z : 1073741914=1073741824+90

Bons devs
Membre enregistré
134 messages
Posté le 03 juillet 2020 - 17:09
Bonjour, merci pour toutes ces infos

A première vue je devrais m'en sortir avec ça, j'ai bricolé la procédure suivante :

// Infos issues de KeyConst.wl
constantesTouches est un tableau associatif de chaînes
constantesTouches[ 0x01 ] = "VK_LBUTTON"
// [...]

PROCEDURE INTERNE iproc_traduireRaccourci( _toucheRaccourci est un entier )

toucheRaccourci, valeurSansPoidsFaible est un entier
toucheControle, toucheCaractere, toucheConstante est une chaîne
combinaison est un tableau de 0 chaîne

toucheRaccourci = _toucheRaccourci
valeurSansPoidsFaible = Val( toucheRaccourci - PoidsFaible( toucheRaccourci ) )

SELON valeurSansPoidsFaible
CAS trAlt : toucheControle = "Alt"
CAS trControl : toucheControle = "Ctrl"
CAS trShift : toucheControle = "Maj"
AUTRE CAS : toucheControle = ""
FIN // SELON valeurSansPoidsFaible

SI toucheControle <> "" ALORS TableauAjoute( combinaison, toucheControle )

SI PoidsFaible( toucheRaccourci ) >= 0 ET PoidsFaible( toucheRaccourci ) <= 255 ALORS

toucheConstante = constantesTouches[ PoidsFaible( toucheRaccourci ) ]
SI toucheConstante <> "" ALORS
TableauAjoute( combinaison, toucheConstante )
SINON
toucheCaractere = Caract( PoidsFaible( toucheRaccourci ) )
SI toucheCaractere <> "" ALORS
TableauAjoute( combinaison, toucheCaractere )
FIN // SI toucheCaractere <> "" ALORS
FIN // SI toucheConstante <> "" ALORS

FIN // SI PoidsFaible( toucheRaccourci ) >= 0 ET PoidsFaible( toucheRaccourci ) <= 255 ALORS

RENVOYER TableauVersChaîne( combinaison, " + " )

FIN // PROCÉDURE INTERNE iproc_traduireRaccourci( _toucheRaccourci est un entier )


A tester si ça fonctionne pour tous les cas de figure...