過去の桐井戸端BBS (桐ver.8)
13528 コマンドボタンを押すとき、Enterキーを押す方法だけを無効にしたい。 磯田 2001/10/16-17:47
こんにちは。V8SP6を使っています。
早速ですがフォームのコマンドボタンを押す方法は標準では フォーカスをそのボタンに移して
(1)Enterキーを押す。
(2)スペースキーを押す。
(3)マウスで左クリック
があると思いますが、このうち(1)のEnterキーを押す だけを無効にすることはできないでしょうか。
もちろんイベントを使うことに成ると思うのですが、記述の仕方がよく分かりません。
よろしくお願いします。
13529 Re:イべントではないのですが、ウィンドウ会話コマンドなら KH 2001/10/16-18:56
記事番号13528へのコメント
磯田さん、こんばんは。

>(1)Enterキーを押す。
>(2)スペースキーを押す。
>(3)マウスで左クリック
>があると思いますが、このうち(1)のEnterキーを押す だけを無効にすることは
>できないでしょうか。もちろんイベントを使うことに成ると思うのですが、記述の
>仕方がよく分かりません。よろしくお願いします。

イベントではありませんので、お呼びでなければ読み飛ばしてください。

ウィンドウ会話コマンドでフォームのボタンを処理しているとすれば(していないでしょうけど一応コメント)、
許可作業=なしにすれば、Enterキーのみ受け付けず、(2)と(3)のみ有効になります。
例                               ↓
ウィンドウ会話 &メインメニュー,カーソル=→,更新=許可,許可作業=なし,ガイド="処理を選択してください",終了状態=&終了状態,ボタン=&メイン処理
13530 Re:コマンドボタンを押す方法 アックン 2001/10/16-19:00
記事番号13528へのコメント
磯田さん、こんばんは。こんな風にされてはどうでしょうか。
フォームとイベントの例をあげます。
この例はコマンドボタンの機能名やパラメータリストを設定してないときの例です。
もしコマンドボタンに機能名やパラメータリストを設定したいときは、
一部手直しが必要ですので、
そのときは内容を具体的に書いて質問を続けてください。
よろしくお願いします。

例:
フォーム(ダイアログです。表は不要です。)
1)コマンドボタンのオブジェクト名  bボタン_1、
機能名と機能パラメータリストは無記入。

2)コマンドボタン bボタン_1、
機能名を 閉じる とします。

3)テキストボックスのオブジェクト名は適当、ソースは &秒 とします。 

以下イベント例:

名札 メイン
   &秒 = 0


手続き定義開始 bボタン_1::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
   call テスト()
手続き定義終了

手続き定義開始 フォーム::キーダウン(長整数 &仮想キーコード,長整数 &スキャンコード,長整数 &フラグ,参照 長整数 &処理中止)
   var 文字列{ &focus }
   method @フォーム.フォーカスオブジェクト取得( &focus )
   if( &仮想キーコード=32 .and &focus="bボタン_1" )
     method @フォーム.キー変換( 7 )
     手続き実行 テスト()
     &処理中止 = 1
   else
     method @フォーム.キー変換( 0 )
     &処理中止 = 0
   end
手続き定義終了

手続き定義開始 テスト()
   &秒 = &秒+1
   メソッド呼び出し @フォーム.変数変更()
手続き定義終了

アックン(=^・^=)
13531 Re:コマンドボタンを押す方法 アックン 2001/10/16-19:03
記事番号13530へのコメント
訂正

(誤) 2)コマンドボタン bボタン_1、
(正) 2)コマンドボタン bボタン_2、

13570 Re:コマンドボタンを押す方法 磯田 2001/10/18-09:00
記事番号13530へのコメント

アックンさんありがとうございます。いくつか質問があります。
上記イベント例で method @フォーム.キー変換( 7 ) の意味を教えてください。
それと &秒 という変数を使っておられますが何の目的で使っておられるのでしょうか。
よろしくお願いします。

13571 Re:イべントではないのですが、ウィンドウ会話コマンドなら 磯田 2001/10/18-09:04
記事番号13529へのコメント

>例                               ↓
>ウィンドウ会話 &メインメニュー,カーソル=→,更新=許可,許可作業=なし,ガイド="処理を選択してください",終了状態=&終了状態,ボタン=&メイン処理

KHさんありがとうございます。
フォームにはいろんなコマンドボタンやテキストボックスがあってあるひとつのコマンドボタンに対してだけEnterキーを無効にしたいのです。
説明不足ですみません。
13580 Re:コマンドボタンを押す方法 アックン 2001/10/18-12:08
記事番号13570へのコメント
磯田さん、こんにちは。

> 上記イベント例で method @フォーム.キー変換( 7 ) の意味を教えてください。

HELP(HTML)の説明文を借りれば、そのフォーム内で、
「桐と Windows が割り当てたキーの機能をすべて無効にします」
という「メソッド呼び出し」です。
パラメータの 7 ですべての機能を無効にすると思います。

意味はHTMLヘルプに詳しいので、さらにそちらをご覧いただくとして、
ヘルプの説明に例がアップされており、私がアップしたものはそれを少し変えただけのものです。

> それと &秒 という変数を使っておられますが何の目的で使っておられるのでしょうか。

テキストボックスのソースに &秒 と設定して、&秒の値を表示し、コマンドボタンの動作をこの値で確認するために用いました。
コマンドボタンを左クリックしたら、表示されている数字がひとつ上がります。
有効なキーを押しても数字がひとつ上がりますが、
無効化したキーを押してもこの数字は増えません。
このようなテスト用ですから、実際の処理には不要です。

コマンドボタンを左クリックまたは有効なキーを押したら実行したい実際の処理を記述する位置は、
下記の「手続き定義開始 テスト()」から「手続き定義終了」の間にしてください。

>>手続き定義開始 テスト()
>>   &秒 = &秒+1
>>   メソッド呼び出し @フォーム.変数変更()
>>手続き定義終了

アックン(=^・^=)
13584 Re:コマンドボタンを押す方法 磯田 2001/10/18-13:15
記事番号13580へのコメント
アックンさん、こんにちは。早速の回答ありがとうございます。
おかげさまでイベントの使い方がまた少し分かりました。
最初の頃はイベントってなんだろうと思っていましたが、使いこなせればかなり便利なものですね。
本当にありがとうございました。

戻る