過去の桐井戸端BBS (桐ver.9)
22267 フォームでコマンドボタンにファンクションキーを割りあてたい hiromi 2003/09/09-18:50
お願いします。

フォームでコマンドボタンに、ファンクションキーを割りあてることはできるでしょうか。

[新規入力]F1・[行追加]F2・[行訂正]F3[行削除]F4

F1を押すと、グループ追加
F2を押すと、行追加
F3を押すと、行訂正
F4を押すと、行削除
といった内容です。
22269 Re:コマンドボタンにFキー 佐田 守弘 2003/09/09-22:39
記事番号22267へのコメント
hiromiさん
ファンクションキーにコマンドを割り当てるには、キーダウンイベントを使います。
以下の話は、イベントファイルの作り方の基本は知っている前提で話を進めます。

上記で「割り当てる」と書きましたが、より正しく言えば、割り当てるのではなくて、
ファンクションキーの押下をキーダウンイベントで拾い、
それぞれのファンクションキーに与えられている仮想キーコード(F1なら112)によって、
どのファンクションキーが押されたのかを調べます。
そして、対応する仮想キーコードに応じたコマンドボタンをメソッド呼び出しコマンドで実行させます。

質問の答えにぴったりの例が、ヘルプファイルに掲載されています。
・イベント:キーダウン
 ここにキーダウンイベントの意味と、仮想キーコードの説明があります。
・メソッド:キー変換
 ここにサンプルのイベントのプログラムが掲載されています。

サンプルは英語コマンドなので日本語コマンドに書き直したものを掲げます。
===================================================
手続き定義開始 フォーム::キーダウン( 長整数 &仮想キーコード,長整数 &スキャン
コード,長整数 &フラグ,参照 長整数 &処理中止 )
 ケース開始
  ケース ( &仮想キーコード≧112 .and &仮想キーコード≦119 )
   メソッド呼び出し @フォーム.キー変換(7)
   &仮想キーコード=&仮想キーコード-111
   変数宣言 文字列{&オブジェクト名="bF"+#str(&仮想キーコード,2)}
   メソッド呼び出し &オブジェクト名.実行()
   &処理中止 = 1
 ケース その他
   メソッド呼び出し @フォーム.キー変換(0)
   &処理中止=0
 ケース終了
手続き定義終了
===================================================
これを使う前提条件として、ファンクションキーの並びに対応させたコマンドボタンの並びを作り、
F1に対応するものから順に、bF01〜bF12のオブジェクト名を付けておきます。
またこのコマンドボタンには、希望する機能名を割り当てます。

上記のコマンドの中でいくつか補足すると、&仮想キーコードの値から111を
引いているのは、F1に対応する仮想キーコード112を1と言う様に、
ファンクションキーの番号と同じ値の数字にするためです。

そして変数「&オブジェクト名」に、この数字を2桁にした文字列の頭に「bF」を付け、
対応するコマンドボタンのオブジェクト名を作り出しています。

続くメソッド呼び出しコマンドでは、そのオブジェクト名を実行する事によって
コマンドボタンをクリックして実行するのと同じ結果を得ます。

佐田守弘(KS-00119)
22279 Re:コマンドボタンにFキー 尾形 2003/09/10-07:51
記事番号22267へのコメント
環境設定の[全般]の
・ファンクションバーを使用する
に設定した上での事でしょうか?

設定していなければ、設定する事をお勧めします
設定しているのならば、キー対応がちくはぐな気がします

戻る