Hi,
doch, doch, das ist schon gelöst. Für diejenigen, die die etwas ähhm, verklausulierte Antwort
von Leuselator nicht ganz verstehen sollten : Die Sondertasten müssen im OnKeyDown behandelt werden und die "normalen"
zusätzlich im OnKeyPress. Ein Ereignis reicht nicht ! Z.B. so :
Delphi-Quellcode:
procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var i : integer;
ValidKeys : set of byte;
begin
ValidKeys := [VK_TAB,VK_BACK,VK_RETURN]; (* Backspace, Tab, Enter immer zulassen *)
case StringGrid1.col of
1 : ValidKeys := ValidKeys + [VK_F9,VK_F10];
4 : ValidKeys := ValidKeys + [VK_F3];
end;
if key in ValidKeys then with StringGrid1,EingDM do begin
case Key of
// je nach Sondertaste was machen
VK_F9 : begin
end;
VK_F10 : ;
VK_F3 : ;
VK_TAB,
VK_RETURN :;
end;
end
else begin
key := $0;
SysUtils.Beep;
end;
end;
nur Zahlen zulassen:
Delphi-Quellcode:
procedure TForm1.StringGrid1Key[b]Press[/b](Sender: TObject; var Key: Char);
var i : integer;
ValidKeys : set of char;
begin
ValidKeys := ['0'..'9'];
if not (key in ValidKeys) then begin
key := #0;
SysUtils.Beep;
end;
end;