DOWN LOAD BBS

HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 ファイル一覧 検索 過去ログ

■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 が 局所 定数 なのが原因ですかね??


引用返信 [メール受信/OFF] 削除キー/
■645 / ResNo.1)  Re[1]: VK_frameworkの使用感 と 質問
□投稿者/ ONnoji -(2025/08/22(Fri) 21:14:42)
    2025/08/22(Fri) 23:47:37 編集(投稿者)

    ジェダイの桐さんへのお返事です

    > 初めて 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備考

    ラベルオブジェクト:lblFlatButtonBorder_1 のフォームのリスト上の位置が不適当ですので、

    [オブジェクトのリスト]ダイアログでオブジェクトを移動してください。

    <参考>

     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

     ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

    申請書.WFX

    【移動前】

     フォーム
     ├ ファミリ
     │ └ famModernUI
     ├ ワークスペース
     │ :
     │ └ cmd訂正
     ├ フォーム操作バー
     ├ フォームヘッダ部
     │ ├ cmdAlt_I_ズームイン
     │ ├ cmdAlt_O_ズームアウト
     │ ├ EZWcmdズームイン
     │ ├ EZWcmdズームアウト
     │ ├ EZWtxtMagnification
     │ ├ INFcmdWhoAreYou
     │ ├ HDLVARcmdWhoAreYou
     │ ├ ONEcmdUI変換
     │ ├ FSCtxtPaletteColorName
     │ │ ├ FSCtxtPaletteColorName入力支援ボタン
     │ │ └ FSClblPaletteColorName
     │ ├ cmd先頭
     │ ├ cmd前行
     │ ├ cmd次行
     │ ├ cmd最終
     │ ├ cmd印刷
     │ ├ cmd新規作成
     │ └ lblFlatButtonBorder_1 ← Shift + ↑ ※[オブジェクトのリスト]ダイアログで操作する
     └ フォーム明細部        ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
       :
       └ txt備考
         └ lbl備考

    【移動後】

     フォーム
     ├ ファミリ
     │ └ famModernUI
     ├ ワークスペース
     │ :
     │ └ cmd訂正
     ├ フォーム操作バー
     ├ フォームヘッダ部
     │ ├ lblFlatButtonBorder_1 ← ここまで移動する ※セクション:フォームヘッダ部の最前面です
     │ ├ cmdAlt_I_ズームイン    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
     │ ├ cmdAlt_O_ズームアウト
     │ ├ EZWcmdズームイン
     │ ├ EZWcmdズームアウト
     │ ├ EZWtxtMagnification
     │ ├ INFcmdWhoAreYou
     │ ├ HDLVARcmdWhoAreYou
     │ ├ ONEcmdUI変換
     │ ├ FSCtxtPaletteColorName
     │ │ ├ FSCtxtPaletteColorName入力支援ボタン
     │ │ └ FSClblPaletteColorName
     │ ├ cmd先頭
     │ ├ cmd前行
     │ ├ cmd次行
     │ ├ cmd最終
     │ ├ cmd印刷
     └ フォーム明細部
       :
       └ txt備考
         └ lbl備考


引用返信 [メール受信/OFF] 削除キー/
■646 / ResNo.2)  Re[2]: VK_frameworkの使用感 と 質問
□投稿者/ ONnoji -(2025/08/22(Fri) 23:23:29)
    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_Framework_2022_Samples

     FW_Sample_カレンダーの変数受け渡し.kex
     FW_Sample_カレンダーの変数受け渡し.wfx
     FW_Sample_クラシックINF_変数受け渡し元.kex
     FW_Sample_クラシックINF_変数受け渡し元.tbx
     FW_Sample_クラシックINF_変数受け渡し元.wfx
     FW_Sample_モダン_現金出納帳.kex
     FW_Sample_モダン_現金出納帳.tbx
     FW_Sample_モダン_現金出納帳.wfx
     INF_15パズル.kex
     INF_15パズル.wfx
     INF_15パズル_入門レッスンの手順.kex
     INF_15パズル_入門レッスンの手順.wfx
     INF_Color_RGB.kex
     INF_Color_RGB.wfx
     INF_DatePicker.kex
     INF_DatePicker.wfx
     INF_DatePicker_Option.kex
     INF_DatePicker_Option.wfx
     INF_DatePicker_年月Set.kex
     INF_DatePicker_年月Set.wfx
     INF_Date年月日Set.kex
     INF_Date年月日Set.wfx
     INF_DispCondSave.kex
     INF_DispCondSave.wfx
     INF_Framework.cmx
     INF_MNU.kex
     INF_MNU.wfx
     INF_VK_key_checker.kex
     INF_VK_key_checker.tbx
     INF_VK_key_checker.wfx ← これ!オススメ
     INF_VK_変数確認.kex   ←←←←←← 1755872694.txt ( update_INF_VK_変数確認.txt ) を読み込む 
     INF_VK_変数確認.tbx
     INF_VK_変数確認.wfx   ← これ!オススメ
     INF_都道府県picker.kex
     INF_都道府県picker.wfx
     INF_電卓.kex
     INF_電卓.wfx
     IPS_EditPermission.kex
     IPS_EditPermission.wfx
     IPS_Framework.cmx
     IPS_MV2LBX.kex
     IPS_MV2LBX.wfx
     MNU_form.kex
     MNU_form.wfx
     MNU_Framework.cmx
     MNU_エディタ.kex
     MNU_エディタ.wfx
     MNU_パラメータ編集.kex
     MNU_パラメータ編集.wfx
     カレンダー入力.tbx
     カレンダー入力.wfx
     新メニューの練習.kex
     新メニューの練習.tbx
     新メニューの練習.wfx
     都道府県入力.tbx
     都道府県入力.wfx
     電卓入力.tbx
     電卓入力.wfx



1755872694.txt
/71KB
引用返信 [メール受信/OFF] 削除キー/
■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 に セットするプロシージャですが、結構苦戦しました。
    > やっぱり 文字列式 は、慣れが必要ですね(^^ゞ

    実は、
    &macroStr = "手続き実行 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


引用返信 [メール受信/OFF] 削除キー/
■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 の仕様ですので虫ではありません。(^^ゞ

    理由については別途解説するつもりです。


引用返信 [メール受信/OFF] 削除キー/
■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
      │  コマンド &macroString    │
      │ end               │
      │                 │
      └─────────────────┘


800×600 => 250×187

vk_library_image.gif
/28KB
引用返信 [メール受信/OFF] 削除キー/
■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 に セットするプロシージャですが、結構苦戦しました。
    >>やっぱり 文字列式 は、慣れが必要ですね(^^ゞ
    > 実は、
    > &macroStr = "手続き実行 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 )" )
    >
    > 手続き定義終了



引用返信 [メール受信/OFF] 削除キー/
■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オブジェクト名だけのリストを取得するように変更しました。

    ささいな事ですが、変数の中身が見やすくなりました(^^ゞ



引用返信 [メール受信/OFF] 削除キー/



スレッド内ページ移動 / << 0 >>

このスレッドに書きこむ

Mode/  Pass/

HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -