フォーカス移動

解決


SKJP  2004-08-27 21:21:56  No: 10636

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”以降が全く反応しません。
ちまにみフォームはダイアログです。
どなたか回答できる方いましたら、宜しくお願いします。


TtPIPICH  2004-08-27 22:25:08  No: 10637

実行されていますよ。


SKJP  2004-08-27 22:49:11  No: 10638

そのはずなのですが、反応しないんですよ。
ちなみに、

[省略]

if ((Pos(Key,'0123456789')=0) and     // 数字
     (Ord(Key) <> VK_BACK) and          // バックスペース
     (Key <> #13)) then                 // エンターキー
  begin
    ShowMessage('NG');
    Key := #0; //無視する

[省略]

とすると、”NG"は表示されるのですが、Enterキーだけが反応しないんですよ。


LupinⅢ  URL  2004-08-27 23:00:05  No: 10639

条件がおかしいのではないでしょうか


LupinⅢ  URL  2004-08-27 23:00:58  No: 10640

and -> or


SKJP  2004-08-27 23:07:31  No: 10641

いえ、他のユニットでは上記のコードで正確に動作するのですが。。


LupinⅢ  URL  2004-08-27 23:11:49  No: 10642

このようにしてはどうでしょう?

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;


SKJP  2004-08-27 23:23:17  No: 10643

LupinⅢ様へ

私のミス(?)でした。
ダイアログフォームのプロパティの設定を変更したら動作しました。

次の通りです。

[初期設定]
Default ⇒ true

[変更後]
Default ⇒ false

なぜこれだと動作するかは未確認ですが。。

TtPIPICH様、LupinⅢ様、貴重な時間を割いていただいてありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加