Hallo,
ich habe ein Problem bei folgender Aufgabe:
Ich habe eine Spalte und möchte bei einer Eingabe überprüfen, ob die Eingabe eine Zahl oder nicht.
Sollte sie keine Zahl sein, erscheint ein Hinweis, dass nur Zahlen eingegeben werden sollen.
Am Ende der Spalte sollen alle Werte addiert werden.
Delphi-Quellcode:
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
var Summe,i:Integer;
begin
//Wenn die gedrückte Tastarturtaste im Bereich von 0 bis 9 liegt
if not (Key in ['0'..'9',Char(VK_BACK)]) then //VK(Virtual-Key)_BACK = Backspace
begin
//Die Falsche Eingabe wird mit der Backspace-Taste(#0) gelöscht
Key := #0;
Label1.Caption := 'NUR ZAHLEN';
end;
//Variable wird initialisiert mit Startwert
Summe := 0;
//Tabellenspalte wird durchlaufen
for i := 1 to StringGrid1.RowCount -2 do
begin
//Wenn das Feld leer ist, soll er mit der Abfrage weitermachen
if StringGrid1.Cells[1,i] = '' then
Continue
else
//Ist das Feld nicht leer, soll der Wert in die Variable addiert werden
Summe :=Summe + StrToInt(StringGrid1.Cells[1,i]);
//Letztes Feld kriegt die Summe aller Felder
StringGrid1.Cells[1,StringGrid1.RowCount -1] := IntToStr(Summe);
end;
end;
1.Zeile der Spalte ist beschriftet und fixed, deshalb startet die FOR-Schleife mit 1.
Problem:
Der ganze Ablauf, mit dem Zählen, verzögert sich um eine Ausführung.
Bsp:
Feld1= 1 Summe= ist leer
Feld2= 3 Summe= 1
Feld3= 6 Summe= 4
Was habe ich übersehen oder nicht bedacht?
MfG