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 :

Coller du texte dans n'importe quel éditeur


Sujet :

Delphi

  1. #21
    Membre habitué
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Par défaut
    Citation Envoyé par tourlourou Voir le message
    L'éditeur de texte ciblé a-t-il bien le focus lors de l'envoi du Ctrl+V ?
    Non bien sûr. C'est mon appli qui a le focus. Mais auparavant j'ai cliqué dans l'éditeur ou je souhaite coller pour récupérer le handle.

  2. #22
    Membre habitué
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Par défaut
    Oui mais je souhaite insérer après le curseur

  3. #23
    Membre habitué
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Par défaut
    On progresse

    L'ajout de la ligne; SetForegroundWindow(GetAncestor(Handle, GA_ROOT)); permet de fonctioner avec Notepad.

    En revanche ça ne fonctionne pas avec Word

  4. #24
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 469
    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 469
    Par défaut
    Bonjour,

    Mon code fonctionne avec Notepad, mais pas avec Word ! Je vais essayer d'y remédier

    l'inconvénient de mon code, c'est qu'il faut appuyer sur le bouton de la souris, faire un drag vers l'éditeur et relacher le bouton sur l'éditeur. Mais on doit pouvoir utiliser la méthode initiale ? (que je ne connais pas)

    A+
    Charly

  5. #25
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 905
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 905
    Par défaut
    Comme ça a été mentionné par rMist2024, le mieux est que la fenêtre ne s'active jamais.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    type
      TForm1 = class(TForm)
      protected
        Procedure CreateParams(var params: TCreateparams); override;
      end;
     
    procedure TForm1.CreateParams(var params: TCreateparams);
    begin
      inherited;
      params.exstyle := params.exstyle or WS_EX_NOACTIVATE;
    end;
    Mais maintenant qu'on en sait un peu plus, il apparait que tu remplis toi-même le presse-papiers (depuis la DB) pour le coller ensuite. C'est parfaitement inutile, tu peux directement envoyer le texte par SendInput (accessoirement qui permettrait aussi de synthétiser ctrl+v).

    Au final :
    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
    48
    49
    50
    51
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      protected
        Procedure CreateParams(var params: TCreateparams); override;
      public
        procedure SendText(const aText :string);
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      SendText('Hello World!'#13);
    end;
     
    procedure TForm1.CreateParams(var params: TCreateparams);
    begin
      inherited;
      params.exstyle := params.exstyle or WS_EX_NOACTIVATE;
    end;
     
    procedure TForm1.SendText(const aText: string);
    var
      Inputs :array of TInput;
    begin
      SetLength(Inputs, aText.Length *2);
      ZeroMemory(Inputs, SizeOf(TInput) *Length(Inputs));
     
      var i := 0;
     
      for var c in aText do
      begin
        Inputs[i].Itype      := INPUT_KEYBOARD;
        Inputs[i].ki.wScan   := word(c);
        Inputs[i].ki.dwFlags := KEYEVENTF_UNICODE;
        inc(i);
        Inputs[i].Itype      := INPUT_KEYBOARD;
        Inputs[i].ki.wScan   := word(c);
        Inputs[i].ki.dwFlags := KEYEVENTF_UNICODE or KEYEVENTF_KEYUP;
        inc(i);
      end;
     
      SendInput(Length(Inputs), Inputs[0], SizeOf(TInput));
    end;

  6. #26
    Membre habitué
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Par défaut Précisions
    Merci à tous pour vos contributions.

    Pour répondre sur le "copier" du DBRichEdit dans le presse papier c'est simplement que je souhaite conserver la mise en forme.
    Si je n'envoie que tu texte elle sera perdue.

    Je vais déjà tester vos propositions ce soir (j'ai un autre métier)

    Bien cordialement

  7. #27
    Membre habitué
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Par défaut Résolution
    Bonsoir

    Un grand merci à tous les contributeurs sur ce sujet. Le code d'Andnotor fonctionne parfaitement.

    Reste un mystère, pourquoi ne peut on coller simplement du texte dans Word?

    Pour un autre jour.....

  8. #28
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 469
    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 469
    Par défaut
    Bonjour,
    j'ai modifié mon code pour faire comme tu le souhaitais avec AppDeactivate. ça marche bien avec Notepad, mais effectivement pas avec Word.
    Je n'ai pas non plus compris pourquoi.

    C'est une variante du code d'Andornot.

    PressePapier.zip

    A+
    Charly

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [WB11] [débutant]erreur dans n'importe quel projet
    Par dj_techno dans le forum WebDev
    Réponses: 6
    Dernier message: 23/02/2009, 13h53
  2. Coller du texte dans MS Excel
    Par dim07 dans le forum Langage
    Réponses: 1
    Dernier message: 31/07/2008, 13h40
  3. Réponses: 12
    Dernier message: 28/09/2007, 14h01
  4. Coller du texte dans n'importe quelle application
    Par LapinEnSucre dans le forum Windows Forms
    Réponses: 1
    Dernier message: 18/03/2007, 10h31
  5. Copier/coller un texte dans un richedit
    Par bipeurs dans le forum Windows
    Réponses: 1
    Dernier message: 03/08/2006, 02h44

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