数字キーで他のフォームを表示するには?

解決


TT  2004-12-05 09:35:02  No: 12112

初めて質問をします。

数字キー[0〜9]で他のフォームを表示し、そのフォームの中にあるEditに押された数字キーを反映する様にしたいのですが、よく分かりません。
他のフォームを呼び出す事は出来るのですが、それをメインのフォームのkeypressメソッドに書き込んでも実行しても上手く動きません。
ちなみに文は次の様にしています。
  if Key in ['0'..'9'] then (他のフォームを呼び出す命令);

何か良い解決方法を教えてください。
宜しくお願いします。


Mr.XRAY  URL  2004-12-05 09:57:56  No: 12113

うまく行かないというもはどういう状態なのでしょうか.
私のところでは,ちゃんと0〜9のキーを押すと,別のFormが表示さ
れます.


TT  2004-12-05 10:31:30  No: 12114

フォーム上で0〜9のボタンを押してもまったく変化がありません
Mr.XRAYさんの所ではちゃんと表示されるようですね
どういったプログラムが見せて下さいませんか?


Mr.XRAY  URL  2004-12-05 10:53:08  No: 12115

>どういったプログラムが見せて下さいませんか?

TTさんはとんなコードなんですか.


TT  2004-12-05 11:05:53  No: 12116

数字キーで他のフォームを呼び出そうとしている所は、

procedure Tfrm_main.FormKeyPress(Sender: TObject; var Key: Char);
begin
   if Key in ['0'..'9'] then ShowForm(Tfrm_input);
end;

で、ShowForm(Tfrm_input)はボタンで動作させた所ちゃんと他のフォームを呼び出せます。
ちなみに、メインフォーム:frm_main  入力フォーム(呼出):frm_inputです。


Mr.XRAY  URL  2004-12-05 11:07:34  No: 12117

私のテスト手順です.

(1) 新規プロジェクトを作成.このFormをForm1

(2) [ファイル][フォームの新規作成].このForm2
    このFormにEditを一つ配置.

(3) Form1を表示して,[ファイル][ユニットを使う]で
    unit2を選択.

(4) Form1を表示して,OnKeyPressのコードを以下とする.
    procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
    begin
      if Key in ['0'..'9'] then begin
         Form2.Edit1.Text:=Key;
         Form2.ShowModal;
      end;
    end;

(5) 実行して,0〜9までのどれかのキーを押す.
    Form2が表示される.

以上ですよ.自分がやった手順を書かないと,どこに不具合があるのか
わかりません.このぐらいのコードでしたら,是非提示して下さいませ.

http://homepage2.nifty.com/Mr_XRAY/Links.htm
ここのメールのマナーのリンクも是非お読み下さいませ.


Mr.XRAY  URL  2004-12-05 11:11:56  No: 12118

>if Key in ['0'..'9'] then ShowForm(Tfrm_input);

ここで,ShowForm(Tfrm_input)がボタンクリックで表示されるというこ
とは,この中身もわからないと判断できませんね.


TT  2004-12-05 11:28:26  No: 12119

すみませんでした。
あまり、こういった所に書き込んだ事が無いので良く分からなくて

さっそく、やってみたのですが、やはり何の変化も起きず、
メインフォームのプロパティの中で'KeyPreview'というのをTrueに設定したら動作しました。


Mr.XRAY  URL  2004-12-05 11:37:41  No: 12120

>'KeyPreview'というのをTrueに設定したら動作しました

もしかして,メインFormの上に何か配置していませんか.
そのどれかにフォーカスがある可能性があります.

私のところでは,先程の手順ですので,何も配置していませので,
KeyPreviewはFalseのままでも動作します.
WindowsXP(SP2)+ Delphi5(UP1)

私の提示した手順でテストしましたか.折角丁寧に手順を示したのに...
>(1) 新規プロジェクトを作成.このFormをForm1
と書いてあります.

行き詰まったら単純化してテストするのが原則です.


TT  2004-12-05 11:51:03  No: 12121

Formに色々配置してありました
それらも提示するのが鉄則なんですね。

よく分からずいきなり質問したのにお答ありがとうございました。


Mr.XRAY  URL  2004-12-05 17:53:32  No: 12122

TTさん,ゴメンなさい.

>ShowForm(Tfrm_input)はボタンで動作させた所ちゃんと他のフォームを呼
>出せます。

ここで,ボタンがFormに配置してあることに気づくべきでした.
まだまだ未熟なわたしです.
私の発言で,不愉快な思いをさせてしまい,失礼しました.
でも解決してよかったです.


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

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






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