IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

KEY = VK_F5 dans OnKeyDown


Sujet :

Langage Delphi

  1. #1
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut KEY = VK_F5 dans OnKeyDown
    Salut,

    J'ai écrit ce code dans l'évènement OnKeyDown, mais à l' appuie de la touche F5 rien ne se produit. La form est FsMDIChild.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    procedure TForm37.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    var croute : Integer;
    begin
      if (Key  = VK_F5) then
         begin
           if (Edit1.Text = '') or (Edit2.Text = '') then
              begin
                MessageDlg('Il faut saisir un numéro matricule et un numero d''ordre de mission!', mtWarning, [mbOK],0);
                Edit2.SetFocus;
              end
           Else
             begin
               //Recherche rpix casse croute
               Query_Prix.Sql.Clear;
               Query_Prix.sql.Add('Select ca_croute as croute from categorie');
               Query_Prix.Open;
               Croute := Query_Prix.fieldbyname('Croute').AsInteger;
               Casse.FieldByName('cc_num').value := Edit1.Text;
               Casse.FieldByName('a_matricule').value := Edit1.Text;
               Casse.FieldByName('cc_date').value := DateToStr(date);
               Casse.FieldByName('cc_prix').value := Croute;
               Casse.FieldByName('cc_cpte').value := 638300;
               Casse.FieldByName('cc_dest').value := Edit6.Text;
               //Archivage
               Query_Arch.sql.Clear;
               Query_Arch.sql.Add('Insert into compte(co_code, co_cpte, co_cout, co_mnt, co_mat)');
               Query_Arch.sql.Add('Select cc_num, cc_cpte, cc_dest, cc_prix, a_matricule from casse');
               Query_Arch.sql.Add('where cc_num = ' + QuotedStr(Edit1.text));
               Query_Arch.sql.Add('And a_matricule =' + QuotedStr(Edit2.text));
               Query_Arch.sql.Add('Group by cc_num, cc_cpte, cc_dest, cc_prix, a_matricule');
               Query_Arch.ExecSQL;
               //Rafraichissement
               Query_Casse.Sql.Clear;
               Query_Casse.sql.Add('Select agent.a_matricule, agent.a_nom, agent.a_prenom, agent.a_fonction, agent.a_cout from agent, casse');
               Query_Casse.sql.Add('Where casse.cc_num = ' + QuotedStr(Edit1.text));
               Query_Casse.sql.Add('And agent.a_matricule = Casse.a_matricule');
               Query_Casse.Open;
               Edit2.Text := '';
               Edit3.Text := '';
               Edit4.Text := '';
               Edit5.Text := '';
               Edit6.Text := '';
               Edit1.SetFocus;
             end;
        end;
    end;
    Merci pour toutes aides.

  2. #2
    Aos
    Aos est déconnecté
    Membre habitué

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Points : 187
    Points
    187
    Par défaut
    essaye comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (key in [chr(VK_F5)]) then

  3. #3
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    Salut Aos,

    Il y'a une exception : [Erreur] Frais_de_casse_croute.pas(135): Types incompatibles : 'Word' et 'Char'.

  4. #4
    Aos
    Aos est déconnecté
    Membre habitué

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Points : 187
    Points
    187
    Par défaut
    Ah oui, le "KEY" de onKeyDown est un Word est non un char
    enleve chr.

    ou alors essaye dans l'evenement onKeyPress, je l'utilise dans
    onKeyPress et ça fonctionne impeccable chez moi.

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    si l'évènement est rattaché à la fiche alors il ne se déclenchera que si tu positionnes la valeur de KeyPreview de la fiche à True mais attention, cela signifie aussi que c'est la fiche qui intercepte toutes les actions claviers au lieu des composants visuels qu'elle contient.

  6. #6
    Aos
    Aos est déconnecté
    Membre habitué

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Points : 187
    Points
    187
    Par défaut
    Guy, tu veux dire que si le focus est mis sur un Edit par exemple, ça ne marchera pas ?

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Quand le KeyPreview est positionné à True sur la fiche, c'est la fiche qui intercepte les évènements clavier plutôt que le composant qui a le focus sur cette fiche. Consulter la et l'aide de Delphi sur cette propriété pour plus de détails.

  8. #8
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Utilise les Message de Windows

    Déclaration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    // ...
    type
      TForm1 = class(TForm)
    // ...
       procedure FormCreate(Sender: TObject);
       procedure ProcMess(Var msg: TMsg; Var Handled: Boolean)
       procedure EditKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
     
    // ....
     
     
    Var
      Etatkb:Array[0..255]of Boolean;
     
    Implementation
     
    // ...
    Procédure ProcMess

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.ProcMess(Var msg: TMsg; Var Handled: Boolean);
    Begin
        If(msg.Message=WM_KEYDOWN)THEN Etatkb[msg.wparam]:=True; // Touche enfoncée
        If(msg.Message=WM_KEYUP)THEN Etatkb[msg.wparam]:=False; // Touche relachée
    End;
    Activation de la réception des messages
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    // Permet de recevoir les touches saisie au clavier
      Application.OnMessage:=ProcMess;
    // ...
     
    end;

    Ton evenement ONKEY Down

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TForm1.EditKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if (Etatkb[VK_CONTROL]) and (Etatkb[84]) // par exemple si CTRL + T
        and (TEdit(Sender).Focused) then // On que l'on est bien dans le Tedit
      begin      
        // 
        // ........ ICI TON CODE
        //
      end;
     
    end;
    Amuse toi bien...

  9. #9
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    Merci pour toues vos interventions.
    J'ai mis la propriété KeyPreview à true et ça marche à présent. Mais aussi tenter de tester la procédure de BuzzLeclaire mais j'ai eu des problèmes.
    Quand j'ai mis le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ....
    procedure ProcMess(Var msg: TMsg; Var Handled: Boolean)
    Il ya une exception : un identificateur attendu mais procédure trouvé.

  10. #10
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Il ne manquerait pas un ; à la fin de la déclaration ?

  11. #11
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    J'ai mis le ; mais c'est toujours la même erreur...

  12. #12
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    Toutes mes excuses il y' avait d'autres erreurs de mon coté. ça marche merci.

  13. #13
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Citation Envoyé par sondo Voir le message
    Toutes mes excuses il y' avait d'autres erreurs de mon coté. ça marche merci.
    On peut savoir c'est quoi qui marche. Quel solution as-tu pris ?

    Et n"'oublis pas le TAG résolu.

    Bye

  14. #14
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    Ta solution marche bien et je l'ai adopté.
    Merci à vous tous. bon week-end.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VxiR2] Foreign Key inexistante dans la table maître
    Par tunis71187 dans le forum Designer
    Réponses: 2
    Dernier message: 02/12/2011, 08h27
  2. Detecter Key event dans PictureBox
    Par olibara dans le forum Windows Forms
    Réponses: 2
    Dernier message: 23/01/2011, 21h41
  3. key violation dans une base de donnée
    Par elecpic dans le forum Débuter
    Réponses: 1
    Dernier message: 15/11/2010, 08h30
  4. Problème de key (#file) dans package
    Par MAUGA dans le forum BOUML
    Réponses: 8
    Dernier message: 07/12/2008, 12h39
  5. Réponses: 4
    Dernier message: 30/04/2007, 17h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo