Hiermit braucht man nicht einmal eine
Exception abzufangen. Über die Tastatur sind Eingaben wie "53.,.543.3435,,,543.43" nun ausgeschlossen:
Code:
procedure TRealEdit.KeyPress(var Key:Char);
var ZulZeichen : SET OF char;
begin
inherited KeyPress(Key);
if OnlyReals then begin
ZulZeichen := ['0'..'9',#8];
if pos (DecimalSeparator,text) = 0 THEN // kein . im RealEdit.text . zulassen
ZulZeichen := ZulZeichen + [DecimalSeparator]
else
ZulZeichen := ZulZeichen - [DecimalSeparator]; // zweiten . verhindern
if not (Key in ZulZeichen) then
Key := #0;
end;
end;
Jetzt wäre es vielleicht noch schön, auch den Tausenderpunkt zu berücksichtigen und automatisch zu setzen. Wegen der tollen Resonanz hier, werde ich das wohl auch selber machen müssen.
Zwischenbericht:
alle Eigenschaften der Delphi Standardkomponente TEdit wurden an die neue Komponente TRealEdit vererbt, dann wurden einige Methoden überschrieben und somit durch eigene ersetzt. Um dies zu vereinfachen wurden im
OI zwei zusätzliche Felder eingefügt: "Alignment" und "RealsOnly", siehe "published"-Sektion. Also kann ein Edit-Feld nach Belieben rechts/linksbündig oder zentriert eingegeben/angezeigt werden. Steht OnlyReals auf false, können beliebige Zeichen eingegeben werden, RealEdit.text kann dann halt ausgerichtet werden. Steht es auf true, werden nur Zahlen akzeptiert, wobei ein Komma nicht mehrfach eingegeben werden kann. Das schließt falsche Zahleneingaben aus. Desweiteren wurde ein
Package erstellt -> compiliert -> installiert, so daß die Komponente wie gewohnt einfach auf eine Form gezogen werden kann.
P.S. (das kann ich mir jetzt doch nicht verkneifen) : zumindest für mich ist es unbegreiflich, daß anscheinend von 99% nur das vorgekaute von Borland benutzt wird. Delphi ist von Grund auf objektorientiert ausgelegt. Alle Komponenten, die ihr benutzt, egal ob Button oder Table sind in ähnlicher Weise von Borland erstellt worden. Da führen sie bei Delphi 6 TLabeledEdit (ist nicht viel mehr, als das TRealEdit hier) ein und schon werden sie Tausende von Updates los. Und ihr Tausende Euros.
Das soll verstehen, wer will. Gott sei Dank gibt es keine Pisa-Studie über deutsche Programmierer. Die würde weit schlimmer ausfallen, als die von den Schülern.
Finde ich ziemlich traurig, so was.