Thema: Delphi Edit Felder

Einzelnen Beitrag anzeigen

Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#16

Re: Edit Felder

  Alt 28. Sep 2005, 15:28
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;
  Mit Zitat antworten Zitat