Comment programmer un raccourci clavier
Stagiaire WDF
Inscrit:
11/02/2006 06:14
Post(s): 5
Bonjour à tous,

Je souhaite savoir quelle procédure utiliser pour programmer un raccourci depuis le clavier.

Par exemple, en appuyant sur la touche F2, une fenêtre apparaît.

Merci d'avance pour votre participation.

Yohann

Contribution le : 04/04/2006 21:59
Créer un fichier PDF de la contribution Imprimer


Re: Comment programmer un raccourci clavier
DSI WDF
Inscrit:
12/09/2004 11:07
De aude
Post(s): 279
bonsoir,
Vous pouvez créer un bouton et lui donner dans la description la lettre d'appel de votre choix, et rendre ou non le btn visible.
Espérant avoir aidé, bon dev!

Contribution le : 04/04/2006 22:08
_________________
...
Créer un fichier PDF de la contribution Imprimer


Re: Comment programmer un raccourci clavier
Developpeur WDF
Inscrit:
24/01/2006 13:42
De Chartres
Post(s): 142
Moi j'ai fais une classe je vous donne le source:

J'utilise les evenements cela marhce a tout moment de l'appli il suffit d'instancier l'objet dans le code du projet.

ClTouche est une classe
Num_evenement est un entier
GLOBAL
Gl_Ntouch est un entier=0
Gl_chAide est une chaîne = ""
Gl_str_Fen est une chaîne=""
Gl_str_classe est une chaîne
FIN

PROCEDURE Constructeur(monAide est une chaîne="", mafen est une chaîne="")
::Gl_chAide = monAide
::Gl_str_Fen=mafen
:Num_evenement=Evénement("::Numtouche","*.*",256)
TimerSys(::Numtouche,1,999)

PROCEDURE Destructeur()


PROCEDURE GLOBAL Numtouche()
SI (_EVE.wParam) = 116 OU (_EVE.wParam) = 112 OU (_EVE.wParam)=113 ALORS
::Gl_Ntouch=(_EVE.wParam)
SELON ::Gl_Ntouch
CAS 116:
// nomfen est une chaine= FenEnCours()
// moneffet est un ClOuvre_effet(nomfen)
// moneffet:Effet_transparent()
FinProgramme()
CAS 112: WHelp(::Gl_chAide,1)
CAS 113: _EVE.wParam=0
::Gl_Ntouch=0
Ouvre(::Gl_str_Fen)
AUTRE CAS:
_EVE.wParam=0
::Gl_Ntouch=0
FIN
FIN
_EVE.wParam=0
::Gl_Ntouch=0

Contribution le : 05/04/2006 11:07
Créer un fichier PDF de la contribution Imprimer


Re: Comment programmer un raccourci clavier
DSI WDF
Inscrit:
12/09/2004 11:07
De aude
Post(s): 279
bonsoir,
A mon avis la meilleur méthode est celle de Celtic !!
Pour ma part, j'apprends et j'étudis cette classe avec grande attention
Merci.

Contribution le : 05/04/2006 18:53
_________________
...
Créer un fichier PDF de la contribution Imprimer


Re: Comment programmer un raccourci clavier
Developpeur WDF
Inscrit:
24/01/2006 13:42
De Chartres
Post(s): 142
Bonjour c'est fais pour.
Nb:cette classe me sert dans un but précis je suis en train de l'améliorer pour faire un objet commun ou le developpeur n'aura qu'as mettre le n° d'evenement ex:112 puis le traitement qu'il veux efféctuer sur cette evenement.
En attendant Vous pouver l'utiliser en modifiant la parti PROCEDURE GLOBAL Numtouche()
Si vous ne connaissez pas bien l'objet n'hésiter pas a demander conseil

Contribution le : 06/04/2006 11:30
Créer un fichier PDF de la contribution Imprimer


Re: Comment programmer un raccourci clavier
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour Celtic,

Merci pour cette ressource.

Je vous invites dans la mesure du possible à commenter vos sources afin que ceux qui en ont besoin et surtout pour les débutants puissent comprendre le fonctionnement.

J'aimerais aussi faire remarquer quelques points à améliorer.

dans le constructeur de votre classe:
Citation :

Constructeur(monAide est une chaîne="", mafen est une chaîne="")

vous limiter en quelques sorte votre classe certes en optionnel à l'affichage d'une aide et puis à l'application sur une fenêtre, mais l'évenement lui s'applique à toutes tous les champs de toutes les fenêtres
Citation :

