OnKeyPress non détécté [Résolu]

Messages postés
316
Date d'inscription
vendredi 21 septembre 2007
Dernière intervention
6 février 2013
- - Dernière réponse : Guillemouze
Messages postés
1015
Date d'inscription
samedi 25 octobre 2003
Dernière intervention
29 août 2013
- 9 juin 2008 à 23:38
         Mes cieux d'âmes bonjour 

   Je vous reviens avec un nouveau petit soucis, bêtte je pense, mais je ne trouve pas le pourquoi du comment ...
Déjà désolé si je ne poste pas dans le bon thème mais je ne savais pas lequel correspondait le mieux à mon soucis.

   Alors passont aux choses sérieuses, je vous expose mon soucis...

   Je suis en train de passer mon temps à me faire un petit lecteur media, bon il y en a des milliers sur Delphifr mais pas d'inquiétudes je ne vais pas le poster comme source lol c'est juste que je fais ma petite interface sympathique à moi bref...

   Donc j'utilise des images sur ma forme, j'ai posé sur l'une des images une listebox, laquelle contient la liste des titres à écouter,
Je souhaiterai utiliser l'évènement OnKeyPress de cette listebox pour supprimer des titres de la liste... Mais lorsque je lance l'exe, j'ai l'impression qu'il ne détècte pô que j'appuie sur "suppr", je vous montre le code que j'utilise :

procedure TFrmPrincipale.LBChansonsKeyPress(Sender: TObject; var Key: Char);
var i : integer;
begin
if (key=Chr(VK_DELETE)) then
  begin
  showmessage('ok');
    with LBChansons do
      begin
        for i := Count-1 downto 0 do
          if selected[i] then
            Items.Delete(i);
      end;
  end;
end;

(Le showmessage est là pour le test seulement et il ne s'affiche même pô...)

   Donc à l'éxecution rien ne se passe lorsque je tape "suppr" et que j'ai séléctionné des items... Serai-ce un probléme de parent (puisque ma ListBox est sur une image), ou autre problème, je ne vois pô...

   Merci de votre lumiére bibliquo-Delphiste en ce jour du seigneur, Amen 
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
Messages postés
2684
Date d'inscription
jeudi 15 janvier 2004
Dernière intervention
26 juillet 2018
3
Merci
Salut,



Il faut utiliser les événements OnKeyDown ou OnKeyUp de ta ListBox.

L'événement OnKeyPress enregistre le caractère ASCII correspondant à la touche enfoncée, mais la touche Suppr est une touche non-ASCII.

Et pas besoin de KeyPreview := true !

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 95 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Caribensila
Messages postés
298
Date d'inscription
mercredi 5 septembre 2007
Dernière intervention
6 janvier 2011
0
Merci
Bonjour

Désolé pour mon message qui s'affiche pas:

Je pense que vous avez oublier de vaalider KeyPreview de votre TForm

KeyPreview:=True;
Commenter la réponse de HAFTARIFOUAD
Messages postés
316
Date d'inscription
vendredi 21 septembre 2007
Dernière intervention
6 février 2013
0
Merci
      Bonjour Haftarifouad,

   Merci pour votre rapide réponse, mais même ayant rajouté KeyPreview:=true; dans le OnCreate de ma Form ca ne change rien ...
Commenter la réponse de L_art_ment
Messages postés
316
Date d'inscription
vendredi 21 septembre 2007
Dernière intervention
6 février 2013
0
Merci
      Ah bein oui effectivement ca marche beaucoups mieux  

   Désolé pour la question bête, me coucherais moins con s'soir! Je ne savais pas l'histoire de la touche non-ascii 

   Merci Caribensila ! Bonne journée à vous !
Commenter la réponse de L_art_ment
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
0
Merci
procedure TForm1.ListBox1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
const
  Chars : array[0..25] of char = 'abcdefghijklmnopqrstuvwxyz';
begin
  case Key of
    VK_DELETE : ListBox1.DeleteSelected;
    VK_INSERT : ListBox1.Items.Add(Chars[random(Length(Chars))]);
  end;
end;



Commenter la réponse de f0xi
Messages postés
1015
Date d'inscription
samedi 25 octobre 2003
Dernière intervention
29 août 2013
0
Merci
@cari: "touche Suppr est une touche non-ASCII."
pourtant son code ASCII est 127 !

je pense pas que keypress ai un rapport avec l'ascii ou non, je pense que seules certaines touches sont prises en compte par le keypress. Par contre, je ne sais pas quel mecanisme fait qu'une touche est ou n'est pas gérée par le keypress.
Commenter la réponse de Guillemouze
Messages postés
2684
Date d'inscription
jeudi 15 janvier 2004
Dernière intervention
26 juillet 2018
0
Merci
@Guillemouze




Extraits de l'Aide :





« Le gestionnaire d'événement OnKeyPress permet d'effectuer un traitement spécifique quand une touche correspondant à un caractère alphanumérique est enfoncée. »
-
Or, il n'y a pas de caractère correspondant à la touche SUPPR (bien qu'elle ait un code).


