Der Parameter Key im OnKey Down ist mir zwar immer noch nicht ganz klar, aber es geht jetzt. Der Code drumrum, also die tatsächliche Auswertung der Tasten erfolgt im OnKeyDown. Und das OnKeyPress ist dafür zuständig, die Tasten erstmal so zu überprüfen, wie ichs gemacht habe. Alles ins OnkeyDown rein zu setzen geht also so nicht.
Mir solls recht sein. Die gesamte OnKeyDown hat jetzt schon ca. 250 Zeilen.
Je kleiner die wird um so besser. Jetzt wird sie also nur noch durchlaufen, falls ein Zeichen überhaupt zulässig ist. Das hier ist also jetzt ausgelagert in OnKeyPress:
Delphi-Quellcode:
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
var ZulZeichen : set of char;
begin
ZulZeichen := [];
with StringGrid1 do begin
if Col = 1 then
ZulZeichen := [#48..#57,#8,#13,#27,chr (VK_F9),chr (VK_F10)]
else if Col = 4 then
ZulZeichen := [#48..#57,#8,#13,#27,chr (VK_F3)];
if not (key in ZulZeichen) then
key := #0;
end;
end;