procedure TInitializedDlg.a_EditKeyPress(Sender: TObject; var Key: Char);
begin
// 数字とバックスペースキーと処々のキー以外無視する
if ((Pos(Key,'0123456789')=0) and // 数字
(Ord(Key) <> VK_BACK) and // バックスペース
(Key <> #13)) then // エンターキー
begin
Key := #0; //無視する
end else if(Key = #13)then
begin
SendMessage(Handle, WM_NEXTDLGCTL, 0, 0);
Key := #0;
end;
end;
--------------------------------------------------
上記のようにEnterキーを押すと移動するように作成したのですが、
Enterを押しても”if(Key = #13)then”以降が全く反応しません。
ちまにみフォームはダイアログです。
どなたか回答できる方いましたら、宜しくお願いします。
実行されていますよ。
そのはずなのですが、反応しないんですよ。
ちなみに、
[省略]
if ((Pos(Key,'0123456789')=0) and // 数字
(Ord(Key) <> VK_BACK) and // バックスペース
(Key <> #13)) then // エンターキー
begin
ShowMessage('NG');
Key := #0; //無視する
[省略]
とすると、”NG"は表示されるのですが、Enterキーだけが反応しないんですよ。
条件がおかしいのではないでしょうか
and -> or
いえ、他のユニットでは上記のコードで正確に動作するのですが。。
このようにしてはどうでしょう?
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
// 数字とバックスペースキーと処々のキー以外無視する
if ((Pos(Key,'0123456789')=0) and // 数字
(Ord(Key) <> VK_BACK) and // バックスペース
(Key <> #13)) then begin // エンターキー
Key := #0; //無視する
end;
if(Key = #13)then begin
SendMessage(Handle, WM_NEXTDLGCTL, 0, 0);
Key := #0;
end;
end;
LupinⅢ様へ
私のミス(?)でした。
ダイアログフォームのプロパティの設定を変更したら動作しました。
次の通りです。
[初期設定]
Default ⇒ true
[変更後]
Default ⇒ false
なぜこれだと動作するかは未確認ですが。。
TtPIPICH様、LupinⅢ様、貴重な時間を割いていただいてありがとうございました。
ツイート | ![]() |