Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 249613 (11049)

| Suchen
| Zurück zur Übersicht

Autor | Thema: mitwandernder Scrollbar in Listbox, wie?
Kai Ebersbach
| Datum:23.06.01 17:38 (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 (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 (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 (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 (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