Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - TMemo (wie greife ich auf die Scrollbar zu ?)


gottesbruder - Mi 08.09.04 19:21
Titel: TMemo (wie greife ich auf die Scrollbar zu ?)
Hallo an alle,
ich versuche mich gerade spasseshalber an einem Chatprogram. Um den Text anzuzeigen benutze ich eine Memo-komponente, diese besitzt eine Scrollbar. Wie kann ich sagen, dass die Scrollbar immer nach unten scrollt um mir den letzten kommentar anzuzeigen? Generell, wie kann ich auf die Scrollbar zugreifen?

Ein herzliches danke an alle die posten.

PS: danke für die hilfe, auch wenn es ein krass dummes problem ist.


Christian S. - Mi 08.09.04 19:31

Hallo!

Mir fallen da zwei Möglichkeiten ein. Zum einen kannst Du die Cursor-Position einfach immer ganz ans Ende setzen:

Delphi-Quelltext
1:
Memo1.SelStart := Length(Memo1.Text);                    

Damit landet auch der ScrollBar ganz unten.

Flexibler ist es mit der Message "WM_VSCROLL":

Delphi-Quelltext
1:
SendMessage(memo1.Handle, WM_VSCROLL, SB_BOTTOM, 0);                    


Dabei kannst Du mittels des dritten Parameters angeben, was Du mit der Scrollbar machen willst. Die möglichen Werte stehen in der Win32-Referenz, die bei Delphi dabei ist, wenn man dort nach WM_VSCROLL sucht.

MfG
Christian


.Chef - Mi 08.09.04 19:34

Probier mal:

Delphi-Quelltext
1:
Memo1.SelStart:=Length(Memo1.Text)-1;                    

Keine Ahnung, ob er da gleich mit nach untenscrollt, aber einen Versuch ist es wert.

Ansonsten:

Delphi-Quelltext
1:
SendMessage(Memo1.Handle,WM_VSCROLL,SB_BOTTOM,0);                    


Gruß,
Jörg

Edit: War einer schneller. Aber thematisch auf den Punkt. *rofl*


gottesbruder - Mi 08.09.04 20:46

Vielen dank,
es funktioniert. Könntet ihr mir freundlicherweise erklären was dieser Befehl
"SendMessage(memo1.Handle, WM_VSCROLL, SB_BOTTOM, 0);"
macht?

danke im voraus


.Chef - Mi 08.09.04 20:49

Er sendet die Message WM_VSCROLL mit dem Parameter SB_BOTTOM an das Memo. Alles weitere zum Thema "Messages" sagen dir Tutorials oder auch die OH.


UGrohne - Do 09.09.04 07:59

War nicht die Standardreaktion bei einem Memo bei Memo1.Lines.Add() automatisch nach unten zu scrollen? Oder ging das nur beim RichEdit?


Dr. Phil - Do 09.09.04 08:24

Darüber hab ich mich auch gerade gewundert, ein Memo scrollt ja sowieso immer selbstständig runter :roll: