Delphi-PRAXiS

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 TMemo, MaxLength, Anzeige der noch möglichen Zeichen (https://www.delphipraxis.net/137619-tmemo-maxlength-anzeige-der-noch-moeglichen-zeichen.html)

hoika 24. Jul 2009 11:36


TMemo, MaxLength, Anzeige der noch möglichen Zeichen
 
Hallo #,

ich habe hier eine TMemo, da dürfen nur 250 Zeichen rein.
Jetzt möchte ich dem User anzeigen
"Noch x Zeichen möglich"

Muss ich da irgendwas wegen den Enters (manuell oder automatischer Umbruch)
irgendwas beachten ?
Gibt es da Fallstricke ?


Heiko

angos 24. Jul 2009 11:53

Re: TMemo, MaxLength, Anzeige der noch möglichen Zeichen
 
Hi,

beim automatischen Umbruch musst imho nicht beachten. Der Text ändert sich dadurch nicht. Beim manuellen Umbruch ist es so, dass dieser 2 Zeichen erzeugt. Da ist die Frage ob du diese 2 Zeichen mit berechnen willst oder außen vor läßt. Der Zeilenumbruch wäre #13#10.

Gruß
Ansgar

mirage228 24. Jul 2009 11:53

Re: TMemo, MaxLength, Anzeige der noch möglichen Zeichen
 
Also automatische Zeilenumbrüche des Memos werden nicht in den Lines.Text string umgesetzt. Manuelle aber schon.
Es sollte also ohne Probleme gehen "250 - Length(Lines.Text)" zu schreiben...

hoika 24. Jul 2009 12:25

Re: TMemo, MaxLength, Anzeige der noch möglichen Zeichen
 
Hallo,

Danke, ich probier es aus.
In meinem Fall (muss in eine DB als VarChar)
muss ich die #13#10 schon mit berücksichtigen.

#Update:#
Es klappt wunderbar.
Delphi-Quellcode:
  Label_LengthInfo.Caption:=
    IntToStr(Edit_Msg.MaxLength-Length(Edit_Msg.Lines.Text))
    +' / '+IntToStr(Edit_Msg.MaxLength);
Der Code wird im Memo.OnChange ausgeführt.


Heiko

himitsu 24. Jul 2009 12:41

Re: TMemo, MaxLength, Anzeige der noch möglichen Zeichen
 
Zitat:

Zitat von hoika
In meinem Fall (muss in eine DB als VarChar)
muss ich die #13#10 schon mit berücksichtigen.

in Memo1.Lines.Text bzw. Memo1.Text enthält ja die Zeilenumbrüche (abgesehn von den automatischen Umbrüchen, welche nur virtuell in der Anzeige umgebrochen werden, aber nicht in den .Lines

setze wirklich einfach nur .MaxLength deines Memos auf 250
und dann nur noch ...
Delphi-Quellcode:
procedure TForm1.Memo1Change(Sender: TObject);
begin
  Label1.Caption := Format('noch %d Zeichen', [Memo1.MaxLength - Length(Memo1.Text)]);
end;
alle weiteren Begrenzungen macht Delphi für dich :angel:

also eigentlich mußt da da nichts weiter beachten


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:09 Uhr.

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