Textfenster

Möchte (für eigenes Terminalprogramm) laufend Texte in ein Fenster schreiben. Bei einem Zeilenumbruch soll diese Zeile unten ausgegeben werden und wenn das Fenster voll ist, soll nach oben gescrollt werden. (wie früher bei DOS)
Hierzu verwende ich eine Textbox, wo ich immer Texte anhänge. Mittels SendKeys „^{END}“ wird immer das Ende angezeigt.
Diese Methode funktioniert zwar, ist jedoch langsam bzw. flackert, wenn viele Daten kommen.
Gibts eine bessere Methode?
Gruß,
Werner

Hallo Werner,

Diese Methode funktioniert zwar, ist jedoch langsam bzw.
flackert, wenn viele Daten kommen.

wenn Du die Textbox unsichtbar machst, bevor Du den Inhalt veränderst und erst am Schluß wieder sichtbar, geht es schneller und flackert nicht.
Bedingung: Es darf in der Zwischenzeit kein DoEvents auftreten. Wenn Du das in einer Terminalemulation verwendest und auf das Ereignis reagierst, daß Daten kommen, mußt Du also erst die Daten sammeln und im Block in das Textfenster schieben.

Bei mir ist der Remote-Rechner die Bremse, das VB Programm eher zu schnell. :wink:

Gruß, Rainer

Hallo,

warum verwendest Du nicht

Textbox.SelStart = len(Textbox.Text) -1
Textbox.selLength = 1
DoEvents

statt SendKeys „^{END}“ ? Dann verlässt der Fokus die Textbox nicht und die Anwendung springt doch an’s Ende.

Eventuell braucht es noch ein

DeineForm.cls

damit die Aktualisierung reibungslos erfolgt.

Gruß Andreas

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Der Tipp mit Selstart bringt leider keine Verbesserung.
Daten sammeln ist auch schwierig, da diese mit 300 Baud reinkommen.
Hab jetzt ne Lösung gefunden, die recht gut funktioniert, indem ich direkt in die Form schreibe (me.print). Einziger Nachteil: keine Scrollbalken.
Trotzdem Danke,
Werner

Hallo Werner,

Hab jetzt ne Lösung gefunden, die recht gut funktioniert,
indem ich direkt in die Form schreibe (me.print). Einziger
Nachteil: keine Scrollbalken.

dann versuch doch mal in ein Picture zu printen. Das geht und Du kannst Dir auch eine Scrollfunktion basteln, wenn Du ein Picture in ein anderes legst, das Innere groß genug machst und verschiebst. Stell Autoredraw auf true, sonst ist der Text wieder weg.

Gruß, Rainer