0

私はこのコードを持っています

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
begin
  if not (Key in [Ord('0')..Ord('9')]) then
    Key := 0;
end;

Delphi 2007 では問題なく動作しました。Delphi 2009 にアップグレードして任意の文字を押しようとすると、それが受け入れられ、キー := 0 が入力をトラップしませんか?

誰も同じ動作に遭遇しましたか?

4

3 に答える 3

13

これが Delphi 2007 で機能したと確信していますか? Delphi 2007 と 2009 でコードを試しました。両方とも同じように動作します (キー ストロークは食べられません)。数字のみを受け入れたい場合は、OnKeyPress イベントを使用し、Key パラメータを #0 に設定する必要があります。

于 2009-02-21T17:38:53.887 に答える
3

OnKeyDownはscancodeを提供します。 OnKeyPressは文字を与えます。私が覚えているDelphiのすべてのバージョンでそうでした。

于 2009-02-22T00:08:01.893 に答える
0

イベント で送信Key:=0;するには:KeyDown

Key:=HiWord(GetKeyState(0));

//do something
于 2012-01-11T13:15:36.987 に答える