Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Liste automatisch scrollen


Skynthos - Sa 27.07.02 12:37
Titel: Liste automatisch scrollen
Hi,

ich habe ein Richedit dem ich Zeilen hinzufüge. Wenn die ganze Liste voller Zeilen ist, erscheint der Scrollbalken. So weit so gut, aber ich möchte, dass die Liste automatisch nach unten scrollt und nicht einfach so bleibt! Viele Stunden hat mit das Problem schon gekostet, ich hoffe ihr könnt mir helfen.

Skynthos


DeCodeGuru - Sa 27.07.02 12:42

Hi Skynthos,

suche mal in der Delphihilfe nach, EM_Scroll und WM_VScroll. Ich glaube, dass ich das mal damit gemacht habe, bin mir aber nicht mehr sicher. Vielleicht finde ich den Code nochmal. Wenn ja, poste ich den mal.


Skynthos - Sa 27.07.02 15:30

@DeCodeGuru
Danke für die Anwort. Theoretisch ist dein Vorschlag genau das, was ich suche. Leider sind meine Delphikenntnisse sehr beschränkt und ich weiß deshalb nicht, wie ich damit umgehen soll.

Dieser Versuch schlug schon mal fehl:
sendmessage(listbox1.handle,em_scroll,sb_linedown,0);

Vielleicht kannst du oder jemand anderes mir noch einen Tipp geben.

Skynthos


Skynthos - Do 01.08.02 14:50

@DeCodeGuru
Such bitte noch einmal. Es würde mir wirklich sehr weiterhelfen.

Danke,

Skynthos


GPF - Do 01.08.02 15:07

Die Listbox hat dazu 2 passende Eigenschaften, die Du verwenden könntest.
Benutze ItemIndex, falls ein bestimmter Eintrag markiert angezeigt werden soll oder benutze TopIndex, dann ist der Eintrag nicht markiert. Delphi scrollt bei beiden Varianten immer zum entsprechenden Eintrag.
Möchtest Du, daß die untersten Einträge angezeigt werden, so benutze folgenden Einzeiler:

Quelltext
1:
ListBox.TopIndex:=ListBo1.Items.Count-1;                    


Christian S. - Do 01.08.02 15:07

Hi!

@Skynthos:
Ich kenne mich mit API auch nicht aus, aber mit dem Befehl, den Du verwendet hast, hat es bei mir geklappt. Nur dass es bei mir nicht "ListBox1.Handle" sondern "RichEdit1.Handle" ist.

Oder ist einer der Einträge case-senstive?
Hier auf jeden Fall der Code, mit dem es bei mir geklappt hat, RichEdit nach unten zu scrollen:

Quelltext
1:
SendMessage(RichEdit1.Handle,EM_SCROLL,SB_LineDown,0);                    


MfG,
Peter


Skynthos - Do 01.08.02 21:37

@GPF
Die Methode funktioniert wunderbar. Ich weiß auch nicht, warum ich den Befehl nicht in der Hilfe gefunden habe.

@Peter Lustig
Seltsamerweise funktioniert die Technik nur bei Richedit. Aber das war ja schließlich auch mein Ziel.

Vielen Dank an euch beide!

Skynthos