Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
Erg: double;
begin
Erg := 0;
for i := 1 to 12 do
Erg := Erg + StrToFloat((FindComponent('Edit' + IntToStr(i)) as TEdit).Text);
if Erg <> 1 then
if MessageDlg('Die Summe der 12 Monate muss 1 ergeben, aktuelle Summe: ' + FloatToStr(Erg) + '. Bitte korrigieren', mtWarning, [mbYes], 0) = mrYes then
Button2.Enabled := false
end;
procedure TForm1.EditKeyPress(Sender: TObject; var Key: Char);
begin
//Nur Ziffern, Backspace, Punkt und Komma zulassen
if not (Key in [#48..#57, #8, '.', ',']) then
key := #0;
//Punkt durch Komma ersetzen
if key = '.' then
key := ',';
//Komma überprüfen
if key = ',' then
with (Sender as TEdit) do
if Text = '' then //wenn Komma als erstes Zeichen,
Text := '0' //dann eine 0 davor einfügen
else
if Pos(',',Text) > 0 then //Nur ein Komma möglich
key := #0;
end;
Wenn man schon testet, dann sollte man auch gleich richtig testen. Allerdings hab ich bestimmt irgendwo falsch gedacht
Is auf jeden Fall ungetestet und nur kurz hingeschmiert.
So wird auch getestet, ob das Komma das erste Zeichen war (dann wird eine 0 vors Komma geschrieben) und ob bereits ein Komma existiert (dann wird das Komma nicht akzeptiert).
Bin mir gerade nicht mehr sicher, ob das Setzen von Edit.Text den Text selektiert, falls das der Fall ist, müßte man evtl noch die Selektion löschen.
//Edit: Kleine Fehlerchen entfernt
//Edit: En bisserl kommentiert
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;