![]() |
AW: letzten linebreak aus tstrings (trichedit.lines) entfernen
Hi, comm,
@ mann mann ... : natürlich schaue ich mir die Hilfen an. Aber nicht jeder versteht wie du alles sofort .... In den Beispielen der Hilfe finde ich: procedure TForm1.ComboBox1DropDown(Sender: TObject); var I: Integer; begin with ComboBox1 do begin Items.BeginUpdate; { Prevent repaints until done. } .... Items.EndUpdate; {Reenable painting. } end; end; Von meinem Verständnis: Teile ich der Liste mit, daß ich was ändern will (BeginUpdate), stellt sie sich solange nicht neu dar, bis ich mitteile, daß ich fertig bin (EndUpdate).
Delphi-Quellcode:
In dem Beispiel wird aber mit jedem neuen Listeneintrag auch neu dargestellt, also die Liste hochgescrollt, bis der 1000ste Eintrag erreicht wird.
Procedure Test;
begin RichEdit1.Lines.BeginUpdate; RichEdit1.Clear; i:=strtoint(editintegerpanel_ua1.ei.text); for i := 0 to 1000 do TestRich1.Lines.Add(IntToStr(i)); RichEdit1.Lines.EndUpdate; end; Damit nützt mir das BeginUpdate - EndUpdate hier nichts - keine Unterdrückung der Neudarstellung. Aber auch LockWindowUpdate(richedit1.Handle) hilft da nicht. Gruß uwe |
AW: letzten linebreak aus tstrings (trichedit.lines) entfernen
Zitat:
Zitat:
MfG Dalai |
AW: letzten linebreak aus tstrings (trichedit.lines) entfernen
@Dalei: Danke, Du hast recht! Schreibfehler.
Dann werde ich damit noch ein wenig experimentieren. Gruß Uwe |
AW: letzten linebreak aus tstrings (trichedit.lines) entfernen
Zitat:
Delphi-Quellcode:
Procedure Test;
begin RichEdit1.Lines.BeginUpdate; RichEdit1.Clear; i := strtoint( editintegerpanel_ua1.ei.text ); for i := 0 to 1000 do TestRich1.Lines.Add( IntToStr( i ) ); RichEdit1.Lines.EndUpdate; end; |
AW: letzten linebreak aus tstrings (trichedit.lines) entfernen
@Sir Rufo: ja, ist richtig.
Nun habe ich mit BeginUpdate und EndUpdate etwas propbiert, verhindert auch größtenteils das Flackern bei vielfachem Einfärben. Eine interessante Beobachtung hier noch, die ich nicht erklären kann:
Delphi-Quellcode:
Dies ist nur ein Auszug aus dem umfangreicheren Original.
procedure TSimpCellRichEd_UA.SetEditModus(const EdMo: tcelleditmodi);
var s:string; begin try s:=''; lines.beginupdate; case Edmo of {1} emedaslines_UA: begin for i := 0 to 1000 do s:=s+inttostr(i)+lines.linebreak; text:=s; {--->} wordwrap:=false;//lines.assign(strl); end; {2} emedasFreePos_UA: begin for i := 0 to 1000 do s:=s+'{'+inttostr(i)+'}'+dupestring(' ',3); text:=s; {--->} wordwrap:=true; end; finally preparetext;//Einfärben an sehr vielen Stellen { case Editmodus of {1} emEdasLines_UA: self.wordwrap:=false; {2} emEdasFreePos_UA: self.wordwrap:=true; end; } lines.endupdate; end; end; Die Einträge werden also einmal wie ein Text, geklammert mit Zeilenumbruch dargestellt oder Zeile für Zeile. Lasse ich den Zeilenumbruch innerhalb der ersten Case-Schleife setzen {---->}, flimmert es beim Umrechnen von {2} nach {1}, und zwar nur dann, wenn Wordwrap vorher true war. Verlege ich das Setzen von wordwrap aus der ersten Case-Schleife in eine spätere (im Beispiel vor lines.endupdate), flimmerts nicht. Das passiert auch, wenn ich bei {1} direkt Lines fülle (for i:=0 to 100 do lines.add(inttostr(i))); Hebt vielleicht wordwrap:=false mein Beginupdate auf? Gruß Uwe |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:29 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