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 :

Position du curseur dans un RichEdit


Sujet :

Delphi

  1. #1
    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 Position du curseur dans un RichEdit
    bonjour,

    Cela n'a rien a voir avec la souris.

    Je voudrais simplement ouvrir une fenetre à l'endroit où je tape un caractères.

    Sachant que mon richedit est dans un pagecontrol lui même dans une Form en fsmidchild et elle même dans une form principal.

    Comment tout simplement récupérer la position ce mon curseur.

    Evidement j'ai essaye j'en suis là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
              Left := TRichEdit(Sender).CaretPos.X + Self.Left + TRichEdit(Sender).Left;
              Top := TRichEdit(Sender).CaretPos.Y + Self.top + TRichEdit(Sender).Top;
    Mais m'a fenêtre n'ai pas bien placer.

    J'ai essayé d'utiliser le ClientToScreen, sauf que je fias cela dans l'evenement KeyDown donc je n'ai pas de X,Y.

    Merci à vous

  2. #2
    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
    J'y suis presque...

    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
          X := TRichEdit(Sender).CaretPos.X;
          Y := TRichEdit(Sender).CaretPos.Y;
          With TFInfosBase.Create(Self) do
          Begin
            try
              champs := '';
              With TrichEdit(Sender).ClientToScreen(Point(X,Y)) do
              begin
                Left := X;
                Top := Y;
              end;
              Panel1.Caption := 'Liste des ';
              ShowModal;
            finally
              free;
            end;
          end;

  3. #3
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 290
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 290
    Points : 1 941
    Points
    1 941
    Par défaut
    Mouse.CursorPos ne serait-il pas ce que tu cherches?

  4. #4
    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
    Salut,

    Non en fait je cherche à connaitre la position du curseur clavier car ma form doit s'ouvrir à droite de ma saisie et non de la souris.

    Merci à toi.

  5. #5
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 290
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 290
    Points : 1 941
    Points
    1 941
    Par défaut
    Oups j'ai fait mon boulet. Désolé .

  6. #6
    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 Buzz

    Il y a un ch'tit défaut dans ton code.
    TRichEdit.CaretPos renvoie des coordonnées 'caractères', c'est-à-dire par exemple 8° caractère et 2° ligne.
    Et comme tu traites ce TPoint comme des coordonnées écran, ben c'est pas bon.

    Il faut donc obtenir les coordonnées écran (en pixels) du caret. Utilise pour cela la fonction GetCaretPos.

    Ce qui donne en simplifié:
    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
    var
      MyPoint: TPoint;
    begin
      // Coordonnées 'caractères'
      MyPoint := TRichEdit(Sender).CaretPos;
      // Transformer en coordonnées 'Ecran'
      GetCaretPos(MyPoint);
     
      with TFInfosBase.Create(Self) do
      begin
        try
          with TRichEdit(Sender).ClientToScreen(MyPoint) do
          begin
            Left := X;
            Top := Y;
          end;
          ShowModal;
        finally
          Free;
        end;
      end;
    end;
    Cela devrait aller mieux.

    @+ Claudius.

  7. #7
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 290
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 290
    Points : 1 941
    Points
    1 941
    Par défaut
    Pour me rattraper, c'est la fonction (API) GetCaretPos qu'il faut utiliser

    Edit: Grilled! (c'est ça de prendre un client au téléphone )

  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
    Salut Cl@udius,

    Magistral.... cela fonctionne parfaitement


    Merci pour ta recherche Linkin

  9. #9
    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
    Citation Envoyé par BuzzLeclaire Voir le message
    Magistral.... cela fonctionne parfaitement
    Ben voilà, il est content le Claudius.

    @+

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 06/05/2004, 09h05
  2. Deplacer un curseur dans un RichEdit sous visual c
    Par tweek dans le forum Windows
    Réponses: 7
    Dernier message: 14/01/2004, 00h29
  3. Obtenir la position du curseur dans une Image
    Par bastoune dans le forum Composants VCL
    Réponses: 6
    Dernier message: 14/11/2003, 21h02
  4. Position du curseur dans un TMemo
    Par yokito dans le forum Composants VCL
    Réponses: 3
    Dernier message: 28/08/2003, 16h35
  5. Position du curseur dans Edit
    Par MrJéjé dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/06/2002, 17h09

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