Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Blank im Edit-Control für Integer/Float-Werte

  Alt 16. Jan 2006, 16:16
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
  Mit Zitat antworten Zitat