AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi RichEdit: Zeilen und Zeichen pro Zeile begrenzen
Thema durchsuchen
Ansicht
Themen-Optionen

RichEdit: Zeilen und Zeichen pro Zeile begrenzen

Ein Thema von Reinhardtinho · begonnen am 1. Nov 2007 · letzter Beitrag vom 5. Nov 2007
 
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, 10: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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:43 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