![]() |
RichEdit runterscrollen
Hi,
ich habe ein RichEdit auf meiner Form, in das ich ankommende Texte reinschreibe. Dabei wird zwar der Text eingefügt, aber danach steht der Cursor im RichEdit auf dem ersten Zeichen des Textes. Hab dann mal zum Probieren Postmessage benutze, wobei ich zuerst ein VK_CONTROL mit WM_KEYDOWN, danach dasselbe mit VK_END und danach beides mit WM_KEYUP an das Handle des Richedits sende. Aber irgendwie springt der Cursor dann nur an das Ende der jeweiligen Zeile. Als Übergangslösung hab ich mir ne Schleife gemacht, die dem RichEdit so oft ein VK_DOWN (Pfeil nach Unten) schickt wie es Zeilen hat, und danach ein VK_END schicke um ans Ende der letzten Zeile zu kommen. Aber das muss doch auch irgendwie so gehen, dass ich einfach Strg + Ende simuliere, damit ich nur eine Message abschicken muss... Weiß einer wie das geht? Bis dann, S - tefano |
Beim Memo geht es recht einfach mit
Delphi-Quellcode:
...:cat:...
Memo1.ScrollBy(0, MaxInt);
|
Hm, ne, beim RichEdit klappts leider nicht.
Aber ich könnt ja mal die Überschrift ändern... |
Moin Stefano,
TRichEdit ist von TCustomMemo abgeleitet und kennt ScrollBy. (zumindest bei mir). Ansonsten könntest Du Dir ja auch mal EM_SCROLL bzw. WM_VSCROLL ansehen. Das sinnvollste wäre aber wohl eigentlich, was Du beschrieben hast, also die Simulation von VK_CONTROL/VK_END. Du musst nur daran denken die Reihenfolge einzuhalten, also
|
Moin Christian,
Zitat:
Grüsse, Daniel :hi: |
Moin Daniel,
ist schon lustig. Ich hab's mal eben ausprobiert. Bei einem Memo funktioniert es auch nicht ;-) Das Caret wird verschoben, aber der angezeigte Ausschnitt des Controls nicht. Aber so geht's (getestet)
Delphi-Quellcode:
SendMessage(RichEdit1.Handle,WM_KEYDOWN,VK_CONTROL,0);
SendMessage(RichEdit1.Handle,WM_KEYDOWN,VK_END,0); SendMessage(RichEdit1.Handle,WM_KEYUP,VK_END,0); SendMessage(RichEdit1.Handle,WM_KEYUP,VK_CONTROL,0); |
@Chris
Genau so hab ichs auch gemacht (nur mit Postmessage statt Sendmessage). Passiert das gleiche wie bei mir. Das Strg wird dann irgendwie nicht erkannt, das Richedit reagiert nur auf die Message für VK_END. |
Moin Stefano,
probier's mal mit SendMessage. Postmessge wartet nicht bis die Message verarbeitet ist. Vielleicht geht dadurch etwas durcheinander. |
Hm, dann hab ich wohl vergessen das klar genug rauszustellen.
Hab mal stumpfer Weise deinen Code per Copy/Paste bei mir eingefügt. Zitat:
|
Re: RichEdit runterscrollen
so nach langem suchen hab ichs endlich gefunden.
also erst die SelStart setzen:
Delphi-Quellcode:
und dann das:
RichEdit1.SelStart := RichEdit1.GetTextLen();
Delphi-Quellcode:
SendMessage(RichEdit1.handle, EM_SCROLLCARET,0,0);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz