2009-09-28 8 views
1

J'ajoute des lignes à un TRichEdit comment garder le focus sur la ligne qui vient d'être ajoutée?Problèmes de défilement avec TRichEdit dans Delphi

For Idx := 1 to 1000 do 
    RichEdit.Lines.add(IntToStr(Idx)); 

EDIT

Je viens de ce que la ligne de fond du richedit pour montrer ce qui vient d'être ajouté et toutes les autres lignes pour faire défiler

+0

Je pense que "focus" est généralement utilisé pour les contrôles. Voulez-vous dire que vous voulez sélectionner le texte qui vient d'être ajouté (cela entraînera un collage avec l'opération suivante), conservez le point d'insertion sur la dernière ligne ajoutée (ce qui entraînera le collage d'une très longue ligne) ou peut-être vous voulez juste dire que vous voulez faire défiler vers le bas de la Richedit? – Argalatyr

+0

Voir aussi cette réponse: [Faire défiler RichEdit sans avoir le focus] (http://stackoverflow.com/a/9757314/576719). –

Répondre

5

Cela devrait fonctionner, si vous voulez juste faire défiler jusqu'à la fin de la richedit:

For Idx := 1 to 1000 do 
begin 
    RichEdit.Lines.add(IntToStr(Idx)); 
    RichEdit.SelStart := RichEdit.GetTextLen; 
    SendMessage(RichEdit.handle, EM_SCROLLCARET,0,0); 
end; 

Si c'est pas ce que vous vouliez, s'il vous plaît voir mon commentaire ci-dessus et clarifier votre question.

+0

Merci - cela fonctionne bien :) –

3

Vous pouvez essayer cette

option 1) positionner le curseur lorsque la boucle est terminée

For Idx := 1 to 1000 do 
    RichEdit.Lines.add(IntToStr(Idx)); 

RichEdit.SetFocus; 
RichEdit.SelStart := RichEdit.Perform(EM_LINEINDEX, RichEdit.Lines.Count-1, 0) ; 

option 2) régler la courbe r pendant l'exécution de la boucle

For Idx := 1 to 1000 do 
Begin 
RichEdit.Lines.add(IntToStr(Idx)); 
RichEdit.SetFocus; 
End; 

RichEdit.SelStart := RichEdit.Perform(EM_LINEINDEX, RichEdit.Lines.Count-1, 0) ; 

Au revoir.

Questions connexes