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

Composants VCL Delphi Discussion :

Position X Y du carret d'un TEdit


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2002
    Messages : 146
    Par défaut Position X Y du carret d'un TEdit
    Bonjour,

    toute la question est dans le titre : je voudrais faire apparaître un TPopupMenu à droite du curseur clignotant de mon TEdit, et pour cela, j'ai besoin de sa position...

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 089
    Par défaut
    Essaye de jouer avec GetCaretPos et GetForegroundWindow ...
    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

  3. #3
    Membre expérimenté
    Profil pro
    DEV
    Inscrit en
    Août 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DEV

    Informations forums :
    Inscription : Août 2006
    Messages : 182
    Par défaut
    Salut,

    voici un petit code example reprennant l'une des fonctions que ShaiLeTroll te disais et te permettant de faire ce que tu cherches
    je pense que cela devrais t'aider

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    Var pPoint : TPoint;
    begin
      If Button = mbRight Then
      Begin
        GetCaretPos(pPoint);
        pPoint.X := pPoint.X + Edit1.ClientOrigin.X;
        pPoint.Y := pPoint.Y + Edit1.ClientOrigin.Y;
        Edit1.ScreenToClient(pPoint);
        PopupMenu1.Popup(pPoint.X,pPoint.Y);
      End;
    end;

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2002
    Messages : 146
    Par défaut
    Ok merci, ca marche.

    Voici un code fonctionnel :

    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
    unit Utilities;
     
    interface
     
    uses Forms, StdCtrls, Types, Windows, Classes;
     
    function GetEditCarretPosition(Edit : TEdit) : TPoint;
     
     
    implementation
     
     
    // Returns the coordinates (X,Y) of the carret of a TEdit
    function GetEditCarretPosition(Edit : TEdit) : TPoint;
    var
        Point : TPoint;
    begin
        GetCaretPos(Point);
        Point.X := Point.X + Edit.ClientOrigin.X;
        Point.Y := Point.Y + Edit.ClientOrigin.Y;
        Edit.ScreenToClient(Point);
        result := Point;
    end;
     
    end.
    Merci bcp pour votre aide

  5. #5
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 089
    Par défaut
    Euh, je suis intrigué par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Edit.ScreenToClient(Point);
    cela ne sert à rien puisque le paramètre est passé en const ... donc Point ne bouge pas ... et le calcul de ClientOrigin remplace donc cette fonction

    et GetCaretPos renvoie la position en coordonnée client de le controle qui détient le focus

    je dirais que ceci suffit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // Returns the coordinates (X,Y) of the carret of a TEdit
    function GetEditCarretPositionScreen(Edit : TEdit) : TPoint;
    begin
        GetCaretPos(Result);
        Result := Edit.ScreenToClient(Result);
    end;
    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

  6. #6
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 132
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 132
    Par défaut
    + 1, Shai,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.Edit1Change(Sender: TObject);
    var
      tp: TPoint;
    begin
      tp := GetEditCarretPositionScreen(Edit1);
      Label1.Caption := IntToStr(tp.X);
    end;
    fonctionne impec.
    --
    jp

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

Discussions similaires

  1. position curseur dans Tedit
    Par AlfredKr dans le forum Débuter
    Réponses: 7
    Dernier message: 17/08/2011, 20h06
  2. [Lazarus] Position du curseur dans un TEdit
    Par tim501 dans le forum Lazarus
    Réponses: 16
    Dernier message: 26/06/2010, 16h52
  3. position curseur dans TEdit
    Par bandit boy dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/03/2006, 16h53
  4. Position du curseur dans un TEdit
    Par Captain_JS dans le forum C++Builder
    Réponses: 2
    Dernier message: 16/07/2005, 15h16
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

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