Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - letztes Zeichen löschen


OliverN_26 - Do 09.12.10 16:29
Titel: letztes Zeichen löschen
Hi Leute

Ich breche mir hier gerade die Zähne an was eigentlich total banalem aus.
Ich schreibe in einem RichEdit Feld und habe ich Zeichenanzahl auf 200 begrenzt.
Jetzt will ich dass bei Zeichen 201 das Letzte einfach nur gelöscht wird und der Cursor
natürlich automatisch wieder einen zurück springt.

ich habs mit folgendem probiert:

Quelltext
1:
if Length(RichEdit1.Text) > 200 then                    



Quelltext
1:
2:
3:
SetLength(s,200);
oder
Delete(s,200,1);


Aber nix davon geht. Den Code habe ich im OnKeyUp oder OnKeyPress versucht.
Warum geht das nich? Oder übersehe ich was?

lg


Bergmann89 - Do 09.12.10 16:34

Hey,

prüf im OnKeyPress einfach ob die Länge größer als 200 ist. Wenn ja dann "lösch" den Tastendruck einfach:


Delphi-Quelltext
1:
2:
3:
4:
5:
procedure OnKeyPress(Sender: TObject; var Key: Char);
begin
  if Length(RichEdit1.Text) > 200 then
    Key := #0;
end;


MfG Bergmann.


OliverN_26 - Do 09.12.10 16:38

hey danke .. genau das habe ich gesucht :-)


Bergmann89 - Do 09.12.10 16:41

Hey,

evtl musst du das ganze noch etwas anpassen un die Backspace-Taste und solche Funktionstasten wieder zulassen, damit der User den Text weiterhin noch bearbeiten kann, ohne dessen Länge zu ändern.

MfG Bergmann.


OliverN_26 - Mo 13.12.10 23:30

Nein. Das passt so, da, wenn der Text länger 200 Zeichen ist der letzte Tastendruck einfach nicht gewertet wird.
Da bei Backspace sind die Textlänge ja wieder um 1 verringert, geht das alles genau so wie ich es wollte :-)

Danke nochmal