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 :

simuler flèche bas


Sujet :

Langage Delphi

  1. #1
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut simuler flèche bas
    Bonjour,

    J'essaye de simuler flèche bas de plusieures manières mais je n'y arrive pas...

    Je vois partout que le code ASCII de la flèche bas est 40.
    Mais pour moi, quand je fait ça:
    chaine := 'TEST'+chr(40);

    Que ce soit avec keybd_event(VkKeyScan(chaine[i]),0,0,0) ou ClipBoard.SetTextBuf(PAnsiChar(chaine));

    Ca me retourne la parenthèse ouvrante '(' (ce qui me parait logique selon la table ASCII).

    Comment faire pour que ça marche dans les 2 cas ?
    David.

  2. #2
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 668
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 668
    Points : 7 008
    Points
    7 008
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  3. #3
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut
    Bonjour Lung,

    Oui, je l'ai bien lu, mais je ne veux pas mettre de code virtuel (incompatible avec le presse papier) mais le code ascii.

    C'est à n'y rien comprendre... Je fait ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TfrmMain.mmoInfosKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    var str: String;
    begin
      str := '';
      if ssShift in Shift then str := str+'La touche Maj est enfoncée. '
      else if ssAlt in Shift then str := str+'La touche Alt est enfoncée. '
      else if ssCtrl in Shift then str := str+'La touche Ctrl est enfoncée. ';
      ShowMessage(IntToStr(ord(Key))+' '+str);
    end;
    Quand j'appuie sur flèche bas, il me met juste 40 et lorsque je fait ALT+040 dans le bloc note, c'est ( qui apparait.

    Je deviens fou !
    David.

  4. #4
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Bonjour,

    Et là, peut-être une piste :

    http://perso.orange.fr/bardou/michel/trucs.htm

    Une remarque / variante de Jean-Yves Queinec (08/09/99)

    S'il existe des composants fenêtrés sur la fiche (boutons par exemple), les touches fléchées ne peuvent pas être interceptées en positionnant simplement KeyPreview à true. Si par exemple je veux dessiner sur une paintbox à l'aide des touches fléchées, ce sont les boutons qui reçoivent systématiquement les messages des touches de direction, ainsi que ceux produits par <Tab>. Voici une solution : -->

    Implémentez l'événement OnCreate de votre TForm ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.FormCreate(Sender: TObject);
    var
      bmp : Tbitmap;
      i : integer;
    begin
      Application.OnMessage := TraiteMessages;
      ......
    dans la déclaration de la Tform, juste sous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure FormCreate(Sender: TObject);
    Ajoutez :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    procedure TraiteMessages(Var msg : TMsg; Var Handled: boolean);
    { Gestionnaire de message au niveau application }
    Puis dans la partie implémentation :


    { Intercepte les messages clavier et en particulier les touches flèchées }
    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
    Procedure Tform1.TraiteMessages(Var msg : TMsg; Var Handled: boolean);
    var
      dx, dy : integer;
    begin   dx: 0; dy := 0; 
      With msg do
      begin
        IF Message = WM_KEYDOWN then
        Case  wparam of
          VK_LEFT  : dx := -1;
          VK_RIGHT : dx :=  1;
          VK_UP    : dy := -1;
          VK_DOWN  : dy :=  1;
        end;
      end;
      IF (dy = 0) AND (Dx = 0) then Handled := false else
      begin
        handled := true;     // message traité
        Mouvement(dx, dy)    // exécution du tracé 
      end;
    end;

  5. #5
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut
    J'avais également vu cette page, mais, en plus d'être bien compliquée à mettre en place, je ne pense pas qu'elle convienne car je n'ai pas du tout le main sur la zone à écrire.

    Si j'ai bien compris, flèche bas n'est pas un code ASCII ?
    David.

  6. #6
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut
    Et c'est quoi le contraire de VkKeyScan ?

    Peut être que de cette manière, je trouverais un code clé.
    Vu que VK_DOWN=40, et que j'aimerais passer dans la boucle de traitement VkKeyScan, il faudrait que je trouve le code ASCII qui faire à VkKeyScan retourner 40.

    C'est bête comme raisonnement ?
    David.

  7. #7
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    Citation Envoyé par dacid
    J'avais également vu cette page, mais, en plus d'être bien compliquée à mettre en place, je ne pense pas qu'elle convienne car je n'ai pas du tout le main sur la zone à écrire.

    Si j'ai bien compris, flèche bas n'est pas un code ASCII ?

    exact, flèche bas n'est pas un caractère et le code ascii ne s'applique qu'aux caratères.

    40 est une valeur de message de touche pas de caractère.

    un lien en anglais :
    sdk windows

  8. #8
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut,

    Citation Envoyé par dacid
    Je vois partout que le code ASCII de la flèche bas est 40.
    Mais pour moi, quand je fait ça:
    chaine := 'TEST'+chr(40);
    Tu ne peut pas construire une chaine de caractère contenant un code touche virtuelle. Flèche bas n'est pas un caractère imprimable.

    Comme je ne sais pas exactement ce que tu veux faire, je dirais simplement que cette chaine est correcte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      chaine := 'TEST' + #13#10;
    Et pour simuler un flèche bas dans une appli, tu peux faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      keybd_event(VK_DOWN, 0, 0, 0);
      keybd_event(VK_DOWN, 0, KEYEVENTF_KEYUP, 0);
    @+ Claudius

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 4
    Points : 5
    Points
    5
    Par défaut simuler flèche gauche et droite en Delphi
    bonjour
    es que quelqu’un entre vous à tester la procédure "TraiteMessages" car je trouve pas la fonction : Mouvement(dx, dy) // exécution du tracé .
    avez vous une solution?
    merci


    Citation Envoyé par Cl@udius Voir le message
    Salut,



    Tu ne peut pas construire une chaine de caractère contenant un code touche virtuelle. Flèche bas n'est pas un caractère imprimable.

    Comme je ne sais pas exactement ce que tu veux faire, je dirais simplement que cette chaine est correcte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      chaine := 'TEST' + #13#10;
    Et pour simuler un flèche bas dans une appli, tu peux faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      keybd_event(VK_DOWN, 0, 0, 0);
      keybd_event(VK_DOWN, 0, KEYEVENTF_KEYUP, 0);
    @+ Claudius

Discussions similaires

  1. [event.keyCode] Détection de la flèche bas sous Opera
    Par bigben89 dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 26/11/2008, 14h02
  2. [Delphi 7] Flèche Bas dans DBGrid marche pas
    Par coucoucmoi dans le forum Bases de données
    Réponses: 2
    Dernier message: 30/04/2008, 14h28
  3. VBS - simuler l'appui sur la touche fléche droite
    Par koKoTis dans le forum Windows
    Réponses: 1
    Dernier message: 14/01/2008, 21h09
  4. Detecter appuie sur la "flèche bas"
    Par BkD35 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/12/2007, 11h34
  5. Réponses: 4
    Dernier message: 15/03/2007, 19h16

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