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 :

Récupérer un texte qui est surligné


Sujet :

Delphi

  1. #1
    Membre habitué Avatar de Ludo_360
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 295
    Points : 191
    Points
    191
    Par défaut Récupérer un texte qui est surligné
    bonjour,

    Je développe une application qui se charge d'envoyer des caractères dans n'importe quelle fenetre( déterminée grâce à son handle). Seulement je voudrais maintenant copier un texte qui a été selectionné ( surligné), dans ce cas le handle ne suffit pas... Si a quelques conseils, il sont bienvenus...

    merci


    ++

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 619
    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 619
    Points : 25 315
    Points
    25 315
    Par défaut
    Toujours ton Histoire de Clavier Virtuel ?

    Selectionné = Selection par la Souris
    Surligné = avec une ligne en dessous comme dans un RichEdit

    ce n'est pas pareil ...

    Sinon voir le message EM_GETSELTEXT, avec le handle du Edit cela devrait fonctionné, voir comment fonctionne un RichEdit (ComCtrls.pas) pour la Gestion du texte sélectionné ...

  3. #3
    Membre habitué Avatar de Ludo_360
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 295
    Points : 191
    Points
    191
    Par défaut
    Eh oui toujours mon histoire de clavier, il faut qu'il fonctionne parfaitement...


    tu dis
    selectionné= sélection par la souris
    Faire un copier/coller dans un TEDIT je sais faire, avec Clipboard, mais mon clavier permet d'écrire dans n'importe quelle fenetre ouverte ( notepad, google, application delphi...etc...).

    Mais comment tu défini une selection faite par la souris?

    Moi je récupère le handle de la fenetre grâce à la position de la souris, mais je ne vois pas comment savoit si un texte est selectionné?


    C'est surement très con mais je vois pas trop...



    merci a toi Shai

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 619
    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 619
    Points : 25 315
    Points
    25 315
    Par défaut
    Tu veux récupérer le Texte Selectionné ... j'ignore à quel moment, mais suffit d'envoyer le Message EM_GETSELTEXT ... cherche dans ComCtrls.pas comment l'utiliser ... si cela renvoie nil ou chaine vide, il n'y pas de selection ...

    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
     
    function TCustomRichEdit.GetSelLength: Integer;
    var
      CharRange: TCharRange;
    begin
      SendMessage(Handle, EM_EXGETSEL, 0, Longint(@CharRange));
      Result := CharRange.cpMax - CharRange.cpMin;
    end;
     
    function TCustomRichEdit.GetSelText: string;
    var
      Length: Integer;
    begin
      SetLength(Result, GetSelLength + 1);
      Length := SendMessage(Handle, EM_GETSELTEXT, 0, Longint(PChar(Result)));
      SetLength(Result, Length);
    end;

  5. #5
    Membre habitué Avatar de Ludo_360
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 295
    Points : 191
    Points
    191
    Par défaut
    Je suis en train d'essayer de réfléchir en suivant tes pistes, mais je ne suis pas sur de comprendre ( manque d'expérience en delphi ).
    Tu conseilles d'utiliser des commandes réservée pour le RichEdit ( EM_GETSELTEXT) ... Une fenetre notepad peut être assimilée à un richedit? t une page google?

    J'ai ouvert ComCtrls.pas, et j'ai trouvé la partie sur RichEdit, mais je ne comprends pas plus...

    Enfin c'est surement une question de temps...

    merci pour tes conseils Shai...
    ++

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 619
    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 619
    Points : 25 315
    Points
    25 315
    Par défaut
    Effectivement, Notepad, ce n'est qu'un simple Edit, je n'ai jamais testé, et le RichEdit est le seul composant que je connaissais avec une Selection de Texte programmable, donc c'est pour cela que j'ai songé à ça !

    et au lieu d'utiliser EM_EXGETSEL et EM_GETSELTEXT, faudrait utiliser EM_GETSEL et WM_GETTEXT (en en récupérant que la sélection) pour un Edit normal

  7. #7
    Membre habitué Avatar de Ludo_360
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 295
    Points : 191
    Points
    191
    Par défaut copier coller
    pour l'instant je copie dans toutes les fenetres si je récupère le handle et je réécris la copie dans la fenetre que je veux si j'ai le handle:

    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
     
    ******************************************************************************)
    // fonction appellée lorsque l'utilisateur se sert du raccourci clavier Ctrl+C
    procedure Tform_Clavier.CopyText();
    begin
       Sendmessage(Handle_Cible, WM_GETTEXT, 16(*BUF_SIZE*), integer(@buffer));
       Clipboard.Create;
       Clipboard.AsText:= buffer;
       Clipboard.Free;
    end;
     
    (******************************************************************************)
    // fonction appellée lorsque l'utilisateur se sert du raccourci clavier Ctrl+V
    procedure Tform_Clavier.CollerText();
    var
       ii : integer;
    begin
       edt_clipbrd.Clear;   // ici le edit sert à controler ce que l'on memorise
       Clipboard.Create;
       edt_clipbrd.Text:= Clipboard.AsText;
       for ii:= 0 to length(Clipboard.AsText) do begin
          Postmessage(Handle_Cible, WM_CHAR, (Clipboard.AsText[ii]),0);;
       end;
     
       Clipboard.Free;
    end;
    Mais comme tu as du le voir je copie toute la fenetre puisque le handle détermine toute la fenetre...

    Mon appel de fonction est bon, l'utilisation du clipboard est ok... Mais il faut que je modifie la selection de la copie...

    Je ne sais vraiment pas trop comment faire... J'utilise un gettext mais seltext ne marche pas....

    je cherche... je cherche...

    Merci

    ++

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

Discussions similaires

  1. Récupérer un fichier qui est sur un URL
    Par Rhodo33 dans le forum Général Java
    Réponses: 4
    Dernier message: 12/10/2011, 19h03
  2. [RegEx] recuperer des mots dans un texte qui est un code php
    Par hendrix67 dans le forum Langage
    Réponses: 1
    Dernier message: 25/05/2010, 16h11
  3. Afficher une partie de texte qui est préalablement stockée dans la base
    Par sooprano dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 18/02/2010, 20h55
  4. Texte qui est décalé.
    Par quentiin dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 24/02/2009, 13h16
  5. [RegEx] Comment récupérer un texte qui est entre deux balises ?
    Par sandddy dans le forum Langage
    Réponses: 2
    Dernier message: 29/11/2007, 18h27

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