Delphi-PRAXiS
Seite 1 von 2  1 2      

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 Richeditfeld auf Größe begrenzen (https://www.delphipraxis.net/1445-richeditfeld-auf-groesse-begrenzen.html)

gogi2207 27. Nov 2002 12:32


Richeditfeld auf Größe begrenzen
 
Hi,
habe ein Richeditfeld, dieses soll in seiner Größe nicht veränderbar sein. D.h. wenn das Ende der letzten Zeile des Richeditfeldes erreicht worden ist, darf nicht einfach vorne wieder weiter gemacht werden und die erste Zeile nach oben verschoben werden. Es darf kein weiterer Eintrag mehr möglich sein. Wie kann man dieses Problem beheben? 8)

Sebastian Nintemann 27. Nov 2002 13:33

Hallo, vielleicht hilft dir ja die Eigenschaft MaxLength weiter, mit der kannst du auf jeden Fall schonmal die Zeichenanzahl begrenzen.

Gruß, Sebastian

gogi2207 27. Nov 2002 13:40

Maxlength bringt mir in meinem Fall wenig, da die Größe der Schrift im Richeditfeld variabel ist. Es kann also sein, dass z.B 100 Zeichen in das Richeditfeld passen oder aber nur 80.

CalganX 27. Nov 2002 14:39

Hi,
ich frage mich, wofür das wirklich nötig ist. Ansonsten kannst du WordWrap = true und dann gucken, dass in der nächsten Zeile wirklich nichts mehr steht...

Chris

Christian Seehase 27. Nov 2002 16:44

Moin Gogi,

nur mal so als Idee (ungetestet):

Prüfe im OnChange Ereignis, den Wert der maximalen Zeilenzahl und lösche alle darüber liegenden Zeilen.

Beispiel:

Delphi-Quellcode:
procedure TForm1.RichEdit1Change(Sender: TObject);

const
  _iMaxLines = 5;

begin
  if RichEdit1.Lines.Count > _iMaxLines then
  begin
    while (RichEdit1.Lines.Count) > _iMaxLines do
    begin
      RichEdit1.Lines.Delete(RichEdit1.Lines.Count-1);
    end;
  end;
end;

RomanK 27. Nov 2002 17:04

Ja, aber wie kommt man dann auf die Anzahl der Linien ???
Ich habs mit
Delphi-Quellcode:
richedit1.height / richedit1.Font.height
und mit
Delphi-Quellcode:
richedit1.height / richedit1.Font.size
versucht, aber beide Werte ergeben nicht die Anzahl der Linien die gesucht ist !!!
Kann ich es mit der Schriftgröße machen ??? Wenn ja, wie dann ??

CalganX 27. Nov 2002 17:50

Um meinen Vorschlag von oben etwas zu verdeutlichen:
Delphi-Quellcode:
RichEdit1.WordWrap := true;
{ ... }
procedure TForm1.RichEdit1Change(Sender: TObject);
begin
  if RichEdit1.Lines.Count > 1 then begin
    RichEdit1.ReadOnly := true; // eine Möglichkeit...
    RichEdit1.Lines.Delete(1);
  end;
end;
Um das zu erklären: Du guckst, ob die Anzahl der Zeilen größer als 1 ist, und wenn ja löscht du die 2. Zeile (Delphi fängt bei 0 an).

Chris

Christian Seehase 27. Nov 2002 21:56

Moin Chris,

dabei übersiehst Du nur, dass jemand auch per Copy&Paste etwas einfügen könnte, so dass es durch aus Sinn macht alle Zeilen, die über die gewünschte Anzahl hinausgehen zu löschen.
Sicher ist sicher ;-)

RomanK 27. Nov 2002 22:03

Jetzt haben wir aber immernoch nicht gelöst wie man auf die Zeilenanzahl kommt ! Hat keiner von euch eine Idee?

Marco Haffner 27. Nov 2002 23:59

Hiermit solltest Du die möliche Anzahl der Zeilen erhalten:

Delphi-Quellcode:
var
  MaxLines: Word;
begin
  with RichEdit1 do
  begin
    Canvas.Font := Font;
    MaxLines := (Height div Canvas.TextHeight('Wg'));
  end;

  {...}
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:57 Uhr.
Seite 1 von 2  1 2      

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