:Num_evenement=Evénement("::Numtouche","*.*",256)

::NumTouche : Appel d'une méthode globale qui à mon sens n'est pas justifiée puisque cette méthode d'appel n'est plus lié à l'instance de la classe.

Citation :

TimerSys(::Numtouche,1,999)

Pourquoi ajouter un timer qui va nécessiter des ressources système et ralentir l'application alors que la classe via l'évènement est déjà en attente d'un message windows(ici le N° 258 qui est le message Windows stipulant qu'une touche à été enfoncée.)

Le méthode principale de la classe NumTouche devrait plutot faire appel à une méthode locale ou bien globale en fonction de l'instantation de la classe elle même.
la classe devrait à mon avis ressembler plutot à ceci
//Déclaration de CLTouche
CLTouche est une classe
  Num_evenement est un entier							//Contient le numéro de l'évenement
  l_Ntouch est un entier=0
  l_str_procedure est une chaîne
  l_str_fen est une chaîne
  l_str_champ est une chaîne
FIN

//Méthode Init()
PROCEDURE Init(maprocedure est une chaîne, mafen est une chaîne = "*", monchamp est une chaîne = "*")
//J'utilise une méthode init plutot que constructeur pour bénéficier de l'assistance à la saise sur les paramètre de la méthode

//Ici on passe en paramètre soit:
//Que le nom de la procedure, pour une procedure globale
//Le nom de la fenetre + le nom de la procedure pour une procedure locale ex: mafen.evTouche
//on renseigne mafen si l'on veut limiter l'interception de l'évènement que sur cette fenetre
//on renseigne monchamp si l'on veut limiter sur un seu champ
sBuf est une chaîne

:l_str_procedure = maprocedure
:l_str_fen = mafen
:l_str_champ = monchamp

//Ici on construit la portée de l'évènement
sBuf = mafen
sBuf = sBuf <> "" ? mafen + "." +monchamp SINON monchamp

//On créer l'évènement et on récupère son numéro
//256 est le N° de message pour l'appui sur une touche du clavier
:Num_evenement=Evénement(":Numtouche", sBuf, 256)


//Métode NumTouche
PROCEDURE  NumTouche()
nretour est un entier
sBuf est une chaîne

QUAND EXCEPTION DANS
	//On execute la procedure défini dans le constructeur de la classe
	ExécuteTraitement( :l_str_procedure, trtProcédure,  :l_str_fen, :l_str_champ, _EVE.wParam, nretour = Null )
	
	//Ici on donne la possibilité d'inhiber la touche enfoncé en lui passant la valeur 0
	//ou bien simuler une autre touche en lui passant la valeur de cette touche.
	SI nretour <> Null ALORS _EVE.Retour = nretour
FAIRE
	//Ici on arrete le prog si la procedure n'a pas été déclarée dans le programme en lui passant la syntaxe exacte
	//Puis on copie cette syntaxte dans le presse papier pour la recopier dans le code.
	sBuf = "PROCEDURE " + :l_str_procedure + "( mafen est une chaine, monchamp est une chaine, nummessage est un entier, nretour =  Null )"	
	VersPressePapier(sBuf)
	FinProgramme("Problème déclaration de procédure, impossible de trouver la procédure :" + RC...
	      + sBuf + RC...
	      + "La déclatation de la procédure a été copiée dans le presse papier." )	      
FIN


Cette classe permet de s'adapter à la procédure créée en locale ou en globale par le développeur sans avoir à modifier la classe

On créer donc une procedure en locale suivant la syntaxe défini dans la classe
PROCEDURE evTouche( mafen est une chaine, monchamp est une chaine, nummessage est un entier, nretour = Null )
//Pour nRetour le type variant n'est pas déclaré Variant provoque une erreur et la procédure n'est plus trouvée.

SI (_EVE.wParam) = 116 OU (_EVE.wParam) = 112 OU (_EVE.wParam)=113 ALORS
	
	SELON nummessage
		CAS 116:
			FinProgramme()
		CAS 112: WHelp("<UneAide>",1)
		CAS 113: _EVE.wParam=0
			Ouvre("<Une fenetre>")
		AUTRE CAS:
                        //On peut par exemple ici hiniber la touche enfoncé en initialisant nRetour à 0
			nretour = 0
	FIN
FIN

Contribution le : 07/04/2006 12:13
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2