Autor Beitrag
gottesbruder
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mi 08.09.04 19:21 
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.

_________________
Wovon man nicht sprechen kann, darüber muss man schweigen.
Ludwig Wittgenstein
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
Memo1.SelStart := Length(Memo1.Text);					

Damit landet auch der ScrollBar ganz unten.

Flexibler ist es mit der Message "WM_VSCROLL":
ausblenden 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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
.Chef
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1112



BeitragVerfasst: Mi 08.09.04 19:34 
Probier mal:
ausblenden 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:
ausblenden Delphi-Quelltext
1:
SendMessage(Memo1.Handle,WM_VSCROLL,SB_BOTTOM,0);					


Gruß,
Jörg

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

_________________
Die Antworten auf die 5 häufigsten Fragen:
1. Copy(), Pos(), Length() --- 2. DoubleBuffered:=True; --- 3. Application.ProcessMessages bzw. TThread --- 4. ShellExecute() --- 5. Keine Vergleiche von Real-Typen mit "="!
gottesbruder Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: 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

_________________
Wovon man nicht sprechen kann, darüber muss man schweigen.
Ludwig Wittgenstein
.Chef
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1112



BeitragVerfasst: 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.

_________________
Die Antworten auf die 5 häufigsten Fragen:
1. Copy(), Pos(), Length() --- 2. DoubleBuffered:=True; --- 3. Application.ProcessMessages bzw. TThread --- 4. ShellExecute() --- 5. Keine Vergleiche von Real-Typen mit "="!
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 66

Win XP
Delphi 7 Prof.
BeitragVerfasst: Do 09.09.04 08:24 
Darüber hab ich mich auch gerade gewundert, ein Memo scrollt ja sowieso immer selbstständig runter :roll:

_________________
self-improvement is masturbation;
self-destruction is the answer - Tyler Durden