« Le gestionnaire OnKeyDown peut répondre à toutes les touches du clavier, y compris les touches de fonction et les combinaisons avec les touches Maj, Alt et Ctrl ainsi qu'avec les boutons de la souris. »


Pour OnKeyPress, reste le mystère de la touche retour (#8) qui répond à l'événement bien qu'il n'y ait pas de caractère associé.
 

Il faut parfois savoir ne pas trop se poser de question.
Mais si qqun a une réponse à ce mystère...
Commenter la réponse de Caribensila
Messages postés
1015
Date d'inscription
samedi 25 octobre 2003
Dernière intervention
29 août 2013
0
Merci
@cari :
"la touche Suppr est une touche non-ASCII."
" Or, il n'y a pas de caractère correspondant à la touche SUPPR (bien qu'elle ait un code)"

c'etait juste pour etre sur que les choses soient claires. La touche suppr est une touche ASCII, mais pas alphanumerique.
Commenter la réponse de Guillemouze
Messages postés
316
Date d'inscription
vendredi 21 septembre 2007
Dernière intervention
6 février 2013
0
Merci
         Hum... Effectivement j'viens de faire le test avec la touche retour et OnKeyPress... J'vais mal dormir cette nuit à cause de toi Caribensila...
Commenter la réponse de L_art_ment
Messages postés
2684
Date d'inscription
jeudi 15 janvier 2004
Dernière intervention
26 juillet 2018
0
Merci
@Guillemouze
« c'etait juste pour etre sur que les choses soient claires. »

Bein, t'as raté ton coup. 
L'aide dit bien, je cite : « Pour répondre aux touches non-ASCII ou aux combinaisons de touches, utilisez le gestionnaire d'événement OnKeyDown ou OnKeyUp ».
Donc, d'après l'Aide, SUPPR ne serait pas une touche ASCII puisqu'elle ne déclenche pas d'événement OnKeyPress.

Mais je pense comme toi que l'Aide n'est pas très explicite et qu'elle n'a pas l'air d'en savoir beaucoup plus que nous sur ce coup.

@L_art_ment
T'as le sommeil trop léger pour Windows, je pense... 
Commenter la réponse de Caribensila
Messages postés
316
Date d'inscription
vendredi 21 septembre 2007
Dernière intervention
6 février 2013
0
Merci
             Non, ce sont les yeux doux de ton toutou qui me font cet effet là

            
Commenter la réponse de L_art_ment
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
0
Merci
touches :

Echape : #27
Espace : #32
Tabulation : #9
Backspace : #8
Entrée : #13
Supprime: #127

Commenter la réponse de f0xi
Messages postés
1015
Date d'inscription
samedi 25 octobre 2003
Dernière intervention
29 août 2013
0
Merci
en tout cas, wikipedia nous informe clairement ici (comme le dit foxi de façon succincte), que la touche suppr correspond bien a un code ascii !
je pense plutôt que l'aide n'est pas très explicite; les touches non-ascii étant Alt, Ctrl, ...
Commenter la réponse de Guillemouze

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.