Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 249613 (11049)
  Suchen
 Zurück zur Übersicht
 AutorThema: mitwandernder Scrollbar in Listbox, wie?
Kai Ebersbach
Datum:23.06.01 17:38 Antwortenals Email verschicken (k.ebersbach@gmx.de) 


Hallo Profaner,

ich "ärgere" mich hier mit einem Problemchen herum und frage mal in die Runde, wem hier eine Lösung dafür einfallt:

In einer Art Chatprogramm erzeuge ich mit

MsgListe& = CreateListBox(%hwnd,"",5,35,620,280)

zunächst eine ListBox in die dann die eingehenden Textbeiträge mit einem

@AddString( MsgListe&, box3$)

geschrieben werden, wobei hier box3$ stellvertretend für eine Textvariable, also den String mit der Nachricht steht.

Das alles funktioniert auch, solange bis die Box grössenbedingt voll ist, dann erscheint am Rand ein Scrollbar und die nun kommenden Beiträge werden "unsichtbar" untern an die Listbox angefügt. Man muss also zum Lesen des letzten Beitrages immer wieder scrollen. Das empfinde ich als lästig und ich würde den Bedienkomfort des Programmes gern verbessern.

Wie kriege ich es hin, dass der Scrollbalken quasi mitwandert, d.h. der zuletzt eingegangenen Text sichtbar ist?

Ist da etwas mit SetScrollPos bzw. SetScrollRange möglich? Wenn ja, wie benutzt man diese Befhele im Zusammenhang mit einer Listbox?

Danke für jede Antwort, viele Grüsse!

Kai




Rolf Koch
Datum:23.06.01 18:13 Antwortenals Email verschicken (webmaster@rokosoft.de) 


Hi
schau Dir in der Profanhilfe mal
@SelectString(N1,N2,S) an.
Parameter sind dort:
N1= Listenhandle
N2= Beginn der Suche (also -1)
N3= Suchstring.

Wenn Du nun irgenwie den String in die Liste einfügst, so hast Du ja den letzten Eintrag der Liste als String vorliegen.
Nun übergibst Du auch den String an N3 und es wird an die letzte Stelle in der Listbox gesprungen, so daß immer der unterste Eintrag zu sehen ist ;)
Rolf


Kai Ebersbach
Datum:23.06.01 19:13 Antwortenals Email verschicken (k.ebersbach@gmx.de) 


Hallo Rolf, hallo Sebastian,

vielen Dank für Eure schnellen Antworten! Super!

Sebastian, Deine Lösung gefällt mir besser, obwohl auch die von Rolf prima funktioniert. Rolf, Dein Ansatz hat einen kleinen Nachteil: Schreibt jemand in dem Chat 2x das Gleiche, so wird der Balken auf den ersten Eintrag mit dem gefundenen Inhalt gesetzt und nicht auf den letzten, so wie es sein soll. Auch wenn ein Leerstring eingeht (Senden Taste geklickt, aber nix geschrieben) springt ein @selectstring wieder ganz an den Anfang der Listbox.

Noch mal ein herzliches Dankeschön und ein schönes Wochenende!

Kai




Rolf Koch
Datum: 23.06.01 19:38 Antwortenals Email verschicken (webmaster@rokosoft.de) 


Jo stimmt, daran hatte ich auf die Schnelle nicht gedacht. Naja - aber im Kollektiv haben wir wieder was gefunden - gell Sebastian? :))))
Rolf


Sebastian König
Datum:23.06.01 18:58 Antwortenals Email verschicken (webmaster@sekoenig.de) 


Hallo,

Rolf's Lösung funktioniert zwar sicherlich, ist aber bei vielen Einträgen in der Listbox relativ zeitaufwendig... Hier eine alternative Lösung, bei der nicht alle vorhergehenden Einträge durchsucht werden müssen:

declare count&
let count& = SendMessage(MsgListe&,$018B,0,0) 'LB_GETCOUNT

SendMessage(MsgListe&,$0186,@sub(count&,1),0) 'LB_SETCURSEL


MfG

Sebastian


 Zurück zur Übersicht