Spec_Memo_VK.txt  VK 仕様メモ by ONnoji                                 Rev.0 2020.07.27 VK仕様メモ.txt                                 Rev.1 2020.09.09 Spec_Memo_VK.txt  この文書はINF_Framework(以降 INF_FW と表記する)の機能:VK に関する仕様メモです。  ■VK とは(概要)  機能名:VK( ブイキー )は、仮想キーコード( Virtual-Key Codes )の意味です。  機能:VKは、仮想キーコードを識別して、コマンドまたはメソッドを実行するユーティリティです。  仮想キーコードの値は、[キーダウン]イベントと[システムキーダウン]イベントのイベントハンドラの第1引数で求められます。  (例)  フォーム::キーダウン(長整数 &仮想キーコード,長整数 &スキャンコード,長整数 &フラグ,参照 長整数 &処理中止)  (例)フォーム::システムキーダウン(長整数 &仮想キーコード,長整数 &スキャンコード,長整数 &フラグ,参照 長整数 &処理中止)  これらの引数は以下の局所変数に代入されます。 ※&処理中止 を除く  &仮想キーコード → &VKmKeyNum / 長整数  &スキャンコード → &VKmScanNum / 長整数  &フラグ     → &VKmFlagNum / 長整数  なお、押されたキーに対応するキーの名前は、&VKmKeyString / 文字列 に代入されます。  ダウンロードコーナーの INF_VK_key_checker_2020-07-07.zip の INF_VK_key_checker.wfm を用いると変数の値を簡単に確認できます。  ■使い方 準備編  VK はINF_Framework に組み込まれていて、INF_Framework を導入したフォームであれば、VK が使える状態になります。  ただし、誰もが VK を必要とするわけではないので、所謂スタートアップはあらかじめ用意されていません。  <実行するキーの設定>  実行するキーを設定するには、手続き名:VKprcKeySet を実行します。   (構文)手続き実行 VKprcKeySet( キーの名前, 処理中止の値, 適用更新モード, 実行するコマンド )  例えば、スラッシュメニューの替わりに、[注釈 / *]コマンドを実行する場合には次のようにします。   (例)   手続き実行 VKprcKeySet( "/", 1, "0", "*" )            /* [スラッシュ]キーでは何もしない 表示モードに適用   */   手続き実行 VKprcKeySet( "-", 1, "0", "*" )            /* [マイナス]キーでは何もしない 表示モードに適用   */   手続き実行 VKprcKeySet( "Ctrl + M", 1, "2,4,6,8,33,34,36", "*" ) /* Ctrl + M では何もしない 表示モードを除き適用 */  この例は、[スラッシュ(/)]キーと[マイナス(-)]キーと[Ctrl]+[M]が押されたら、[注釈 / *]コマンドを実行します。  <キーの名前>  キーの名前は、手続き名:VKprcKeySet の第1引数に指定します。  キーの名前には、基本的にキートップの文字を指定しますが、いくつかの例外もありますので注意してください。  キーの名前はアルファベット(A...Z)と以下の文字です。※全角・半角・大文字・小文字の区別はありません  BackSpace,Tab,Clear,Enter,Shift,Ctrl,Alt,Pause,CapsLock,英数,漢字,Esc,変換,無変換,スペース  PageUp,PageDown,End,Home,←,↑,→,↓,PrintScreen,Insert,Delete,Help,NumLock,ScrollLock  F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,Windows左,Windows右,Application,漢字番号,カタカナ,ひらがな,半角/全角,ローマ字  0,1,2,3,4,5,6,7,8,9,*,+,-,Separator,:,;,comma,.,/,@,[,\,],^,backslash  ※キーの名前がコンマ(,)の場合は "comma" 、バックスラッシュ(\)の場合は "backslash" を指定してください。  ※F10キーは[システムキーダウン]イベントで取得できます。  キーの組み合わせは [Alt] + [Ctrl/Shift] + [キーの名前] の順番にプラス(+)記号で連結して指定します。  <処理中止の値>  処理中止の値は、第2引数にイチ( 1 )またはゼロ( 0 )を指定します。  例えば、次のように第2引数にゼロ( 0 )を指定した場合には、   (例)手続き実行 VKprcKeySet( "/", 0, "0", "*" )  [スラッシュ(/)]キーを押した時に[注釈 / *]コマンドを実行しますが、コマンド実行後に[スラッシュメニュー]が表示されてしまいます。  これは、処理中止の値がゼロ( 0 )なので、桐の[キーカスタマイズ]で[スラッシュ(/)]キーに割り当てられていた機能がキャンセルされずに実行されるからです。  <適用更新モード゙>  コマンドの実行を許可するフォームの更新モードを第3引数に指定します。  複数の更新モードを指定する場合には、コンマ(,)区切りの文字列を指定します。※全角・半角の区別はありません。  有効なキーワードは以下の文字列です。  "0,2,4,6,8,33,34,36,表示,訂正,行挿入,行追加,項目訂正,グループ検索,グループ値訂正,グループ追加"  "*" を指定すると、すべての更新モードを指定したと見なされます。  <実行するコマンド>  コマンドまたはメソッドを第4引数に指定します。  何も実行したくない場合には、[注釈 / *]コマンドを指定します。  ダウンロードコーナーの INF_VK_key_checker_2020-07-07.zip の INF_VK_変数確認.wfm を用いると設定内容を簡単に確認できます。  ■使い方 実行編  <実行許可>  手続き名:VKprcKeySet を実行して[実行するキー]を設定しただけでは VKユーティリティは実行されません。  VKユーティリティを実行するには、次の2つの手続き、またはコマンドを実行してください。どちらを先に実行しても結果は同じです。   手続き実行 VKprcEventKeyDownON( ) または オブジェクト操作 &formObjectName{ キーダウン = 1 }                         代入 &VKmKeyDownLive = 1   手続き実行 VKprcKeyON( )      または 代入 &VKmOnKey = 1  これで VKユーティリティの実行が許可されます。  なお、プログラムを読みやすくするために、コマンドを実行するよりも、手続きを実行することをお勧めします。  <実行停止>  VKユーティリティを停止するには、次の2つの手続き、またはコマンドを実行してください。どちらを先に実行しても結果は同じです。   手続き実行 VKprcEventKeyDownOFF( ) または オブジェクト操作 &formObjectName{ キーダウン = 0 }                          代入 &VKmKeyDownLive = 0   手続き実行 VKprcKeyOFF( )      または 代入 &VKmOnKey = 0  これで VKユーティリティの実行が停止されます。  なお、プログラムを読みやすくするために、コマンドを実行するよりも、手続きを実行することをお勧めします。  なお、VKユーティリティを停止せずに、キーの実行のみを禁止する場合には次のコマンドまたは手続きを実行してください。  手続き実行 VKprcKeyOFF( ) または 代入 &VKmOnKey = 0  ■キーの名前:key に関して  キーの名前には、基本的にキートップの文字を指定しますが、いくつかの例外もあります。  ここで説明する "key" という名前は、制御キー以外のすべての文字キーを対象にします。  (例1) 手続き実行 VKprcKeySet( "key", 1, "0", "確認 &VKmChr" )  (例2) 手続き実行 VKprcKeySet( "key", 1, "0", "prc任意のプロシージャ( &VKmChr )" )  キーの名前に "key" を指定した場合には、以下のキーに反応してコマンドを実行します。  <普通にキーを押した場合>  次のキーを押すとVK の局所変数:&VKmChr には次の値が代入されます。  [英字]   キー ・・・ "A" to "Z"  [記号]   キー ・・・ "- ^ \ @ [ ; : ] . /"  [コンマ]   キー ・・・ "comma"  [バックスラッシュ]キー ・・・ "backslash"  <シフト+キーを押した場合>  次のキーを押すとVK の局所変数:&VKmChr には次の値が代入されます。  [Shift]+[1]・・・ !  [Shift]+[2]・・・ "" ← ※2重引用符が二つ返ります  [Shift]+[3]・・・ #  [Shift]+[4]・・・ $  [Shift]+[5]・・・ %  [Shift]+[6]・・・ &  [Shift]+[7]・・・ '  [Shift]+[8]・・・ (  [Shift]+[9]・・・ )  [Shift]+[-]・・・ =  [Shift]+[^]・・・ ~  [Shift]+[\]・・・ |  [Shift]+[@]・・・ `  [Shift]+[[]・・・ {  [Shift]+[;]・・・ +  [Shift]+[:]・・・ *  [Shift]+[[]・・・ }  [Shift]+[,]・・・ <  [Shift]+[.]・・・ >  [Shift]+[/]・・・ ?  [Shift]+  [バックスラッシュ]・・・ _  <注意>  次のキーを押すと、VK の局所変数:&VKmChr には次の値が代入されます。  ・[コンマ]キー    ・・・ "comma"  ・[バックスラッシュ]キー ・・・ "backslash"  ・[shif]+[2]キー ・・・ "" ← ※2重引用符が二つ返ります  ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇  APPENDIX  1.VK_Framework の仕様  1.1 VK_Framework に用意されているプロシージャの一覧  ■[キーダウン]イベント/[システムキーダウン]イベントを有効/無効にする  [キーダウン]イベント/[システムキーダウン]イベントを有効または無効にします。  イベントに対するスイッチ変数 &VKmKeyDownLive と &VKmSystemKeyDownLive の値を設定します。  ・[キーダウン]イベントを有効にして、&VKmKeyDownLive の値を真( 1:イチ)にします。  手続き実行 VKprcEventKeyDownON( )  ・[キーダウン]イベントを無効にして、&VKmKeyDownLive の値を偽( 0:ゼロ)にします。  手続き実行 VKprcEventKeyDownOFF( )  ・[システムキーダウン]イベントを有効にして、&VKmSystemKeyDownLive の値を真( 1:イチ)にします。  手続き実行 VKprcEventSystemKeyDownON( )  ・[システムキーダウン]イベントを無効にして、&VKmKeySystemDownLive の値を偽( 0:ゼロ)にします。  手続き実行 VKprcEventSystemKeyDownOFF( )  ■キーに割り当てたコマンドの実行を制御(許可/禁止)する  VK_Framework の局所変数:&VKmOnKey の値を真( 1:イチ )、または偽( 0:ゼロ )に設定します。  ・ VK_Framework の局所変数:&VKmOnKey の値を真( 1:イチ )にします。  手続き実行 VKprcKeyON( )  ・ VK_Framework の局所変数:&VKmOnKey の値を偽( 0:ゼロ)にします。  手続き実行 VKprcKeyOFF( )  ■キーにコマンドを割り当てる  キーにコマンドを割り当てるには、一般手続き:VKprcKeySet( )を実行します。  この手続きは [キーダウン]/[システムキーダウン]イベントで実行するキーの名前とコマンドを VK_Framework の局所変数に登録します。  同名のキーの名前を指定した場合には、新しい値で上書きされます。  ―構文  手続き実行 VKprcKeySet( キーの名前, 処理中止の値, 適用更新モード, 実行するコマンド )  ―記述例  手続き実行 VKprcKeySet( "→", 1, "*", "手続き実行 prcなんとか( )" )  手続き実行 VKprcKeySet( "→", 1, "0,2,4,6,8,33,34,36", "手続き実行 prcなんとか( )" )  手続き実行 VKprcKeySet( "→", 1, "表示,訂正,行挿入,行追加,項目訂正,グループ検索,グループ値訂正,グループ追加", "手続き実行 prcなんとか( )" )  <キーの名前>  キーの名前はアルファベット(A...Z)と以下の文字です。※全角・半角・大文字・小文字の区別はありません  BackSpace,Tab,Clear,Enter,Shift,Ctrl,Alt,Pause,CapsLock,英数,漢字,Esc,変換,無変換,スペース  PageUp,PageDown,End,Home,←,↑,→,↓,PrintScreen,Insert,Delete,Help,NumLock,ScrollLock  F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,Windows左,Windows右,Application,漢字番号,カタカナ,ひらがな,半角/全角,ローマ字  0,1,2,3,4,5,6,7,8,9,*,+,-,Separator,:,;,comma,.,/,@,[,\,],^,backslash  ※キーの名前がコンマ(,)の場合は "comma" 、バックスラッシュ(\)の場合は "backslash" を指定してください。  ※F10キーは[システムキーダウン]イベントで取得できます。  <キーの組み合わせ>  キーの組み合わせは [Alt] + [Ctrl/Shift] + [キーの名前] の順番にプラス(+)記号で連結して指定します。  <文字列型:適用更新モード゙>  コンマ(,)区切りの文字列を指定します。※全角・半角の区別はありません。  有効なキーワードは以下の文字列です。  "0,2,4,6,8,33,34,36,表示,訂正,行挿入,行追加,項目訂正,グループ検索,グループ値訂正,グループ追加"  "*" を指定すると、すべての更新モードを指定したと見なされます。  ■キーに割り当てたコマンドを削除する  キーに割り当てたコマンドを削除するには、一般手続き:VKprcKeyClear( )を実行します。  この手続きは、一般手続き:VKprcKeySet( )で登録した内容を削除します。  ―構文  手続き実行 VKprcKeyClear( キーの名前, 更新モード )  ―記述例  手続き実行 VKprcKeyClear( "→", "*" )  手続き実行 VKprcKeyClear( "→", "0,2,4,6,8,33,34,36" )  手続き実行 VKprcKeyClear( "→", "表示,訂正,行挿入,行追加,項目訂正,グループ検索,グループ値訂正,グループ追加" )  ■キーに割り当てたコマンドをすべて削除する  キーに割り当てたコマンドをすべて削除するには、一般手続き:VKprcKeyClearAll( )を実行します。  この手続きは、一般手続き:VKprcKeySet( )で登録した VK_Framework の局所変数の内容を空にします。  ・すべてのキーの名前と割り当てたコマンドを削除します。  手続き実行 VKprcKeyClearAll( )  ・Altキーを含まないキーの名前と割り当てたコマンドをすべて削除します。  手続き実行 VKprcKeyClearKeyDown( )  ・Altキーを含むキーの名前と割り当てたコマンドをすべて削除します。  手続き実行 VKprcKeyClearSystemKeyDown( )  1.2 VK_Framework に用意されている変数の一覧  ■イベントに対するスイッチ変数 &VKmKeyDownLive/整数 &VKmSystemKeyDownLive/整数  &VKmKeyDownLive/整数 と &VKmSystemKeyDownLive/整数 はイベントの発生に対して VK_Framework の呼び出しを制御(許可/禁止)します。  &VKmKeyDownLive の値が真( 1:イチ )の時、[フォーム::キーダウン]イベントハンドラから VK_Framework が呼び出されます。  &VKmSystemKeyDownLive の値が真( 1:イチ )の時、[フォーム::システムキーダウン]イベントハンドラから VK_Framework が呼び出されます。  変数の値が偽( 0:ゼロ、または未定義値 )の時にはイベントハンドラから VK_Framework は呼び出されません。  ※変数の値が真( 1:イチ )の場合でも、イベントがOFF(無効)ならば VK_Framework は呼び出されません。  参照:一般手続き:VKprcEventKeyDownON( ) / VKprcEventKeyDownOFF( )  参照:一般手続き:VKprcEventSystemKeyDownON( ) / VKprcEventSystemKeyDownOFF( )  ■コマンド実行に対するスイッチ変数 &VKmOnKey/整数  &VKmOnKey/整数 は、キーに割り当てたコマンドの実行を制御(許可/禁止)します。  &VKmOnKey の値が真( 1:イチ )の時、キーに割り当てたコマンドを実行します。  &VKmOnKey の値が偽( 0:ゼロ、または未定義値 )の時にはキーに割り当てたコマンドを実行しません。  ※キーに割り当てたコマンドが見つからない場合には、何も実行しません。  ※キーに割り当てたコマンドが[注釈]コマンドの場合には、何も実行しません。  参照:一般手続き:VKprcKeyON( ) / VKprcKeyOFF( )  ■キーの名前 &VKmKeyString/文字列  イベントハンドラが実行されて、イベントに対するスイッチ変数の値が真( 1:イチ )の時、  &VKmKeyString/文字列 には押されたキーの名前が格納されます。  例えば、Shift + Enter のように、キーの組み合わせがある場合には、  [Alt] + [Ctrl/Shift] + [キーの名前] の順番でプラス記号(+)で連結された文字列が格納されます。  最大で、[Alt] + [フラグ] + [キーの名前] のように3個のキーの組み合わせまで有効です。  ※&VKmOnKey の値が偽( 0:ゼロ、または未定義値 )の時でもキーの名前は格納されます。  &VKmKeyString に格納される文字列は、  [フォーム::キーダウン]イベントハンドラの引数:&仮想キーコード/長整数 の値と、  VK_Framework の局所変数 &VKmConstantNumList/文字列 と &VKmConstantChrList/文字列 を比較して求めます。  キーの名前が見つからなかった場合には、&VKmKeyString には "unknown" が格納されます。  ※[フォーム::システムキーダウン]イベントハンドラから VK_Framework が呼び出された場合も同じです。  ※一般手続き:VKprcEventKeyDownON( ) / VKprcEventKeyDownOFF( ) を実行すると未定義値になります。  ※一般手続き:VKprcEventSystemKeyDownON( ) / VKprcEventSystemKeyDownOFF( ) を実行すると未定義値になります。  ■リピートの判定 &VKmRepeat/整数  イベントハンドラが実行されて、イベントに対するスイッチ変数の値が真( 1:イチ )の時、  &VKmRepeat/整数 にはキーを押し続けている(リピート状態)かの否かの情報が格納されます。  リピート状態の場合には、真( 1:イチ )が格納されます。  リピート状態ではない場合には、偽( 0:ゼロ )が格納されます。  ※&VKmOnKey の値が偽( 0:ゼロ、または未定義値 )の時でもリピートの判定は格納されます。  ※一般手続き:VKprcEventKeyDownON( ) / VKprcEventKeyDownOFF( ) を実行すると未定義値になります。  ※一般手続き:VKprcEventSystemKeyDownON( ) / VKprcEventSystemKeyDownOFF( ) を実行すると未定義値になります。  ■Altキーの判定 &VKmAltKey/整数  イベントハンドラが実行されて、イベントに対するスイッチ変数の値が真( 1:イチ )の時、  &VKmAltKey/整数 には Altキーが押されているか否かの情報が格納されます。  Altキーが押されている場合には、真( 1:イチ )が格納されます。  Altキーが押されていない場合には、偽( 0:ゼロ )が格納されます。  ※&VKmOnKey の値が偽( 0:ゼロ、または未定義値 )の時でもAltキーの判定は格納されます。  ※一般手続き:VKprcEventKeyDownON( ) / VKprcEventKeyDownOFF( ) を実行すると未定義値になります。  ※一般手続き:VKprcEventSystemKeyDownON( ) / VKprcEventSystemKeyDownOFF( ) を実行すると未定義値になります。  ■イベントハンドラの引数の保存  イベントハンドラが実行されて、イベントに対するスイッチ変数の値が真( 1:イチ )の時、  [キーダウン]/[システムキーダウン]イベントハンドラの値渡しの引数は VK_Framework の局所変数に保存されます。  新たにイベントハンドラが実行されると新しい値で上書きされます。  &仮想キーコード → &VKmKeyNum  &スキャンコード → &VKmScanNum  &フラグ     → &VKmFlagNum  ※引数:&処理中止 の値は保存されません。  ※一般手続き:VKprcEventKeyDownON( ) / VKprcEventKeyDownOFF( ) を実行すると未定義値になります。  ※一般手続き:VKprcEventSystemKeyDownON( ) / VKprcEventSystemKeyDownOFF( ) を実行すると未定義値になります。  ※一般手続き:VKprcVariableDataClear( ) を実行すると未定義値になります。  <参考>  &VKmScanNum( &スキャンコード と同値 )を 0:ゼロと 1:イチの文字列に変換するには、  一般手続き:VKprcBitStringGet( )を実行します。  文字列の先頭が bit15、末尾が bit0 になります。  ・&VKmScanNum を文字列に変換して組み込み変数:&STR に代入する  手続き実行 VKprcBitStringGet( &VKmScanNum, &STR )  ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇  APPENDIX  2.ガイドライン(指針)  この項では、   ・キーの設定   ・[キーダウン]イベントのオン/オフ   ・キーのオン/オフ   ・VK_Framework を無効にする  に関してガイドライン(指針)を示します。  ■キーの設定に関して  キーの設定には、動的設定と静的設定の2つの方法があります。  注意:VKprcKeySet / VKprcKeyClear に関しては、それぞれの項を参照してください。  1.キーの動的設定  特定の状況で押されたキーを検出する場合には次のようにします。  ―テキストボックスのエディタ内で押されたキーを検出する   ・[入力前]イベントで設定( VKprcKeySet )して、[入力後]イベントで解除( VKprcKeyClear )する。   ※Enterキーを設定することで [ソース値更新]イベント の代わりに利用できます。  ―任意のオブジェクトにフォーカスがある時に押されたキーを検出する   ・[フォーカス取得]イベントで設定( VKprcKeySet )して、[フォーカス喪失]イベントで解除( VKprcKeyClear )する。  ―マウスインの時に押されたキーを検出する   ・[マウスインアウト]イベントのマウスインで設定( VKprcKeySet )して、    [マウスインアウト]イベントのマウスアウトで解除( VKprcKeyClear )する。  ―マウスドラッグ中に押されたキーを検出する   ・[マウス左ダウン]イベントで設定( VKprcKeySet )して、[マウス左アップ]でマウスアウト解除( VKprcKeyClear )する。  ―特定のモードに遷移した時にキーを検出する   ・フォームアプリケーションにモードが設定されている場合に、    モードの遷移状態に応じて設定( VKprcKeySet )/解除( VKprcKeyClear )する。  2.キーの静的設定  ダイアログボックス・ウィジェット・メニューなどの小規模なフォームアプリケーションでは、ショートカットキーを用意すると便利です。  そこで、ショートカットキーの登録を[開始時実行コマンド]ボタンで実行するプロシージャで複数のキーを一括して設定( VKprcKeySet )します。  なお、一括して複数のキーを設定するのはプログラムのメンテナンスを容易にするためです。   (例)INF_DatePicker.kev より   手続き定義開始 prcKeySetDefault( )    手続き実行 VKprcEventKeyDownON( )    /* [キーダウン]イベントを有効にする     */    手続き実行 VKprcKeyON( )         /* キーに割当てたコマンドの実行を許可する */    手続き実行 VKprcKeySet( "Ctrl + ↑",  1, "0", "手続き実行 prcOnKeyArrow( &VKmKeyString, &VKmRepeat )" )    手続き実行 VKprcKeySet( "Ctrl + ↓",  1, "0", "手続き実行 prcOnKeyArrow( &VKmKeyString, &VKmRepeat )" )    手続き実行 VKprcKeySet( "Ctrl + ←",  1, "0", "手続き実行 prcOnKeyArrow( &VKmKeyString, &VKmRepeat )" )    手続き実行 VKprcKeySet( "Ctrl + →",  1, "0", "手続き実行 prcOnKeyArrow( &VKmKeyString, &VKmRepeat )" )   手続き定義終了  ■[キーダウン]イベントのオン/オフに関して  手続き実行 VKprcEventKeyDownON( )    [キーダウン]イベントを有効にする。  手続き実行 VKprcEventSystemKeyDownON( ) [システムキーダウン]イベントを有効にする。  [キーダウン]イベントがオンの場合、キーが押される毎に次のようにイベントハンドラと VK_Framework のプロシージャが実行されます。   [キーダウン]イベント → VKprcEventKeyEval → VKprcVariableDataSet → 設定したコマンドまたはメソッド  そのために、パフォーマンスに影響を与える可能性があるので、必要がある時に限り[キーダウン]イベントをオンにすることをお勧めします。  また、[トレース出力]ウィンドウに、これらのイベントハンドラとVK_Framework のプロシージャが頻繁に表示されるので、  [トレース出力]ウィンドウを利用してデバッグする場合には非常に邪魔になります。  (例)[キーダウン]イベントのオンで、[S]キーを押した後に、[A]キーを押した時の動作   設定1:手続き実行 VKprcKeySet( "A", 1, "0", "手続き実行 prcProcedureName( &VKmChr )" )   設定2:手続き実行 VKprcKeyON( )   設定3:手続き実行 VKprcEventKeyDownON( )  [S]キーを押した  ┌when 手続き"フォーム::キーダウン(83,31,0,0)"を実行開始しました ※引数の&仮想キーコード:83 は[S]キー  │  │┌when 手続き"VKprcEventKeyEval(83,31,0,0)"を実行開始しました  ││  ││┌when 手続き"VKprcVariableDataSet(83,31,0,,)"を実行開始しました  ││└end  ││  │└end  │  └end  [A]キーを押した  ┌when 手続き"フォーム::キーダウン(65,30,0,0)"を実行開始しました ※引数の&仮想キーコード:65 は[A]キー  │  │┌when 手続き"VKprcEventKeyEval(65,30,0,0)"を実行開始しました  ││  ││┌when 手続き"VKprcVariableDataSet(65,30,0,"S",0)"を実行開始しました ※"S"は前回値  │││  │││ [A]キーを押したので  │││ コマンド "手続き実行 prcProcedureName( &VKmChr )" を実行  │││  ││└end  ││  ││   **[A]キーを押したので実行された  ││┌when 手続き"prcProcedureName("A")"を実行開始しました  │││  ││└end  ││  │└end  │  └end  ■キーのオン/オフに関して  手続き実行 VKprcKeyON( )  VKprcKeySet で設定したコマンドまたはメソッドを実行する  手続き実行 VKprcKeyOFF( )  VKprcKeySet で設定したコマンドまたはメソッドを実行しない  [キーダウン]イベントがオンの場合、キーがオフでもキーが押される毎に次のようにイベントハンドラと VK_Framework のプロシージャが実行されます。   [キーダウン]イベント → VKprcEventKeyEval → VKprcVariableDataSet  そのために、パフォーマンスに影響を与える可能性があるので、必要がある時に限り[キーダウン]イベントをオンにすることをお勧めします。  また、[トレース出力]ウィンドウに、これらのイベントハンドラとVK_Framework のプロシージャが頻繁に表示されるので、  [トレース出力]ウィンドウを利用してデバッグする場合には非常に邪魔になります。  (例)[キーダウン]イベントのオンで、[S]キーを押した後に、[A]キーを押した時の動作   設定1:手続き実行 VKprcKeySet( "A", 1, "0", "手続き実行 prcProcedureName( &VKmChr )" )   設定2:手続き実行 VKprcKeyOFF( )       /* キーのオフ設定:デフォルト値 */   設定3:手続き実行 VKprcEventKeyDownON( )  [S]キーを押した  ┌when 手続き"フォーム::キーダウン(83,31,0,0)"を実行開始しました ※引数の&仮想キーコード:83 は[S]キー  │  │┌when 手続き"VKprcEventKeyEval(83,31,0,0)"を実行開始しました  ││  ││┌when 手続き"VKprcVariableDataSet(83,31,0,,)"を実行開始しました  ││└end  ││  │└end  │  └end  [A]キーを押した  ┌when 手続き"フォーム::キーダウン(65,30,0,0)"を実行開始しました ※引数の&仮想キーコード:65 は[A]キー  │  │┌when 手続き"VKprcEventKeyEval(65,30,0,0)"を実行開始しました  ││  ││┌when 手続き"VKprcVariableDataSet(65,30,0,"S",0)"を実行開始しました  │││  │││ キーがオフなので[A]キーを押しても何も実行しません  │││  ││└end  ││  │└end  │  └end  ■ VK_Framework を無効にする  [キーダウン]イベントがオンの場合、キーがオフでもキーが押される毎に次のようにイベントハンドラと VK_Framework のプロシージャが実行されます。   [キーダウン]イベント → VKprcEventKeyEval → VKprcVariableDataSet  VK_Framework のプロシージャ( VKprcEventKeyEval と VKprcVariableDataSet )が実行されないよにするには次のようにします。   &VKmLive = 0 /* 局所変数:&VKmLive にゼロ( 0 )を代入する */  なお、この局所変数は VK_Framework 導入時のエラー判定のフラグです(導入成功の場合にはイチ( 1 )が代入されます)。 以上