![]() |
Re: RichEdit: Zeilen und Zeichen pro Zeile begrenzen
Normalerweise würde ich SelStart am Anfang einer lokalen Variable zuweisen und am Ende wieder auf den Wert dieser setzen. Aber da du die Länge des Textes änderst wird das sicher net so leicht gehen :| ...
Zitat:
Es stellt sich aber nicht nur die Frage was "schön" ist, sondern auch was später stabil läuft ohne 3000 Zeilen Code für "nichts" zu verschwenden und trotzdem andauernd Fehler zu verursachen :-D ... |
Re: RichEdit: Zeilen und Zeichen pro Zeile begrenzen
Hm, ich hab jetzt noch was gefunden, was (vorerst) läuft (keine 3000 Zeilen :stupid:):
Delphi-Quellcode:
Hier begrenze ich die Zeichenanzahl pro Zeile auf 10 und die Zeilenanzahl auf 4.
procedure TForm1.Memo1Change(Sender: TObject);
procedure SetCursorInMemo(const AMemo: TCustomMemo; X, Y: Integer); begin AMemo.SelStart := AMemo.Perform(EM_LineIndex, X, 0) + Y; AMemo.Perform(EM_SCROLLCARET, 0, 0); AMemo.SetFocus; end; var sText : String; i : Integer; NewText : String; Line : Integer; Col : Integer; Lines : Integer; begin sText := Memo1.Text; if CanChange then begin Line := Memo1.CaretPos.Y; Col := Memo1.CaretPos.X; Lines := Memo1.Lines.Count; end; NewText := ''; sText := StringReplace(sText, #13, '', [rfReplaceAll]); sText := StringReplace(sText, #10, '', [rfReplaceAll]); for i := 1 to Length(sText) do begin if ((i Mod 10) = 0) then NewText := NewText + sText[i] + #13#10 else NewText := NewText + sText[i]; end; (* of for *) if CanChange then begin CanChange := False; Memo1.Text := NewText; if (Lines <> Memo1.Lines.Count) then Col := Col + 2; //Cursorposition neu setzen SetCursorInMemo(Memo1, Line, Col); end; CanChange := True; if (Memo1.Lines.Count > 4) then Memo1.Lines.Delete(4); end; Nach ein paar Tests kann ich sagen, dass es soweit seinen Zweck erfüllt, wie gut es wirklich ist, wird sich noch zeigen. Die Prozedur SetCursorInMemo ist von ![]() Ich bedanke mich bei allen, die mir geholfen haben, das Problem zu lösen (vielleicht melde ich mich später nochmal). MFG Lorenz |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:05 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