Hallo Alex,
die Geschichte mit dem Leerzeichen ist mysteriös. Mir scheint, du suchst nach einer Möglichkeit die Eingabe von Festkommazahlen sicher zu gestalten, wobei eine Eingabe auch ganz unterbleiben kann. Da gibt es mehrere Strategien:
- Unbeschränkte Eingabe und spätere Prüfung
- Unbeschränkte Eingabe und visuelle Rückmeldung
- Eingabebeschränkung
Der erste Ansatz gefällt wohl niemandem so recht. Michael hat den letzten Fall aufgegriffen, wenn auch anders als du mit der Edit-Maske. Ich erwärme mich mehr für den zweiten Fall, der quasi einen Kompromiss darstellt. Wenn du magst ziehe eine TEdit-Komponente auf eine Form und trage in den Ereignissen OnChange(), OnEnter() und OnExit() die folgenden Code-Zeilen ein um zu sehen was ich meine:
Delphi-Quellcode:
procedure TDemoForm.EditChange(Sender: TObject);
var
fTest: Extended;
begin
with Sender as TEdit do
if Focused then
begin
if (Text = '') or TryStrToFloat(Text, fTest) then
begin
Color := clWhite;
Font.Color := clBlack;
end else
begin
Color := clRed;
Font.Color := clWhite;
end;
end;
end;
procedure TDemoForm.EditExit(Sender: TObject);
begin
with Sender as TEdit do
Text := Format('%.2n', [StrToFloat(Text)]);
end;
procedure TDemoForm.EditEnter(Sender: TObject);
begin
with Sender as TEdit do
begin
Text := StringReplace(Text, ThousandSeparator, '', []);
SelectAll;
end;
end;
Freundliche Grüße vom marabu