Lancer un événement KeyPress à partir d'une autre procédure

Signaler
Messages postés
31
Date d'inscription
samedi 20 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2006
-
japee
Messages postés
1715
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
2 décembre 2019
-
Bonjour à tous, j'utilise l'événement "Keypress" d'une editbox.
Lorsque cet événement est activé, si la touche pressée est "Enter", j'éxécute des oprérations.

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
if key = #13 then
.......

J'aimerais lancer l'événement à partir d'une procédure. Par exemple, quand je veux lancer la procédure d'un bouton à partir d'une autre procédure, je fais : bouton1click(nil)

J'aimerais faire la même chose ici mais je n'arrive pas à entrer les bons paramètres. J'ai essayé ce qui suit mais ça ne marche pas : Edit1KeyPress(nil; #13);

Si quelqu'un peut m'aider ce serait super sympa. Je vous remercie. Bonne prog
Tof

9 réponses

Messages postés
221
Date d'inscription
samedi 10 mai 2003
Statut
Membre
Dernière intervention
2 juin 2005
1
Désole de ce faux espoir, je me permets d'ecrire uniquement pour rececoir la reponse par email. Si quelqu'un apporte la réponse, je l'aurai aussi...

J'ai deja eu ce probleme sans le resoudre.
Messages postés
31
Date d'inscription
samedi 20 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2006

C pratique, je pose les questions et j'y répond moi-même :-) Une illumination... KeyPress reçoit deux arguments : Sender et key. Ce sont tous les deux des paramètres par référence (je confond tjs référence et valeur, j'espère que ce que je dis est juste)

Donc, si on veut déclencher l'événement KeypRess d'un edit à partir d'une autre procédure et qu'on fait ceci :
Edit1.OnkeyPress(edit1,#13); ... c pas bon car #13 est une constante, on doit lui donner une variable.
I suffit de déclarer une variable comme ceci :

var
ctemp : char;

Dans le code :
ctemp := #13;
Edit1.OnkeyPress(edit1,ctemp);

Et voila, ça fonctionne g essayé. J'espère m'être bien exprimé, en cas de problèmes, réécrivez moi un mot.
Bonne prog
Tof
Messages postés
1715
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
2 décembre 2019
3
Tof, tu es génial !
Ca faisait 1 heure que je me pétais la tronche là-dessus :-p
Félicitations !
Bonne prog', à +
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
26
J'ai du mal à croire que ce soit Japee qui emploie un tel vocabulaire. On se relâche ?

Attention, la méthode utilisée par tof.p est peu "orthodoxe" à la ligne suivante :
Edit1.OnkeyPress(edit1,ctemp);


On utilisera plutôt ce style pour affecter une méthode quelconque à l'évènement OnKeyPress d'un composant :
  //Affectation d'une méthode:
  Edit1.OnKeyPress := Edit1KeyPress;
  
  //Annulation d'une méthode affectée
  Edit1.OnKeyPress := Nil;


Revenons en à la question posée. Il suffit d'appeler la méthode déjà écrite dans le code :
Edit1KeyPress(Edit1, cTemp);


Bref, pas de quoi "se péter la tronche". >:)
Messages postés
1715
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
2 décembre 2019
3
Désolé pour le relâchement, Delphiprog.
J'avais "interprété" la solution à tof, et n'en avais perçu que la résolution au problème sur lequel je me "pétais la tronche" (pardon!), à savoir qu'il fallait passer une variable et non une constante pour faire appel à Edit1KeyPress.
Sinon, forcément, sans problème, tout à fait d'accord avec ce que tu dis, manquerait plus que...
Merci d'être encore présent sur ce forum, on a besoin de tes lumières, c'est clair (si j'ose dire).

PS: "no problem", j'ai toujours la boîte de Doliprane à portée de la main au cas où :-p
Messages postés
1715
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
2 décembre 2019
3
Pour aller au fond des choses, Delphiprog, quelque chose me trouble.

Quel que soit le premier paramètre passé, par exemple :

Edit1KeyPress(Edit1, cTemp);
Edit1KeyPress(nil, cTemp);
Edit1KeyPress(sender, cTemp);
Edit1KeyPress(Composant_quelconque_sur_la_fiche, cTemp);


l'évènement Edit1.OnKeyPress sera toujours déclenché.

Le premier paramètre n'aurait donc pas beaucoup d'importance ??????

Merci d'avance :approve)
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
26
Tant que tu n'exploites pas le premier paramètre dans le code de Edit1KeyPress, tu peux passer ce que tu veux (même Nil).

En l'occurrence, tout ce qui intéressait tof.p était de connaitre le caractère de la touche frappée et non le composant qui a déclenché l'évènement.
Messages postés
31
Date d'inscription
samedi 20 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2006

Exact, je n'exploite pas le sender dans mon code, tout ce qui m'intéressait, c'était de simuler la pression de enter dans mon edit.

Tof
Messages postés
1715
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
2 décembre 2019
3
Très très intéressant, merci pour ton explication, Delphiprog.
Et merci à Tof d'avoir soulevé/résolu le problème ;)
Bonne prog' dominicale.