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

 Delphi Discussion :

comment simuler l'appui d'une combinaison de touches


Sujet :

Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 100
    Points : 118
    Points
    118
    Par défaut comment simuler l'appui d'une combinaison de touches
    Bonjour,

    Quielle est la procédure (on click) d'un bouton quelconque qui simule l'appuie d'une combinaison de deux touches , exemple : [CTRL] [V] ?
    je m'explique :

    J'ai un bouton,
    je veux, quand je clique dessus, c'est comme si j'ai appuyé sur [Ctrl] [V].

    Merci d'avance.
    (j'espère que j'ai été claire).

  2. #2
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    Bonjour,

    tu n'as as besoin d'un bouton :

    Tu mets la propriété KeyPreview de la Fiche à True et tu codes FormKeyDown :

    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
    Procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    Begin
       If (Shift = [ssCtrl]) Then
          Begin
             If  ((Key = Ord('c')) or (Key = Ord('C')))  Then
                 Begin
                    ShowMessage('Copier') ;
                 End ;
             If  ((Key = Ord('x')) or (Key = Ord('X')))  Then
                 Begin
                    ShowMessage('Couper') ;
                 End ;
             If  ((Key = Ord('v')) or (Key = Ord('V')))  Then
                 Begin
                     ShowMessage('Coller') ;
                 End ;
          End ;
    End;
    L'appui sur les touches déclenche FormKeyDown

    A+

    Charly

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 449
    Points : 24 856
    Points
    24 856
    Par défaut
    Citation Envoyé par camatchou Voir le message
    (j'espère que j'ai été claire).
    pas tant que cela

    Si tu appuies sur le bouton, c'est ton application qui a le Focus et donc captura le CTRL V
    Si tu voulais forcer un coller dans une autre application, un SendMessage WM_PASTE avec le Handle de la fenêtre cible (trouvé via FindWindow) serait plus pertinent



    Faudrait voir si l'on peut utiliser SetKeyboardState

    Voir aussi keybd_event ou SendInput
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2009
    Messages : 322
    Points : 310
    Points
    310

  5. #5
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    Oui excellent site bien connu, mais est ce que cela fait avancer ton problème

    A+

    Charly

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2009
    Messages : 322
    Points : 310
    Points
    310
    Par défaut
    Citation Envoyé par Charly910 Voir le message
    Oui excellent site bien connu, mais est ce que cela fait avancer ton problème

    A+

    Charly
    Euuh... non, je ne souhaite pas programmer une simulation de séquence clavier. Ça, je l'ai déjà fait, mais pour y arriver j'avais lu le tutoriel...

    A+

    ;-)

  7. #7
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    Bonjour,

    si tu veux simuler des frappes clavier c'est la fonction KeyBd_Event. Pour simuler des frappes dans le fenêtre active, regarde cette discussion :

    http://www.developpez.net/forums/d98...uches-clavier/

    A+

    Charly

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2009
    Messages : 322
    Points : 310
    Points
    310
    Par défaut
    Citation Envoyé par Charly910 Voir le message
    Bonjour,

    si tu veux simuler des frappes clavier c'est la fonction KeyBd_Event. Pour simuler des frappes dans le fenêtre active, regarde cette discussion :

    http://www.developpez.net/forums/d98...uches-clavier/

    A+

    Charly
    À qui réponds-tu au fait?

    Camatchou, ShaiLeTroll, Charly910, ...?

  9. #9
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    Ha oui ! désolé - c'est pour Camatchou !

    A+

    Charly

  10. #10
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 449
    Points : 24 856
    Points
    24 856
    Par défaut
    Surtout que Camatchou n'a posté qu'une seule fois pour le moment dans son sujet !

    On n'est même pas sur de savoir ce qu'il veut !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  11. #11
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 100
    Points : 118
    Points
    118
    Par défaut
    Bonjour tout le monde et merci pour vos réponses

    voilà, je vous explique mon vrai problème :
    j'ai un champs dbimage ,
    pour la modification de l'image j'utilise la méthode classique : au niveau de OnDbClick

    if openpicturedialog1.execute then
    begin
    .....
    dbimage1.picture.loadfromfile(....
    ....
    end;

    ça marche bien,

    Et voilà qu'un client qui me demande d'utiliser la méthode copie coller pour la modification de cette image
    encore plus, il demande qu'avec un simple clique sur un bouton, on colle l'image qui est au niveau du clipboard !

    je crois que j'ai trouvé la solution :

    poser un bouton
    au niveau du : Onclick :

    dbimage1.setfocus;
    dbimage1.pastefromclipboard;

    et ce 'client' est satisfait mais moi

    au fait, désolé pour mon absence

  12. #12
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 449
    Points : 24 856
    Points
    24 856
    Par défaut
    Citation Envoyé par camatchou Voir le message
    dbimage1.setfocus;
    dbimage1.pastefromclipboard;
    Cela ne me choque pas, surtout si en plus, tu as une Action associé au CTRL+V (ou un KeyPreview au niveau de la TForm, attention au Edit et autre control gérant le focus)


    dbimage1, openpicturedialog1, ... je suppose que c'est pour ta démo ici, pense à utiliser un nommage pertinent
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  13. #13
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 100
    Points : 118
    Points
    118
    Par défaut
    Oui ShaileTroll,

    ceci :

    dbimage1, openpicturedialog1, ... je suppose que c'est pour ta démo ici, pense à utiliser un nommage pertinent
    n'est que pour faciliter le message à faire passer.

    Encore merci à vous tous.
    A+

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

Discussions similaires

  1. comment simuler l'appui sur une touche de clavier
    Par chekkal dans le forum Débuter
    Réponses: 2
    Dernier message: 21/10/2013, 14h18
  2. Réponses: 7
    Dernier message: 08/07/2009, 18h22
  3. Réponses: 20
    Dernier message: 27/11/2007, 14h40
  4. [VCL] Comment détecter une combinaison de touches ?
    Par micatmidog dans le forum Composants VCL
    Réponses: 3
    Dernier message: 23/01/2005, 14h19
  5. Simuler l'appui sur une touche, au niveau système
    Par debutant java dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 13/08/2004, 12h51

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