onKeyPress wird jedesmal wenn eine Taste gedrückt wurde abgearbeitet.
Und wenn man den Text der Zelle (die in diesem Moment bearbeitet wird) auf vorhandene Punkte prüft, kann man beim vorhandensein eines Punktes verhindern das ein neuer eingegeben wird.
Delphi-Quellcode:
If (Key := '.') and (Pos(StringGrid1.Cells[StringGrid1.Selection.Left, StringGrid1.Selection.Top]) > 0) Then Key := #0;
If {Punkt wurde eingegeben} and {ist schon ein Punkt vorhanden} Then Key := #0;
Ich würde den Code allerdings noch um ein paar Steuerzeichen erweitern.
Delphi-Quellcode:
StringGrid1.Options := [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goEditing]; {kein goRangeSelect}
If StringGrid1.Cells[0, lARow] = MENGE) Then Begin
//nur '.' und '0'-'9' zulassen
If not (Key in [#08{Del}, #13{Enter}, #27{ESC}, '.', '0'..'9']) Then Key := #0;
//wenn '.' eingegeben und schon vorhanden - '.' nicht zulassen
If (Key := '.') and (Pos(StringGrid1.Cells[StringGrid1.Selection.Left, StringGrid1.Selection.Top]) > 0) Then Key := #0;
End;