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

L_art_ment 316 Messages postés vendredi 21 septembre 2007Date d'inscription 6 février 2013 Dernière intervention - 8 juin 2008 à 13:33 - Dernière réponse : Guillemouze 1015 Messages postés samedi 25 octobre 2003Date d'inscription 29 août 2013 Dernière intervention
- 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
Caribensila 2684 Messages postés jeudi 15 janvier 2004Date d'inscription 26 juillet 2018 Dernière intervention - 8 juin 2008 à 14:24
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 !

Merci Caribensila 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 69 internautes ce mois-ci

Commenter la réponse de Caribensila
HAFTARIFOUAD 298 Messages postés mercredi 5 septembre 2007Date d'inscription 6 janvier 2011 Dernière intervention - 8 juin 2008 à 13:51
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
L_art_ment 316 Messages postés vendredi 21 septembre 2007Date d'inscription 6 février 2013 Dernière intervention - 8 juin 2008 à 14:11
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
L_art_ment 316 Messages postés vendredi 21 septembre 2007Date d'inscription 6 février 2013 Dernière intervention - 8 juin 2008 à 14:34
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
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 9 juin 2008 à 01:52
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
Guillemouze 1015 Messages postés samedi 25 octobre 2003Date d'inscription 29 août 2013 Dernière intervention - 9 juin 2008 à 13:58
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
Caribensila 2684 Messages postés jeudi 15 janvier 2004Date d'inscription 26 juillet 2018 Dernière intervention - 9 juin 2008 à 14:52
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
Guillemouze 1015 Messages postés samedi 25 octobre 2003Date d'inscription 29 août 2013 Dernière intervention - 9 juin 2008 à 18:25
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
L_art_ment 316 Messages postés vendredi 21 septembre 2007Date d'inscription 6 février 2013 Dernière intervention - 9 juin 2008 à 18:28
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
Caribensila 2684 Messages postés jeudi 15 janvier 2004Date d'inscription 26 juillet 2018 Dernière intervention - 9 juin 2008 à 18:56
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
L_art_ment 316 Messages postés vendredi 21 septembre 2007Date d'inscription 6 février 2013 Dernière intervention - 9 juin 2008 à 20:17
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
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 9 juin 2008 à 23:13
0
Merci
touches :

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

Commenter la réponse de f0xi
Guillemouze 1015 Messages postés samedi 25 octobre 2003Date d'inscription 29 août 2013 Dernière intervention - 9 juin 2008 à 23:38
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.