OnKeyPress non détécté

[Résolu]
Signaler
Messages postés
302
Date d'inscription
vendredi 21 septembre 2007
Statut
Membre
Dernière intervention
6 février 2013
-
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
-
         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 

13 réponses

Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
18
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 !
Messages postés
256
Date d'inscription
mercredi 5 septembre 2007
Statut
Membre
Dernière intervention
6 janvier 2011

Bonjour

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

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

KeyPreview:=True;
Messages postés
302
Date d'inscription
vendredi 21 septembre 2007
Statut
Membre
Dernière intervention
6 février 2013
1
      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 ...
Messages postés
302
Date d'inscription
vendredi 21 septembre 2007
Statut
Membre
Dernière intervention
6 février 2013
1
      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 !
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
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;



Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
@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.
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
18
@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...
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
@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.
Messages postés
302
Date d'inscription
vendredi 21 septembre 2007
Statut
Membre
Dernière intervention
6 février 2013
1
         Hum... Effectivement j'viens de faire le test avec la touche retour et OnKeyPress... J'vais mal dormir cette nuit à cause de toi Caribensila...
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
18
@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... 
Messages postés
302
Date d'inscription
vendredi 21 septembre 2007
Statut
Membre
Dernière intervention
6 février 2013
1
             Non, ce sont les yeux doux de ton toutou qui me font cet effet là

            
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
touches :

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

Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
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, ...