2010-12-01 14 views
9

Est-ce que Delphi contient un composant qui permet le défilement automatique du texte chargé depuis db, comme dans les sites de nouvelles?mémo autoscrolling dans delphi

Pour une application delphi 7 et nécessite un défilement vertical.

Répondre

5

Peut-être, pour vous faire économiser de l'argent, vous pouvez l'adapter pour faire défiler une dbMemo:

EchoMemo.Lines.Add('A Line of text or more'); 
EchoMemo.SelStart := EchoMemo.GetTextLen; 
EchoMemo.SelLength := 0; 
EchoMemo.ScrollBy(0, EchoMemo.Lines.Count); 
EchoMemo.Refresh; 

J'utilise un affichage du journal.

29

Pour une tâche aussi simple, vous n'avez pas besoin d'acheter un composant commercial! Tout ce que vous devez faire est d'envoyer un message EM_LINESCROLL à ce contrôle mémo, pour le faire défiler jusqu'à la dernière ligne:

procedure ScrollToLastLine(Memo: TMemo); 
begin 
    SendMessage(Memo.Handle, EM_LINESCROLL, 0,Memo.Lines.Count); 
end; 

Si votre mémo est en lecture seule pour les utilisateurs et est mis à jour automatiquement par l'application, vous peut mettre un appel à la procédure ci-dessus dans son gestionnaire d'événements OnChange, de sorte que chaque fois que le texte dans le mémo est modifié, il est automatiquement fait défiler jusqu'à la dernière ligne.

+0

Hmm, Plus court que le mien, Memo_Scroll Golf quelqu'un? :) – Despatcher

+0

ce parchemin est très rapide. comment le ralentir? – none

+0

@none, que voulez-vous dire en le ralentissant? Allez-vous faire un effet visuel de défilement? – vcldeveloper

0

Vous pouvez également utiliser Memo.GoToTextEnd; en cas de besoin, par exemple à l'intérieur d'un événement onchange. N'est pas un effet de défilement automatique approprié mais peut être utile dans des situations similaires.