Einzelnen Beitrag anzeigen

Benutzerbild von Reinhardtinho
Reinhardtinho

Registriert seit: 26. Feb 2007
411 Beiträge
 
Delphi 5 Enterprise
 
#12

Re: RichEdit: Zeilen und Zeichen pro Zeile begrenzen

  Alt 5. Nov 2007, 11:34
Hm, ich hab jetzt noch was gefunden, was (vorerst) läuft (keine 3000 Zeilen ):

Delphi-Quellcode:
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;
Hier begrenze ich die Zeichenanzahl pro Zeile auf 10 und die Zeilenanzahl auf 4.
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 dsdt.info.


Ich bedanke mich bei allen, die mir geholfen haben, das Problem zu lösen (vielleicht melde ich mich später nochmal).


MFG
Lorenz
Ich habe viel von meinem Geld für Alkohol, Weiber und schnelle Autos ausgegeben ... Den Rest habe ich einfach verpraßt.

George Best - 22.05.1946 - 25.11.2005 - nordirischer Fußballspieler
  Mit Zitat antworten Zitat