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 du curseur dans un TMemo


Sujet :

Composants VCL Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 27
    Points : 27
    Points
    27
    Par défaut Position du curseur dans un TMemo
    Bonjour à tous

    Je charge un texte de 15 lignes dans un Tmemo. Comment, à la fin du chargement, mettre le curseur, par exemple, au 4 ème caractère de la 10 ème ligne ?

    Merci d'avance.

  2. #2
    Membre habitué Avatar de gord's
    Inscrit en
    Avril 2003
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 115
    Points : 127
    Points
    127
    Par défaut
    avec SelStart, mais je n'en sais pas plus

  3. #3
    Membre expert
    Avatar de Bestiol
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 515
    Points : 3 894
    Points
    3 894
    Par défaut
    'jour !!

    Tu pourrais t'en tirer avec SelStart, mais il faudrait que tu connaisses la position du caractère par rapport au début du texte...
    Voici une solution qui fonctionne avec les messages windows spécifiques au Memo...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure ....
    var position: integer;
    begin
    ...
      position := Memo1.Perform(EM_LINEINDEX, 9, 0) + 4;
      Memo1.Perform(EM_SETSEL, position, position);
    ...
    end;
    Explications : Le message EM_LINEINDEX te permettra de récupérer la position du premier caractère de ligne dont le numéro est passé par wParam. A noter que les lignes sont en "zero-based", donc la dixième ligne est la ligne n°9 !
    Tu ajoutes 4, ça te donne donc la position du quatrième caractère de la dixième ligne...
    Ensuite, EM_SETSEL permet de créer une sélection de texte en spécifiant le début et la fin de celle-ci... En passant pour les deux paramètres la même valeur, le curseur est déplacé à cette position !

    Et voilà, ton curseur est déplacé en deux lignes... Et même en une seule ligne si tu imbriques les deux fonctions !!

    Bonne prog' !
    Bestiol.
    PS: Plutôt que d'utiliser EM_SETSEL, une fois que tu as position, Memo1.SelStart := position; fera le même effet

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 27
    Points : 27
    Points
    27
    Par défaut
    Merci pour vos réponses rapides et claires

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 30/04/2009, 16h49
  2. Position du curseur dans un TEdit
    Par Captain_JS dans le forum C++Builder
    Réponses: 2
    Dernier message: 16/07/2005, 16h16
  3. [PDE] Récupérer position du curseur dans un éditeur
    Par simsky dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 05/07/2005, 16h50
  4. Obtenir la position du curseur dans une Image
    Par bastoune dans le forum Composants VCL
    Réponses: 6
    Dernier message: 14/11/2003, 22h02
  5. Position du curseur dans Edit
    Par MrJéjé dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/06/2002, 18h09

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