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.
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.
'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...
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 !
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;
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
Merci pour vos réponses rapides et claires
Partager