Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TRichEdit probleme beim scrollen (https://www.delphipraxis.net/147352-trichedit-probleme-beim-scrollen.html)

DelTurbo 6. Feb 2010 10:54


TRichEdit probleme beim scrollen
 
Hi,

ich habe ein problem mit dem RichEdit. Ich habe vorgegeben das die History 200 betragen darf. Bin ich unter 200 klappt alles wunderbar. Sobald was neues kommt wird es unten angehängt und gegebenfalls sauber gescrollt.

Überschreite ich die 200 und lösche dann die oberste zeile weg, springt er irgendwo mitten rein. Das heisst ich sehe dann nichtmehr das ende des textes, sondern der steht irgendwo mitten drin. Srcolle ich den dann wieder nach unten, passiert bei der nächsten ausgabe das gleiche. Er scrollt einfach irgendwo mitten rein.

Das RichEdit benutze ich nur als ausgabe. Es ist auf ReadOnly. Ist die 200 erreicht mache ich folgendes.

Delphi-Quellcode:
       
while REditOut.Lines.Count > 200 do begin
   REditOut.Lines.Delete(0);
end;
REditOut.Perform(EM_SCROLLCARET,SB_LINEDOWN,0);
Was mache ich falsch?

Vielen dank im voraus

himitsu 6. Feb 2010 11:03

Re: TRichEdit probleme beim scrollen
 
http://msdn.microsoft.com/en-us/library/bb787527%28VS.85%29.aspx
SB_LINEDOWN
The user clicks the bottom scroll arrow.
Increments the scroll box position; scrolls toward the bottom of the data by one unit.

Wenn du löschst, dann landet der Cursor an der Stelle, wo gelöscht wurde.

Setze den Cursor (SelStart) auf das Dateiende und laß zu diesem scrollen.

DelTurbo 6. Feb 2010 11:46

Re: TRichEdit probleme beim scrollen
 
Delphi-Quellcode:
REditOut.SelStart:=REditOut.Lines.Count
so? Nach dem Delete oder vorher?

Sorry das ich nachfrage, aber es dauert immer bis zu 4 stunden bis ich die 200 zeilen voll habe. Und wenn ich weniger nehme zum testen dann klappt es?!?

himitsu 6. Feb 2010 11:59

Re: TRichEdit probleme beim scrollen
 
SelStart wird nicht in Zeilen angegeben.

Delphi-Quellcode:
REditOut.SelStart := Length(REditOut.Text);

// oder in Kurz

REditOut.SelStart := -1;
Zitat:

Nach dem Delete oder vorher?
Wenn durch das Delete die Position verschoben wird, dann wirst du es wohl danach machen müssen. :zwinker:

PS: das Delete vor dem Add würde auch gehn, da durch das Add ebenfalls die Position verschoben wird ... darum ist es danach immer am Textende. :angel2:



Eigentlich sollte bei Add automatisch gescrollt werden, darum würde ich es so machen und nicht selber nochmals scollen:
Delphi-Quellcode:
while REditOut.Lines.Count >= 200 do
  REditOut.Lines.Delete(0);
REditOut.Lines.Add(s);

DelTurbo 6. Feb 2010 12:08

Re: TRichEdit probleme beim scrollen
 
Ach, klar. Ich dreh das dann am besten einfach um. Also erst Del und dann Add.

Vielen dank!!

patti 6. Feb 2010 12:59

Re: TRichEdit probleme beim scrollen
 
Alternativ kannst du auch folgendes probieren:

Delphi-Quellcode:
SendMessage(ARichEdit.Handle,WM_VSCROLL,SB_BOTTOM,0);
mfg


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz