■記事リスト / ▼下のスレッド
■644 / 親記事) |
VK_frameworkの使用感 と 質問
|
□投稿者/ ジェダイの桐 -(2025/08/22(Fri) 15:09:07)
| 2025/08/22(Fri) 18:52:28 編集(投稿者) 2025/08/22(Fri) 15:21:59 編集(投稿者) 2025/08/22(Fri) 15:18:06 編集(投稿者) 2025/08/22(Fri) 15:11:56 編集(投稿者)
ONnojiさん
こんにちは!
初めて VK_framework を使ってみて便利に感じました!
----------------------------------------------------------------------------------
・目的 : 会社に提出する申請書をデータ化する
・課題 : 表示強制改行文字を設定したフォームの 入力フィールドで Ctrl + Enter 入力した時の挙動
・解決方法 : VK_framework で意図した挙動へ導く
----------------------------------------------------------------------------------
折角 VK_framework の使い方が分かったので、何か作ってみたいなと思っていました。 実務で使う物で、思いついたのが、申請書類作成です。
現状は、手書き or 神エクセル で作成しているのですが、過去の振り返りがやりにくいのです。
桐でデータを溜めたいな思って考えていたら、表示強制改行文字を設定した時 Ctrl + Enter で改行出来る事が分かりました。
フォーム ├ ファミリ ├ ワークスペース │ ├ INFtxtCommon │ ├ INFcmdCommon │ ├ cmdStartup │ └ cmd訂正 ├ フォーム操作バー ├ フォームヘッダ部 │ ├ cmdAlt_I_ズームイン │ ├ cmdAlt_O_ズームアウト │ ├ EZWcmdズームイン │ ├ EZWcmdズームアウト │ ├ EZWtxtMagnification │ ├ INFcmdWhoAreYou │ ├ HDLVARcmdWhoAreYou │ ├ ONEcmdUI変換 │ ├ FSCtxtPaletteColorName │ │ ├ FSCtxtPaletteColorName入力支援ボタン │ │ └ FSClblPaletteColorName │ ├ cmd先頭 │ ├ cmd前行 │ ├ cmd次行 │ ├ cmd最終 │ ├ cmd印刷 │ ├ cmd新規作成 │ └ lblFlatButtonBorder_1 └ フォーム明細部 ├ txt作成日 │ └ lbl作成日 ├ txt提出先 │ └ lbl提出先 ├ txt部署 │ └ lbl部署 ├ txt作成者 │ └ lbl作成者 ├ txtタイトル │ └ lblタイトル ├ txt内容 │ └ lbl内容 └ txt備考 └ lbl備考
早速フォームを作りました。 実際に改行したい項目は [ 内容 ] と [ 備考 ] のみです。
その他項目は改行文字を入力したくありません。 これは、VK_framework で解決出来るかも?と思いました。
[ 内容 ] と [ 備考 ] 以外の項目では Ctrl + Enter を押下しなければいいだけの話ではあるのですが、 私自身、割と Ctrl + Enter を押しがちです。
ではどうするか? [ 内容 ] と [ 備考 ] 以外 で Ctrl + Enter を押下 した時は、Enter 相当の挙動になればいいなと思い VK_framework を実装して解決に至りました(^^ゞ
非常に便利です。
----------------------------------------------------------------------------------
質問
今回、フォーカス設定メソッドを使用するため、&mObjectNameList を使っています。 フォーム明細部にある、オブジェクト名を 半角カンマ 区切りで取得しています。
VKprcKeySet に引数で渡すまでは
txt作成日,lbl作成日,txt提出先,lbl提出先,txt部署,lbl部署,txt作成者,lbl作成者,txtタイトル,lblタイトル,txt内容,lbl内容,txt備考,lbl備考 ↑ このように 半角カンマ なのですが、引数で渡した側になると
txt作成日,lbl作成日,txt提出先,lbl提出先,txt部署,lbl部署,txt作成者,lbl作成者,txtタイトル,lblタイトル,txt内容,lbl内容,txt備考,lbl備考 ↑ 何故か 全角カンマ になっています。
これは VKprcKeySet の仕様なのでしょうか?? 私が VKprcKeySet を正しく使っていない可能性も十分にありますが・・・
お時間のある時、回答が頂ければ嬉しいですm(__)m
p.s.
VKprcKeySet に セットするプロシージャですが、結構苦戦しました。 やっぱり 文字列式 は、慣れが必要ですね(^^ゞ
手続き定義開始 prcHintTextSet( ) 手続き定義開始 prcAdvanceFocusKeySetON( 文字列 &objectName ) 手続き定義開始 prcAdvanceFocusKeySetOFF() 手続き定義開始 prcAdvanceFocus( 文字列 &key, 整数 &repeat, 文字列 &objectNameList, 文字列 &objectName, 整数 &isObject )
は、ONnojiさんの流用です。 実際に自分で書くと、VK_framework の理解が深まりました。
ありがとうございましたm(__)m
p.p.s.
ちょっと思ったのが、もしかして、&mObjectNameList が 局所 定数 なのが原因ですかね??
|
|
|
▽[全レス7件(ResNo.3-7 表示)]
■648 / ResNo.3) |
Re[3]: VK_frameworkの使用感 と 質問
|
□投稿者/ ジェダイの桐 -(2025/08/23(Sat) 17:21:06)
| 2025/08/23(Sat) 19:14:32 編集(投稿者) 2025/08/23(Sat) 17:22:39 編集(投稿者) ONnojiさん
こんにちは!
-----------------------------------------------------------------------------------
> │ ├ lblFlatButtonBorder_1 ← ここまで移動する ※セクション:フォームヘッダ部の最前面です > │ ├ cmdAlt_I_ズームイン ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
修正しました(^^ゞ
> DOWN LOAD BBS > ■510 / 4階層) INF_Framework の話をしよう > □投稿者/ ONnoji -(2024/09/15(Sun) 14:58:18) > http://tayu.o0o0.jp/bbs/kiri/cbbs.cgi?mode=one&namber=510&type=506&space=60&no=2
これスレッドを読んでいるのに、見逃していました。
折角なので、修正前 と 修正後で ONEcmdUI変換の挙動を確認しました。 適切な位置に lblFlatButtonBorder_1 を配置しないと 立体的なUI⇔フラットなUI がスムーズに移行されませんでした。 ( 結果としては移行されていたのですかね?? )
今後フォームを新規で作成する時は、適切な位置に lblFlatButtonBorder_1 を配置する事を認識しました(^^ゞ ご指摘ありがとうございましたm(__)m
-----------------------------------------------------------------------------------
> 2025/08/22(Fri) 23:41:23 編集(投稿者) > > ジェダイの桐さんへのお返事です > > VK_Framework を利用する場合には、次の2つの拙作ユーティリティが便利です。 > > ・ INF_VK_key_checker.wfx > > ・ INF_VK_変数確認.wfx > > ところが、INF_VK_変数確認.wfx には虫がありまして、オブジェクト名が全角の"フォーム"の場合に失敗する虫が本日になって見つかりました。(^^ゞ > > ということで、イベント処理(.kex)に添付の 1755872694.txt ( update_INF_VK_変数確認.txt )を読み込んでアップデートしてください。
INF_VK_変数確認.kex へ読み込みアップデートしました。
> INF_VK_key_checker.wfx ← これ!オススメ
こちらのチェッカーは 今回実際に使用して Ctrl + Enter の &VKmKeyString を確認してから プログラム作成をしたんですよ(^^♪ 自分の目で &VKmKeyString の中身が見れるのは非常に便利でした!
> INF_VK_変数確認.wfx ← これ!オススメ
こちらですが、最初どうやって使ったらいいか分かりませんでした。 なので、とりあえず今日の仕事を午前中に終わらせて、午後から ニラメッコ してたんですね。
で、INF_VK_変数確認.wfx に 開くボタンがあったので、押して見ました。 すると、フォーム選択画面が出てきました。
この流れは、私の大好きな utx_list3_launcher.wfx → 整形( 1 )を開く のフォームにある開くと同じ感じがしたので とりあえず 申請書.WFX を選択しました。 すると、申請書.WFX が開きました。
そこからが良く分からなかったんです・・・
ところが良く見ると、再読み込みボタンが有る事に気づきました。
申請書.WFX を INF_VK_変数確認.wfx から開いた INF_VK_変数確認.wfx というネーミング
と言う事は、申請書.WFX を INF_VK_変数確認.wfx から開いた状態で VK_framework を使用しているテキストボックスを訂正モードにして INF_VK_変数確認.wfx の 再読み込みボタンを押下するのでは?
と推測し、実行したらビンゴ!!でした(^^♪ これは便利です。特に今の私にはとても便利です(^^ゞ
> VKprcKeySet に セットするプロシージャですが、結構苦戦しました。 > やっぱり 文字列式 は、慣れが必要ですね(^^ゞ
実は、 ¯oStr = "手続き実行 prcAdvanceFocus(" + "&VKmKeyString" + &comma + "&VKmRepeat" + &comma + &WQ + &mObjectNameList + &WQ + &comma + &WQ + &objectName + &WQ + &comma + #str( &mIsObject ) + ")" これが成功するまで、半日以上かかったんですよ・・・
INF_VK_変数確認.wfx でチェックすれば、文字列式のセットが格段に速く出来ると思いました。
-----------------------------------------------------------------------------------
INF_VK_変数確認.wfx の存在を教えて下さりありがとうございました。 また、イベント処理のアップデートもありがとうございましたm(__)m
> VK_Framework で実行するコマンドに半角コンマ(,)が含まれている場合には、全角コンマ(,)に変換されます。 > これは VK_Framework の仕様ですので虫ではありません。(^^ゞ > 理由については別途解説するつもりです。
解説楽しみにしていますm(__)m
|
|
|
■649 / ResNo.4) |
Re[4]: VK_frameworkの使用感 と 質問
|
□投稿者/ ONnoji -(2025/08/24(Sun) 06:59:56)
| ジェダイの桐さんへのお返事です
[(+)][(−)]ボタンを効果的に使うため
[フォームの形式]が "カード形式" で、[ウィンドウのサイズ]が "フォームのサイズ" の場合には、 [境界線の形式]を "ダイアログ" として、[フォームスクロールバー]を "なし" することをおススメします。
一覧表形式のフォームの場合には、[境界線の形式]を "サイズ変更可" として、[フォームスクロールバー]を オン することをおススメします。
■509 / 3階層) Re[3]: INF_Framework の話をしよう □投稿者/ ONnoji -(2024/09/14(Sat) 18:53:37) http://tayu.o0o0.jp/bbs/kiri/cbbs.cgi?mode=all&namber=506&type=0&space=0&no=2#509
> そうすると、[(+)][(−)]を実行した時に、フォーム全体が拡大または縮小するようになります。 > > 〔INF_Framework ヒントとコツ〕 > > ・フォームを閉じて再び開いた時に、フォームの[フォームの倍率] が再現されます。 > ・フォームを閉じて再び開いた時に、フォームの[ウィンドウの最大化]が再現されます。 > ・カード形式のフォームでは、[最大化]ボタンのチェックをオフにします。 > ・カード形式のフォームでは、[フォームスクロールバー]ボタンのチェックをオフにします。
p.s.
> ちょっと思ったのが、もしかして、&mObjectNameList が 局所 定数 なのが原因ですかね??
VK_Framework で実行するコマンドに半角コンマ(,)が含まれている場合には、全角コンマ(,)に変換されます。
これは VK_Framework の仕様ですので虫ではありません。(^^ゞ
理由については別途解説するつもりです。
|
|
|
■650 / ResNo.5) |
Re[5]: VK_frameworkの使用感 と 質問
|
□投稿者/ ONnoji -(2025/08/24(Sun) 08:13:50)
| 2025/08/24(Sun) 15:41:30 編集(投稿者)
>>ちょっと思ったのが、もしかして、&mObjectNameList が 局所 定数 なのが原因ですかね?? > VK_Framework で実行するコマンドに半角コンマ(,)が含まれている場合には、全角コンマ(,)に変換されます。 > これは VK_Framework の仕様ですので虫ではありません。(^^ゞ > 理由については別途解説するつもりです。
VK_Framwork は、手続き:VKprcKeySet( ) のパラメータ(引数)を配列変数に代入しています。
・キーの名前は、&VKmKeyNameKeyDownDim[1]から[8]
・処理中止の値は、&VKmKeyCancelKeyDownDim[1]から[8]
・実行するコマンドは、&VKmKeyMacroKeyDownDim[1]から[8]
・代入される配列の要素番号は、適用更新モードに対応した要素番号になります。
{ &modeList = "0,2,4,6,8,33,34,36,表示,訂正,行挿入,行追加,項目訂正,グループ検索,グループ値訂正,グループ追加" } ↑ ↓ { &dimNumList = "1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8" }
配列変数の内容は、INF_VK_変数確認.wfx/.tbx で確認できます。 ※1つのコマンドを1行で表示
処理 更新 キーの名前 中止 モード コマンド Ctrl+Enter 1 2/訂正 手続き実行 prcAdvanceFocus(&VKmKeyString,&VKmRepeat,"txt作成日,lbl作成日,txt提出先・・・,lbl内容,txt備考,lbl備考","txt作成日",1) Ctrl+Enter 1 4/行挿入 手続き実行 prcAdvanceFocus(&VKmKeyString,&VKmRepeat,"txt作成日,lbl作成日,txt提出先・・・,lbl内容,txt備考,lbl備考","txt作成日",1) Ctrl+Enter 1 6/行追加 手続き実行 prcAdvanceFocus(&VKmKeyString,&VKmRepeat,"txt作成日,lbl作成日,txt提出先・・・,lbl内容,txt備考,lbl備考","txt作成日",1) Ctrl+Enter 1 8/項目訂正 手続き実行 prcAdvanceFocus(&VKmKeyString,&VKmRepeat,"txt作成日,lbl作成日,txt提出先・・・,lbl内容,txt備考,lbl備考","txt作成日",1)
↑この例では、コマンドは1つしかセットされていませんが、複数のコマンドをセット出来ます。(8000文字以内) ・・・・・・・・・・・・・・・
複数のコマンドをセットした場合には、コマンドは半角コンマ(,)で区切って代入されます。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
&VKmKeyNameKeyDownDim[1] … キーの名前,キーの名前,キーの名前,キーの名前 &VKmKeyCancelKeyDownDim[1] … 1,1,1,1 &VKmKeyMacroKeyDownDim[1] … コマンド,コマンド,コマンド,コマンド
そのために、コマンドに半角コンマ(, )が含まれている場合には、全角コンマ(,)に変換しているのでした。(^^ok ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
また、キーの名前にコンマ(, )を指定する場合には、comma と指定する理由でもありました。(^^ゞ
■キーにコマンドを割り当てる仕掛け
適用更新モード "0" / "表示" "2" / "訂正" "4" / "行挿入" "6" / "行追加" "8" / "項目訂正" "33"/ "グループ検索" "34"/ "グループ値訂正" "36"/ "グループ追加"
キーの名前 適用更新モード ↓ ↓ (例)手続き実行 VKprcKeySet( "F1", 1, "0", "手続き実行 prcファンクションキー評価( )" ) ↑ ↑ 処理中止の値 実行するコマンド
&VKmKeyNameKeyDownDim[1]から[8] ※半角コンマで区切ったリスト:キーの名前,キーの名前,キーの名前,キーの名前 ┌────────┐ │ キーの名前 │─┐ │ │ │─┐ └────────┘ │ │─┐ └────────┘ │ │ └────────┘ │ └────────┘
&VKmKeyCancelKeyDownDim[1]から[8] ※半角コンマで区切ったリスト:1,1,1,1 ┌────────┐ │ 処理中止の値 │─┐ │ │ │─┐ └────────┘ │ │─┐ └────────┘ │ │ └────────┘ │ └────────┘
&VKmKeyMacroKeyDownDim[1]から[8] ※半角コンマで区切ったリスト:コマンド,コマンド,コマンド,コマンド ┌────────┐ │実行するコマンド│─┐ │ │ │─┐ └────────┘ │ │─┐ └────────┘ │ │ └────────┘ │ └────────┘
■実行時の仕掛け
┌────────────┐ │ フォーム::キーダウン │ └──┬─────────┘ │ ┌──┴──────────────┐ │ VKprcEventKeyEval │ イン:&VKmKeyNum &VKmScanNum &VKmFlagNum │ │ ┌─────────────────┐ │ 手続き実行 VKPrcVariableDataSet →──→ VKprcVariableDataSet │ │ ←──← │ │ │ └─────────────────┘ │ if ( &VKmOnkey ) │ アウト:&VKmKeyString &VKmAltkey │ コマンド ¯oString │ │ end │ │ │ └─────────────────┘
|
|
800×600 => 250×187
 vk_library_image.gif/28KB
|
|
■651 / ResNo.6) |
Re[6]: VK_frameworkの使用感 と 質問
|
□投稿者/ ONnoji -(2025/08/24(Sun) 17:55:14)
| 2025/08/25(Mon) 08:22:29 編集(投稿者)
ジェダイの桐さんへのお返事です
> 早速フォームを作りました。 > 実際に改行したい項目は [ 内容 ] と [ 備考 ] のみです。 > その他項目は改行文字を入力したくありません。 > これは、VK_framework で解決出来るかも?と思いました。 > [ 内容 ] と [ 備考 ] 以外の項目では Ctrl + Enter を押下しなければいいだけの話ではあるのですが、 > 私自身、割と Ctrl + Enter を押しがちです。 > ではどうするか? > [ 内容 ] と [ 備考 ] 以外 で Ctrl + Enter を押下 した時は、Enter 相当の挙動になればいいなと思い > VK_framework を実装して解決に至りました(^^ゞ > 非常に便利です。
桐での入力では Ctrl + Enter はあまり使いませんから、エクセルで使い慣れているのでしょうかね???
導入事例を教えていただいてありがとうございます。m(__)m
> 手続き定義開始 prcHintTextSet( ) > 手続き定義開始 prcAdvanceFocusKeySetON( 文字列 &objectName ) > 手続き定義開始 prcAdvanceFocusKeySetOFF() > 手続き定義開始 prcAdvanceFocus( 文字列 &key, 整数 &repeat, 文字列 &objectNameList, 文字列 &objectName, 整数 &isObject ) > は、ONnojiさんの流用です。 > 実際に自分で書くと、VK_framework の理解が深まりました。
VK_Framework は慣れてしまえば簡単です。
しかし、キーダウンイベントは余程の事が無い限り使用しない方がベターです。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
VK_Framework を利用している場合にはオンオフが簡単ですが、本当に[フォーム::キーダウン]イベントハンドラに直書きすると収拾がつかなくなります。
もちろん、そういう理由から VK_Framework が開発されたワケなんですけどね。アハハハha
>> INF_VK_key_checker.wfx ← これ!オススメ > こちらのチェッカーは 今回実際に使用して Ctrl + Enter の &VKmKeyString を確認してから プログラム作成をしたんですよ(^^♪ > 自分の目で &VKmKeyString の中身が見れるのは非常に便利でした!
INF_VK_key_checker.wfx は、VK_Framework のユーティリティです。
フレームワークの開発には、このようなユーティリティの開発も必要になります。
>> INF_VK_変数確認.wfx ← これ!オススメ > こちらですが、最初どうやって使ったらいいか分かりませんでした。 > なので、とりあえず今日の仕事を午前中に終わらせて、午後から ニラメッコ してたんですね。 > で、INF_VK_変数確認.wfx に 開くボタンがあったので、押して見ました。 > すると、フォーム選択画面が出てきました。 > この流れは、私の大好きな utx_list3_launcher.wfx → 整形( 1 )を開く のフォームにある開くと同じ感じがしたので とりあえず 申請書.WFX を選択しました。 > すると、申請書.WFX が開きました。 > そこからが良く分からなかったんです・・・ > ところが良く見ると、再読み込みボタンが有る事に気づきました。
INF_VK_変数確認.wfx は、整形ユーティリティの「フォーム定義リスト(INF_ObjectList.wfx)」と操作は同じですよ。
ターゲットのフォームを選ぶには
・開くダイアログ ・ウィンドウハンドルのリストから ・履歴のリストから
選べますよ。
> 申請書.WFX を INF_VK_変数確認.wfx から開いた > INF_VK_変数確認.wfx というネーミング > と言う事は、申請書.WFX を INF_VK_変数確認.wfx から開いた状態で VK_framework を使用しているテキストボックスを訂正モードにして > INF_VK_変数確認.wfx の 再読み込みボタンを押下するのでは? > と推測し、実行したらビンゴ!!でした(^^♪ > これは便利です。特に今の私にはとても便利です(^^ゞ
ピンポン!、正解です。
> VKprcKeySet に セットするプロシージャですが、結構苦戦しました。 > やっぱり 文字列式 は、慣れが必要ですね(^^ゞ
二重引用符( " ) と コンマ( , ) をリテラル(直接)に書くとコンガラカリマスね。
なので、&WQ や &comma といった変数(定数)を利用するのがベターですね。
△ &objectNameList = #文字置換( &objectNameList, ",", "," )
〇 &objectNameList = #文字置換( &objectNameList, #全角( &comma ),&comma )
例えば↑このような感じで・・・(^^ゞ
>>VKprcKeySet に セットするプロシージャですが、結構苦戦しました。 >>やっぱり 文字列式 は、慣れが必要ですね(^^ゞ > 実は、 > ¯oStr = "手続き実行 prcAdvanceFocus(" + "&VKmKeyString" + &comma + "&VKmRepeat" + &comma + > &WQ + &mObjectNameList + &WQ + &comma + &WQ + &objectName + &WQ + &comma + #str( &mIsObject ) + ")" > これが成功するまで、半日以上かかったんですよ・・・ > INF_VK_変数確認.wfx でチェックすれば、文字列式のセットが格段に速く出来ると思いました。 > INF_VK_変数確認.wfx の存在を教えて下さりありがとうございました。 > また、イベント処理のアップデートもありがとうございましたm(__)m
便利だと思いますので使ってくださいね。(^^ゞ
p.s.
拙作フレームワークを導入していただいてありがとうございます。m(__)m
> しかし、キーダウンイベントは余程の事が無い限り使用しない方がベターです。
VK_Framework を使用すると、色々なことが簡単に出来るワケですが、が…、それでよいのか?よく考えてください。
確かに[フォーム::キーダウン]イベントハンドラに直書きする場合と比べると超スマートですよね。
だって[フォーム::キーダウン]イベントハンドラに直書きする場合には、
恣意的な仮想キーコードを扱って、どの更新モード?、どのオブジェクト??に対応する if 文を書かなければなりません。
もちろん、プログラムをゴリゴリと書くのが大好きな人ならばそれで構いませんが、おそらく if 文だらけのものすごいイベントハンドラになるはずです。
でも、普通の感性の人ならばこれは避けたいですよね。
なぜならば、恣意的な仮想キーコードと if 文だらけのイベントハンドラは超分かりづらいからです。
世の中には、コメントを書けば何とかなると信じている人も居るようですが、この場合にはコメントをたくさん書いても効果がありません。
なぜならば、フォームで起きる事象をすべて if 文で対応しようとしているからです。
プログラミング経験が豊富な人には、その事はお見通しなのですが、[フォーム::キーダウン]イベントハンドラに魅せられた初級者には理解できません。
だから、初級者が[フォーム::キーダウン]イベントハンドラの「沼にハマる」のですよ。
いくら「構造化プログラミング」が有効だと言っても、 if 文のネストが深いプログラムは人間の理解を阻害します。
ということで、私( ONnoji )は、女々しくも、うだうだと、いつものように、同じ危惧感を書くのでありました。アハハハハha (T_T)
> しかし、キーダウンイベントは余程の事が無い限り使用しない方がベターです。
つまり、VK_Framework も出来るだけ抑えて使ってください。
p.p.s.
ちなみに、仕事用のアプリケーションではありませんが・・・
<サンプル集のファイル> INF_Framework_2022_Samples
INF_15パズル.kex INF_15パズル.wfx INF_15パズル_入門レッスンの手順.kex INF_15パズル_入門レッスンの手順.wfx
↑という拙作パズルゲームがありますよ。
矢印キーで[数字の駒]を動かしますが、後にマウス左クリックでも動かせるように改良しました。
ちなみに、INF_15パズル.wfx では、
MNU_form.kex MNU_form.wfx MNU_Framework.cmx
という[プルダウン・メニュー]のフレームワーク( 拙作:MNU_Framework )を使用しています。
なお、[プルダウン・メニュー]風というのは今となっては過去の時代的なインタフェースですので、おススメはしません。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
※実際には[プルダウン・メニュー]ではなく[ポップアップ・メニュー]です。
あくまでもご参考程度にご覧ください。
> 手続き定義開始 prcKeySetDefault( ) > > 手続き実行 VKprcEventKeyDownON( ) /* [キーダウン]イベントを有効にする */ > 手続き実行 VKprcKeyON( ) /* キーに割当てたコマンドの実行を許可する */ > > ** 矢印キーが押されたら、一般手続き:prc矢印キー評価( ) を呼び出す 表示モードに適用した例 > ** 注意! 空白片を移動させる理由から、キーの名前と引数は正反対である > 手続き実行 VKprcKeySet( "↑", 1, "0", "手続き実行 prc矢印キー評価( ""↓"", &VKmRepeat )" ) > 手続き実行 VKprcKeySet( "↓", 1, "0", "手続き実行 prc矢印キー評価( ""↑"", &VKmRepeat )" ) > 手続き実行 VKprcKeySet( "←", 1, "0", "手続き実行 prc矢印キー評価( ""→"", &VKmRepeat )" ) > 手続き実行 VKprcKeySet( "→", 1, "0", "手続き実行 prc矢印キー評価( ""←"", &VKmRepeat )" ) > > 手続き実行 VKprcKeySet( "Ctrl + B", 1, "0", "手続き実行 prc一手戻す評価( &VKmRepeat )" ) > > 手続き定義終了
|
|
|
■652 / ResNo.7) |
Re[7]: VK_frameworkの使用感 と 質問
|
□投稿者/ ジェダイの桐 -(2025/08/25(Mon) 09:48:47)
| 2025/08/25(Mon) 14:05:53 編集(投稿者)
ONnojiさん
おはようございます!
-----------------------------------------------------------------------------------
> 桐での入力では Ctrl + Enter はあまり使いませんから、エクセルで使い慣れているのでしょうかね???
これなんですが、社内チャットツールで 誤投稿防止で
Enter 改行 Ctrl + Enter 投稿
にカスタムしているんです。 癖ついて無意識に Ctrl + Enter を押してしまうんです。
それがキッカケで今回の仕組みを VK_Framework で実装を試みた次第です(^^ゞ ( 自分が使う物で VK_Framework の使い方を勉強してみたい気持ちも有りました )
-----------------------------------------------------------------------------------
> しかし、キーダウンイベントは余程の事が無い限り使用しない方がベターです。 > ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
INF_Framework を組み込んでいないフォームでどうしてもの場合は別として 恐らくですが、キーダウンイベントで何かをしよう試みる事はないと思います。
> VK_Framework を利用している場合にはオンオフが簡単ですが、本当に[フォーム::キーダウン]イベントハンドラに直書きすると収拾がつかなくなります。
多分上記の通り、頭が混乱すると思います・・・
VK_Frameworkをしようするにしても、よく考えてから実装した方がいいですね!
-----------------------------------------------------------------------------------
> 処理 更新 > キーの名前 中止 モード コマンド > Ctrl+Enter 1 2/訂正 手続き実行 prcAdvanceFocus(&VKmKeyString,&VKmRepeat,"txt作成日,lbl作成日,txt提出先・・・,lbl内容,txt備考,lbl備考","txt作成日",1) > Ctrl+Enter 1 4/行挿入 手続き実行 prcAdvanceFocus(&VKmKeyString,&VKmRepeat,"txt作成日,lbl作成日,txt提出先・・・,lbl内容,txt備考,lbl備考","txt作成日",1) > Ctrl+Enter 1 6/行追加 手続き実行 prcAdvanceFocus(&VKmKeyString,&VKmRepeat,"txt作成日,lbl作成日,txt提出先・・・,lbl内容,txt備考,lbl備考","txt作成日",1) > Ctrl+Enter 1 8/項目訂正 手続き実行 prcAdvanceFocus(&VKmKeyString,&VKmRepeat,"txt作成日,lbl作成日,txt提出先・・・,lbl内容,txt備考,lbl備考","txt作成日",1) > > ↑この例では、コマンドは1つしかセットされていませんが、複数のコマンドをセット出来ます。(8000文字以内) > ・・・・・・・・・・・・・・・ > > 複数のコマンドをセットした場合には、コマンドは半角コンマ(,)で区切って代入されます。 > ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ > > &VKmKeyNameKeyDownDim[1] … キーの名前,キーの名前,キーの名前,キーの名前 > &VKmKeyCancelKeyDownDim[1] … 1,1,1,1 > &VKmKeyMacroKeyDownDim[1] … コマンド,コマンド,コマンド,コマンド > > そのために、コマンドに半角コンマ(, )が含まれている場合には、全角コンマ(,)に変換しているのでした。(^^ok > ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ > > また、キーの名前にコンマ(, )を指定する場合には、comma と指定する理由でもありました。(^^ゞ
なるほど! 全角コンマの理由が良く分かりました!
-----------------------------------------------------------------------------------
今回も色々教えて頂きありがとうございましたm(__)m 勉強になりました。
> ちなみに、仕事用のアプリケーションではありませんが・・・ > > <サンプル集のファイル> INF_Framework_2022_Samples > > INF_15パズル.kex > INF_15パズル.wfx > INF_15パズル_入門レッスンの手順.kex > INF_15パズル_入門レッスンの手順.wfx
これ見てみます!
p.s.
余談なのですが、
手続き定義開始 prcGetObjectNames() ・ ・ ・
繰り返し &i = 1, &numObjects, &step メソッド呼び出し 戻り値 = &return,@フォーム明細部.オブジェクト取得( &cnt, &objectName ) &objectNameList = &objectNameList + #条件選択( &objectNameList <> #u, &comma ) + &objectName &cnt = &cnt + 1 繰り返し終了
・ ・ ・
手続き定義終了
今回のフォームで、上記でオブジェクト名を取得すると、
txt作成日,lbl作成日,txt提出先,lbl提出先,txt部署,lbl部署,txt作成者,lbl作成者,txtタイトル,lblタイトル,txt内容,lbl内容,txt備考,lbl備考
となってしまい、lblオブジェクトも取得されます。 長くて見づらい事とtxtオブジェクト名を取得したいので、
繰り返し &i = 1, &numObjects, &step メソッド呼び出し 戻り値 = &return,@フォーム明細部.オブジェクト取得( &cnt, &objectName ) &checkTextObject = #部分一致( &objectName, "txt", 1 ) 条件 ( &traceON ) トレース出力 _&checkTextObject
if ( &checkTextObject ) &objectNameList = &objectNameList + #条件選択( &objectNameList <> #u, &comma ) + &objectName end &cnt = &cnt + 1 繰り返し終了
&checkTextObject 変数を新設して txtオブジェクト名だけのリストを取得するように変更しました。
ささいな事ですが、変数の中身が見やすくなりました(^^ゞ
|
|
|
■記事リスト /
レス記事表示 →
[親記事-7]
|