DOWN LOAD BBS

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

ダウンロードされた「感想・質問・希望」等、お聞かせ下さい
作者の一番の励みになります。
■ 24時間以内に作成されたスレッドは New で表示されます。
■ 24時間以内に更新されたスレッドは UpDate で表示されます。

記事リスト ( )内の数字はレス数
NomalVK_frameworkの使用感 と 質問(7) | NomalHDLVARprcWindowAppearVarSendの使用感(15) | NomalINF_Frameworkについて質問(2) | Nomal拙作の[整形ユーティリティ]の些細な改良(12) | NomalINF_Framework の手続きリファレンス(0) | Nomal1st_Thin_INF_Framework_組み込みガイド_改訂版(0) | NomalINF_Framework HDLVAR 仕様書メモ 第2版(0) | Nomal[桐の釣魚大全]の新サイトのご案内(0) | NomalThin_INF_Framework for 桐10s/ 桐sSL / 桐sLT(2) | Nomalダブルクリック考(3) | NomalThin_INF_Framework ベータ2のご案内(58) | NomalモードレスB で さよなら。モードレスB を閉じる(7) | NomalINF_Framework の話をしよう(19) | NomalThin_INF_Framework のご案内(58) | Nomalガントチャートについて(1) | Nomalガントチャートのベータ版のご案内(19) | Nomalガントチャート試作品(30) | NomalINF_DatePicker がデートタイムピッカーに改修されました(2) | Nomal#205 INF_Framework 第3.3版 改訂版(MkII) サンプル集 for 桐10s / 桐sSL(0) | Nomal#207,206,205,204 のIPS_Framework.cmx に関して(0) | Nomalフォーム定義リストの[Webビュー]オブジェクト対応(0) | Nomal桐10s/桐s版のフラットスタイル・フォームに対応(1) | NomalINF_Framework の入門講座を公開しました(0) | Nomal整形ユーティリティ 3.91 アップデート(0) | Nomal観験桐(ダウンロードコーナー)で拙作が紹介されました(0) | Nomal#199 God_Excel_Reader アップデート(0) | Nomal#200 アイテム登録が要らないランチャー:toy_history(0) | Nomal#199 紙・神・方眼紙エクセルのデータ( .csv / .txt )を桐の表に変換するユーティリティ(0) | NomalINF_DatePicker.wfm/wfx の編集属性式の改修について(0) | Nomal#195 #196 INF Framework 第3.3版 INF_DatePicker(1) | Nomal#198 INF_カード 第1.0版のご紹介(1) | Nomal#197 イベント処理の整形ユーティリティ 第 3.9 版(2) | NomalIPS_Framework.cmd / IPS_Framework.cmx 共通(0) | Nomal#197 イベント処理の整形ユーティリティ 第 3.9 版(0) | Nomal#195 #196 INF_DatePicker.kev/.kex 共通(1) | Nomal初心者向けの一括処理のサンプルはありますでしょうか?(2) | Nomal#195 INF Framework 第3.3版 for 桐9-2012 / 桐9s(0) | Nomal#197 イベント処理の整形ユーティリティ 第 3.9 版(0) | Nomal193 クラシックUI_モダンUI_変換ユーティリティ(1) | Nomal桐でGrep10(5) | Nomal192 整形ユーティリティ(3) | Nomal190 整形ユーティリティ ビーユージー(0) | Nomal187 INF Framework 第3.2版 for 桐10 / 桐10s (0) | Nomal188 アップデート INF_dirでゲットだぜ(1) | Nomal186, 187, 188, 189 INF_Framework の潜在バグ(0) | Nomal188 イベント処理の整形ユーティリティ 第 3.5 版に関して(0) | Nomal桐でGrep(桐9対応版)素晴らしい(1) | NomalINF_DatePicker(カレンダー入力)(0) | Nomal177・8 INF Framework (桐10/ 桐10s・桐9-2012/ 桐9s版)(0) | Nomal182 整形ユーティリティに無害な虫がいました(1) | Nomal171:toy_launcher 第 3.0 版を使ってみて(3) | Nomal177・8 INF Framework (桐10/ 桐10s・桐9-2012/ 桐9s版)(1) | Nomal176:桐でGrep(桐9対応版)(2) | Nomal174: 桐10移行計画3 (0) | Nomal175:「桐でGrep(桐10対応版) 3.10版  (C)悲しげ」を使ってみて(5) | NomalIPS_form を使いこなすための手引書です(1) | Nomal173:イベント処理の整形ユーティリティご紹介(1) | Nomal「 171,172 」の、2作品、同時紹介です(0) | Nomal170:文字検索処理 Ver1.21 ご紹介(8) | Nomal169:イベント処理の整形ユーティリティ 第3.0版(1) | Nomal168:ファイル・フォルダをチェック(0) | Nomal終端行は指定できませんというエラーで苦戦!(1) | NomalA4用紙に2枚の伝票を印字したい(1) | Nomal了解しました(2) | Nomal初心者向けのサンプルは?(1) | Nomal桐V9 メール一斉送信 2.01 (0) | Nomal列固定に集計関数も移動させたい(1) | Nomal167:フォルダ毎サイズ集計(0) | Nomal桐4作品、一挙掲載(4) | Nomal162:データ管理システム(0) | Nomal161:販売部長U(体験版)」桐9-2004版(0) | Nomal160:toy_launcher(3) | Nomal159:画像管理システム for 桐(0) | Nomal158:わんたっち表形式 の登録(2) | NomalNO TITLE(0) | Nomal157:桐で「キーダウン・システムキーダウン]イベントを自由自在に制御(1) | Nomal156:桐で「トランプゲーム(フリーセル風)」(0) | Nomal155:桐で「麻雀牌ゲーム(四川省風)」(1) | Nomal154:桐で「RSSリーダもどき」(0) | Nomal拙作のライブラリのアップデートに関して(1) | Nomal153 MNU Tools フォームにメニューバー(4) | Nomal151・152 桐のツール掲載(0) | Nomal150 ウィンドウ操作プログラム(0) | Nomal149 再帰でファイル検索(0) | Nomal146〜148 ビュア3題(0) | NomalNO TITLE(1) | Nomal145 INF Tools  第1.1版のバージョンアップ(3) | Nomal144 INF Tools 第1.0版 for 桐ver.8 / 桐ver.9(4) | Nomal「マウス入力」と同時に移動もできますか。(2) | Nomal143 桐v9 メール一斉送信 Ver.2.01(0) | Nomal142 桐でヘルプファイルを(1) | Nomal「メール一斉送信]について(10) | Nomal141 桐ver8 列固定式の一覧表形式フォーム(1) | Nomal全銀フォーマット作成一括処理使わせていただきました(8) | Nomal140 清書ユーティリティ 第2.1版 (再)登録 (2) | Nomal140 清書ユーティリティ 第2.1版 登録 (8) | Nomal138 桐ver9 文字列検索 (0) | Nomal137 桐ver9 K-ba (0) | Nomalこの掲示板の XSS 脆弱性(3) | Nomal全銀フォーマット作成一括処理について(2) |



■記事リスト / ▼下のスレッド
■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]

▽[全レス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 に セットするプロシージャですが、結構苦戦しました。
    > やっぱり 文字列式 は、慣れが必要ですね(^^ゞ

    実は、
    &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]

■記事リスト / レス記事表示 → [親記事-7]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■626 / 親記事)  HDLVARprcWindowAppearVarSendの使用感
□投稿者/ ジェダイの桐 -(2025/07/31(Thu) 09:38:25)
    ONnojiさん

    おはようございます!

    初めて HDLVARprcWindowAppearVarSend を使いましたがとても便利でした。

     ・目的       : 年に一度、商品群の基準価格を見直し価格変更をする

     ・想定される不都合 : 物理的な表でユーザーに価格変更を依頼すると、更新漏れ・更新時期外の意図しない変更( 手が当たった等 )が起こり得そう

     ・解決方法     : 更新表フォームからNUllフォーム( モーダル )を開き、商品群A 商品群B 商品群C の基準価格入力フィールド( テキストボックス )を作って、入力値を更新表にリターンして基準価格を一括更新する

    意図した結果を導く方法が無いか考えた結果、HDLVARprcWindowAppearVarSend がうってつけでした(^^ゞ


    1つ悩んだ事は、更新表の 基準価格項目 を更新禁止 にするかどうかです。
    ちょっと桐になれたユーザーあれば、更新表フォームを開かずに表を直接開いて何かしないかな?と思いました。
    私は表での更新禁止が好きではないのですが、今回は更新禁止にしました。

    どう対応したかと言えば、

     ・更新表フォームの cmd基準価格設定ボタン をクリックして、 手続き実行 HDLVARprcWindowAppearVarSend を呼び出す。

     ・手続き定義開始 cmd基準価格設定ClickRETURN の最初に 項目属性変更2 変更, [基準価格], { , , , , , , 許可 } を行う。

     ・基準価格の一括変更を行う。

     ・項目属性変更2 変更, [基準価格], { , , , , , , 禁止 } をして、cmd基準価格設定ClickRETURN を終了する。

    と言う手順にしました。

    後は、ユーザーがどう感じるかですが、感想は来年の基準価格更新時に聞けると思います(^^ゞ


    便利にフレームワークを使わせて貰ってます!
引用返信 [メール受信/OFF]

▽[全レス15件(ResNo.11-15 表示)]
■639 / ResNo.11)  Re[11]: HDLVARprcWindowAppearVarSendの使用感
□投稿者/ ジェタイの桐 -(2025/08/09(Sat) 20:31:42)
    ONnojiさん


    こんばんは!

    私事なのですが、珍しく長期連休であります。
    よってプログラム体験が8/18となりますm(_ _)m

    体験後また感想をコメントさせてもらいます(^-^)
引用返信 [メール受信/OFF]
■640 / ResNo.12)  Re[12]: HDLVARprcWindowAppearVarSendの使用感
□投稿者/ ONnoji -(2025/08/10(Sun) 12:07:12)
    2025/08/11(Mon) 01:37:34 編集(投稿者)

    なぜ VK_Framework に "key"という指定があるのかについて説明します。

    案外というか、ほとんどの人が[エクスプローラ]などで、ファイルの先頭文字 A から Z を押して移動できることを知らないんですよ。
           ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    例えば、フォルダに test_NumAccept.zip というファイルが存在したとします。

    [エクスプローラ]でフォルダ内のファイル一覧を表示した状態でキートップが[T]のキーを押したとします。

    そうすると、ファイルの先頭文字が "T" または "t" のファイルへ移動します。

    再び、キートップが[T]のキーを押すと、次のファイルの先頭文字が "T" または "t" のファイルへ移動します。

    という具合でとても便利なんですよ。(^^v

    これは、[開く]ダイアログでも同じです。

    もちろん、ファイルの先頭文字が半角文字で無い場合には、うんともすんとも移動しませんけれどね。アハハハha
         ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    そこで、VK_Framework では、文字キーだけを返す "key" という指定を後で追加したのでした。

    身近な例では、拙作:toy_launcher3.wfx で試すことが出来ますよ

    【再掲載】

    VK_Framework では通常はキートップの文字を指定しますが、

    例外として、"key"という指定があります。

    コチラ
     ↓
    桐の釣魚大全のトップ > 仕様メモ集
    https://silicon7565.cloudfree.jp/INF_Framework/1st_Spec_Memo_VK.txt

     ■キーの名前: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重引用符が二つ返ります

    p.s.

    > 私事なのですが、珍しく長期連休であります。
    > よってプログラム体験が8/18となりますm(_ _)m
    > 体験後また感想をコメントさせてもらいます(^-^)

    たまには仕事から離れてリフレッシュするのがいいですね。

    南半球は冬ですから、オーストラリアかニュージーランドだと涼しそうですね。

    ボンボヤージュ

引用返信 [メール受信/OFF]
■641 / ResNo.13)  Re[10]: HDLVARprcWindowAppearVarSendの使用感
□投稿者/ ジェダイの桐 -(2025/08/18(Mon) 12:40:16)
    ONnojiさん


    こんにちは!


    個人的に今回の test_数値の入力後イベントハンドラ.wfx が一番シックリきました(^^ゞ


    -----------------------------------------------------------------------------------

    感想

     ・どの入力フィールドでも、入力制限がないのに結果として、意図した結果が求まる様に設計されている
       整数 長整数 数値 通貨 に文字列が入力可能。しかし、入力フィールドからキャレットが脱出したら入力フィールドは未定義になる
       整数 長整数 に関しては、
        .( ドット )が含まれた数値の時はアナウンスが流れた後、小数点以下を削除する
        入力範囲外の時はアナウンスを流して、適正範囲への入力をユーザへ促す

     ・ユーザに対して親切な仕組をどうやって実現しているのかな?と思いプログラムを見たんですが最初は分かりませんでした。
      トレース出力を見て理解出来ました(^^ゞ

      prcNumAccept の &string = &編集文字列 これが判断基準になるんですね(^^ゞ

      文字列以外の入力は 必ず if ( #対応番号( &dataTypeList, &dataType ) <> 0 ) の if節に入ります。
      if ( &dataType = "整数" .or &dataType = "長整数" ) で 整数 or 長整数 チェックが入る。
      整数 or 長整数 の時は、 少数点 及び 入力範囲がエラーの時、ユーザにアナウンスを流す。

      最後に &編集文字列 = &string で 文字列の値を返し、入力後イベントへ復帰する。( &stringが数値以外の時は、&編集文字列へ未定義が代入される )

     ・私が桐のプログラムを本腰を入れて勉強し始めたキッカケのスレッドが ■14187 / 親階層)  行制約について なんです。
      その時 ONnojiさんが提示してくれたサンプルが ■14199 / 7階層)  行制約について なんですよ。

      そのサンプルのキモも 入力後イベント だったんです。
      ユーザの入力自体は制限なしで、入力結果が開発者の意図した結果かどうかによって、次の作業へ進むかどうかが決まる。
      意図しない結果の時は、ユーザへ分かりやすいアナウンスを流し、意図した結果へと導く。

      この時 ONnojiさんに教えて貰った事が 私の考え方のベースにあるので、入力制限( 入力自体出来ない )をするアプローチは基本的に違和感を抱く様になりました。

      prcNumAccept は ユーザ目線で操作も違和感がないプログラムだと実感しました(^^ゞ


    -----------------------------------------------------------------------------------

    疑問

     個人的には test_数値の入力後イベントハンドラ.wfx が好みです。
     一方で test_数値のテキストボックス使用例.wfx の 入力制限も 違和感がありませんでした。

     数字の入力フィールド へ 制限無く入力可能 だが 文字列の場合 未定義を返す
     数字の入力フィールド へ 文字列の入力は不可能

     入力に対するアプローチが違うだけで、エラー時のユーザへのアナウンスを含む最終的な結果は 同じ です。
     ユーザにとってはどちらが便利に感じるんでしょうかね??


引用返信 [メール受信/OFF]
■642 / ResNo.14)  Re[11]: HDLVARprcWindowAppearVarSendの使用感
□投稿者/ ONnoji -(2025/08/19(Tue) 10:46:39)
    ジェダイの桐さんへのお返事です

    > 個人的に今回の test_数値の入力後イベントハンドラ.wfx が一番シックリきました(^^ゞ
    >
    > 感想
    >
    > ・どの入力フィールドでも、入力制限がないのに結果として、意図した結果が求まる様に設計されている
    >  整数 長整数 数値 通貨 に文字列が入力可能。しかし、入力フィールドからキャレットが脱出したら入力フィールドは未定義になる
    >  整数 長整数 に関しては、
    > .( ドット )が含まれた数値の時はアナウンスが流れた後、小数点以下を削除する
    >   入力範囲外の時はアナウンスを流して、適正範囲への入力をユーザへ促す
    > ・ユーザに対して親切な仕組をどうやって実現しているのかな?と思いプログラムを見たんですが最初は分かりませんでした。
    >  トレース出力を見て理解出来ました(^^ゞ
    >   prcNumAccept の &string = &編集文字列 これが判断基準になるんですね(^^ゞ
    >
    > 文字列以外の入力は 必ず if ( #対応番号( &dataTypeList, &dataType ) <> 0 ) の if節に入ります。
    > if ( &dataType = "整数" .or &dataType = "長整数" ) で 整数 or 長整数 チェックが入る。
    > 整数 or 長整数 の時は、 少数点 及び 入力範囲がエラーの時、ユーザにアナウンスを流す。
    >   最後に &編集文字列 = &string で 文字列の値を返し、入力後イベントへ復帰する。( &stringが数値以外の時は、&編集文字列へ未定義が代入される )

    フィードバックありがとうございます。m(__)m

    > ・私が桐のプログラムを本腰を入れて勉強し始めたキッカケのスレッドが ■14187 / 親階層)  行制約について なんです。
    > その時 ONnojiさんが提示してくれたサンプルが ■14199 / 7階層)  行制約について なんですよ。
    >   そのサンプルのキモも 入力後イベント だったんです。
    > ユーザの入力自体は制限なしで、入力結果が開発者の意図した結果かどうかによって、次の作業へ進むかどうかが決まる。
    > 意図しない結果の時は、ユーザへ分かりやすいアナウンスを流し、意図した結果へと導く。
    > この時 ONnojiさんに教えて貰った事が 私の考え方のベースにあるので、入力制限( 入力自体出来ない )をするアプローチは基本的に違和感を抱く様になりました。
    > prcNumAccept は ユーザ目線で操作も違和感がないプログラムだと実感しました(^^ゞ

    そんなことがありましたね。アハハha

    とりあえず入力してもらう、その後問題があればフィードバックするというユーザインタフェースですね。

      > &msg =      "<警告>"
      > &msg = &msg + "\n\n・[数量]の値が書き換えられましたが、この操作は許可されていません"
      > &msg = &msg + "\n\n⇒自動的に数量の値を直前の数値( " + &m編集文字列 + " )に戻します"
      > &msg = &msg + "\n\n<ヒント>"
      > &msg = &msg + "\n\n納期の値が未定義の時のみ、数量が変更可能可能です"
      > &msg = &msg + "\n\n[納期]= " + #str( [納期] )
      > &msg = &msg + "\n\n[数量]の値を書き換える必要が有る場合には[納期]の値を空欄にしてください"
      > メッセージボックス  &title, &msg, アイコン = e, ボタン指定 = 1, 制御文字展開 = する, &ans

    懐かしいですね。(^^

    > 疑問
    >
    >  個人的には test_数値の入力後イベントハンドラ.wfx が好みです。
    >  一方で test_数値のテキストボックス使用例.wfx の 入力制限も 違和感がありませんでした。
    >
    >  数字の入力フィールド へ 制限無く入力可能 だが 文字列の場合 未定義を返す
    >  数字の入力フィールド へ 文字列の入力は不可能
    >
    >  入力に対するアプローチが違うだけで、エラー時のユーザへのアナウンスを含む最終的な結果は 同じ です。
    >  ユーザにとってはどちらが便利に感じるんでしょうかね??

    VK_Framework を使ってキー入力をフィルターしても、フィルターしなくても結果は同じなんですよね。
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    だったら、余計な手続きは不要でしょう。
    ・・・・・・・・・・・・・・・・・・

    つまり、この場面で VK_Framework を使うのはプログラミング的には過剰な装飾なんですよね。
        ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    だから、「過剰なものを取り除いた」のが test_数値の入力後イベントハンドラ.wfx の方なんです。
        ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    <改良前>
    ■ test_数値のテキストボックス使用例.kex

    txt数値::入力前
     └ prcNumInputKeySetON
       ├ VKprcEventKeyDownON
       ├ VKprcKeyON
       └ VKprcKeySet

    txt数値::入力後
     └ prcNumInputControl
       └ prcNumInputKeySetOFF
         ├ VKprcEventKeyDownOFF
         ├ VKprcKeyOFF
         └ VKprcKeyClear

    <改良後>
    ■ test_数値のイベントハンドラ.kex

    txt数値::入力後
     └ prcNumAccept ← prcNumInputControl を流用して prcNumInputKeySetOFF を呼び出さないようにした

    p.s.

    当方は現在、日時型の場合を研究しています。prcDateAccept というところです。(^^ゞ

    完成したらこの掲示板に投稿します。



引用返信 [メール受信/OFF]
■643 / ResNo.15)  Re[12]: HDLVARprcWindowAppearVarSendの使用感
□投稿者/ ジェダイの桐 -(2025/08/19(Tue) 11:38:39)
    ONnojiさん


    こんにちは!


    > VK_Framework を使ってキー入力をフィルターしても、フィルターしなくても結果は同じなんですよね。
    > ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
    >
    > だったら、余計な手続きは不要でしょう。
    > ・・・・・・・・・・・・・・・・・・
    >
    > つまり、この場面で VK_Framework を使うのはプログラミング的には過剰な装飾なんですよね。
    >     ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
    >
    > <改良前>
    > ■ test_数値のテキストボックス使用例.kex
    >
    > txt数値::入力前
    >  └ prcNumInputKeySetON
    >    ├ VKprcEventKeyDownON
    >    ├ VKprcKeyON
    >    └ VKprcKeySet
    >
    > txt数値::入力後
    >  └ prcNumInputControl
    >    └ prcNumInputKeySetOFF
    >      ├ VKprcEventKeyDownOFF
    >      ├ VKprcKeyOFF
    >      └ VKprcKeyClear
    >
    > <改良後>
    > ■ test_数値のイベントハンドラ.kex
    >
    > txt数値::入力後
    >  └ prcNumAccept ← prcNumInputControl を流用して prcNumInputKeySetOFF を呼び出さないようにした


    なるほど。
    図示してみると一目瞭然ですね。

    結果が同じであれば、シンプルなプログラミングの方が 可読性・保守性 から考えても良いですね(^^ゞ

    勉強になりました!


    > p.s.
    >
    > 当方は現在、日時型の場合を研究しています。prcDateAccept というところです。(^^ゞ
    >
    > 完成したらこの掲示板に投稿します。


    分かりました!
    楽しみにしています(^^ゞ


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

■記事リスト / レス記事表示 → [親記事-9] [10-15]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■618 / 親記事)  INF_Frameworkについて質問
□投稿者/ ジェダイの桐 -(2025/06/05(Thu) 12:37:16)
    2025/06/05(Thu) 14:59:35 編集(投稿者)

    ONnojiさん


    こんにちは!


    思いついた事があって、実験してみた事があります。


    208_Thin_INF_Framework_For_Kiri10s_final に入っている
    NO_EZW_Sender.wfx と NO_EZW_Receiver.wfx を使用します。

    NO_EZW_Receiver.wfx を開いた状態で 且つ A項目を訂正状態にします。
    NO_EZW_Sender.wfx を開き cmd手続き実行引数ありコマンドボタン を押します。


    私の考えでは、NO_EZW_Receiver.wfx の 手続き定義開始 prcテスト( 文字列 &string )は表示状態になるまで発動しないのかなと思ったんです。


    けれど、しっかりメッセージボックスは出てきました。


    -----------------------------------------------------------------------

    と言う事は、仮に

    A社員のPC に 交通費精算フォーム (社員用): 申請入力用
    B社員のPC に 精算承認フォーム (経理担当者用): 承認作業用

    というフォームがあったします。

    A社員は 交通費精算情報を入力して入力確定ボタンを押します。入力後はB社員に承認されたかどうかを待つだけとします。

    入力確定ボタンの内容は、入力データをB社員の精算承認.TBXへ送る事 入力した事を知らせるメッセージボックスで知らせる とします。


    B社員は 精算承認フォーム で作業しています。
    A社員からデータを入力した事を知らせるメッセージボックスを見て、チェック後、承認ボタンを押す。

    承認ボタンの内容は、A社員に承認した事をメッセージボックスで知らせる事と 承認日をA社員の交通費精算.TBXの 項目名 承認日 へ入力する

    ※A と B のパソコンのネットワークは繋がっているとします。

    こういう事も可能なのでしょうか??


    お時間がある時教えて下さい。
    よろしくお願いいたしますm(__)m


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

▽[全レス2件(ResNo.1-2 表示)]
■622 / ResNo.1)  Re[1]: INF_Frameworkについて質問
□投稿者/ ONnoji -(2025/06/06(Fri) 11:51:37)
    2025/06/06(Fri) 11:58:43 編集(投稿者)

    ジェダイの桐さん、ごきげんよう。

    > 思いついた事があって、実験してみた事があります。
    > 208_Thin_INF_Framework_For_Kiri10s_final に入っている
    > NO_EZW_Sender.wfx と NO_EZW_Receiver.wfx を使用します。
    > NO_EZW_Receiver.wfx を開いた状態で 且つ A項目を訂正状態にします。
    > NO_EZW_Sender.wfx を開き cmd手続き実行引数ありコマンドボタン を押します。
    > 私の考えでは、NO_EZW_Receiver.wfx の 手続き定義開始 prcテスト( 文字列 &string )は表示状態になるまで発動しないのかなと思ったんです。
    > けれど、しっかりメッセージボックスは出てきました。

    ↑上の内容をトレースしたものを以下に示します。

    なお、二つのフォームウィンドウの挙動なので、〔NO_EZW_Sender.wfx/.kex〕〔NO_EZW_Receiver.wfx/.kex〕を追記しています。

    〔NO_EZW_Sender.wfx/.kex〕

    ┌when 手続き"cmd手続き実行引数ありコマンドClick( )"を実行開始しました

    │┌when 手続き"HDLLNCprcHdlSeek("D:\kiri10s\dl_Thin_INF_Framework_For_Kiri10sAA\NO_EZW_Receiver.wfx",,,,)"を実行開始しました
    ││
    │└end

    │┌when 手続き"HDLCOMprcMacroSend(2,"手続き実行 prcテスト( ""只今、送受信のテスト中"" )",)"を実行開始しました
    │└end

    └end

    〔NO_EZW_Receiver.wfx/.kex〕

    ┌when 手続き"フォーム::タイマー2( )"を実行開始しました

    │┌when 手続き"INFprcEventTimerSecondaryRun( )"を実行開始しました
    ││
    ││┌when 手続き"prcテスト("只今、送受信のテスト中")"を実行開始しました
    │││
    │││┌when 手続き"INFprcMsgPause("i","prcテスト( )","私は、NO_EZW_Receiver.wfx\n\n只今、送受信のテスト中\n\nどうぞ!")"を実行開始しました
    │││└end
    │││
    ││└end
    ││
    │└end

    └end

    ご覧のように、〔NO_EZW_Sender.wfx/.kex〕は、INF_Framework のHDLCOMprcMacroSend を実行して、

    〔NO_EZW_Receiver.wfx/.kex〕の[タイマー2]イベントの属性をオンにしてプログラムの流れが終わっています。
                                       ・・・・・・・・・・・・・・・・

    プログラムの流れが終わると、各フォームでは自身の状態を監視するループが動作しているのでして、
                  ・・・・・・・・・・・・・・・・・・・・・・・・・・・

    〔NO_EZW_Receiver.wfx/.kex〕では、[タイマー2]イベントの属性がオンになっていることを察知します。
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

      【参考】
      桐の釣魚大全のトップ > フォームアプリケーション教書 第1部
      9.1 イベントループ
      https://silicon7565.cloudfree.jp/guide/guide_Part1.htm#section9-1

    従って、[タイマー2]イベントに設定されたインターバルが経過すると時限的に、
                         ・・・・・・・・・・・・・・・・

    [タイマー2]イベントハンドラが呼び出されます。

    その後は、[INFprcEventTimerSecondaryRun]が所定の処理をするという事ですね。アハハハha

    ※この場合には、時限タイマーとして使うので、[タイマー2]イベントの属性はオフに戻しています。

    ということで、

    > 私の考えでは、NO_EZW_Receiver.wfx の 手続き定義開始 prcテスト( 文字列 &string )は表示状態になるまで発動しないのかなと思ったんです。

    フォームの編集モードは関係しないのでありました。

     ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

    > と言う事は、仮に
    > A社員のPC に 交通費精算フォーム (社員用): 申請入力用
    > B社員のPC に 精算承認フォーム (経理担当者用): 承認作業用
    > というフォームがあったします。
    > A社員は 交通費精算情報を入力して入力確定ボタンを押します。入力後はB社員に承認されたかどうかを待つだけとします。
    > 入力確定ボタンの内容は、入力データをB社員の精算承認.TBXへ送る事 入力した事を知らせるメッセージボックスで知らせる とします。
    > B社員は 精算承認フォーム で作業しています。
    > A社員からデータを入力した事を知らせるメッセージボックスを見て、チェック後、承認ボタンを押す。
    > 承認ボタンの内容は、A社員に承認した事をメッセージボックスで知らせる事と 承認日をA社員の交通費精算.TBXの 項目名 承認日 へ入力する
    > ※A と B のパソコンのネットワークは繋がっているとします。
    > こういう事も可能なのでしょうか??

    1.

    INF_Framework のメッセージ送受信(センダー・レシーバ)は、1台のPCで起動した1つの桐の中で有効です。
    複数のPCで起動した桐と桐の間では無効です。
    というか、フォームウィンドウのハンドル番号を探索できません。
         ・・・・・・・・・・・・・・・・・・・・・・・・
    2.

    メッセージボックスは、モーダルなウィンドウです。
    つまり、メッセージボックスが表示されている間は、それ以外の操作ができません。
        ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    これは、もしもの話ですが・・・

    他人が自分のPCのスクリーンにメッセージボックスを表示したらどうでしょうか?

    突然現れたメッセージボックスに自分の仕事の邪魔をされたと思いますよね。
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    それこそ、誰のためのデザインでしょうか?

    p.s.

    桐というパーソナルデータベースソフトは、何でも出来そうな気にさせるほど優秀です。

    しかし、何でも出来るワケではないのです。

    これはあくまでも私の個人的な感想ですが・・・(^^ゞ

    ローカルエリアネットワークを使用して、複数の桐でデータを共有する事は苦手です。

    私ならば、直接的に桐の表(.tbx)を共有する事は避けるようにします。※直接共有の代替手段は色々考えられますよ。

    また、交通費精算ならばそれ用のパッケージソフトがあると思いますので、それを利用する方がベストだと思いますよ。

    繰り返しになりますが、

    桐というパーソナルデータベースソフトは、何でも出来そうな気にさせるほど優秀です。

    でも、何でも出来るワケではないのです。

    世の中には、何でもエクセルで行おうとする人が居ますが、それは変でしょう?

    ということですよ。

引用返信 [メール受信/OFF]
■624 / ResNo.2)  Re[2]: INF_Frameworkについて質問
□投稿者/ ジェダイの桐 -(2025/06/06(Fri) 14:43:36)
    ONnojiさん


    こんにちは!


    > プログラムの流れが終わると、各フォームでは自身の状態を監視するループが動作しているのでして、
    >               ・・・・・・・・・・・・・・・・・・・・・・・・・・・
    >
    > 〔NO_EZW_Receiver.wfx/.kex〕では、[タイマー2]イベントの属性がオンになっていることを察知します。
    > ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
    > 従って、[タイマー2]イベントに設定されたインターバルが経過すると時限的に、
    > [タイマー2]イベントハンドラが呼び出されます。
    > その後は、[INFprcEventTimerSecondaryRun]が所定の処理をするという事ですね。アハハハha
    > ※この場合には、時限タイマーとして使うので、[タイマー2]イベントの属性はオフに戻しています。
    > ということで、
    >>私の考えでは、NO_EZW_Receiver.wfx の 手続き定義開始 prcテスト( 文字列 &string )は表示状態になるまで発動しないのかなと思ったんです。
    >
    > フォームの編集モードは関係しないのでありました。
    >


    なるほどですね。
    フォーム編集モードの件、理解しました!

    > INF_Framework のメッセージ送受信(センダー・レシーバ)は、1台のPCで起動した1つの桐の中で有効です。
    > 複数のPCで起動した桐と桐の間では無効です。
    > というか、フォームウィンドウのハンドル番号を探索できません。
    >      ・・・・・・・・・・・・・・・・・・・・・・・・


    理解しました!


    > メッセージボックスは、モーダルなウィンドウです。
    > つまり、メッセージボックスが表示されている間は、それ以外の操作ができません。
    >     ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
    > これは、もしもの話ですが・・・
    > 他人が自分のPCのスクリーンにメッセージボックスを表示したらどうでしょうか?
    > 突然現れたメッセージボックスに自分の仕事の邪魔をされたと思いますよね。
    > ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
    > それこそ、誰のためのデザインでしょうか?


    正にその通りです。
    他人の影響によって、操作中の画面に意図せずメッセージボックスが出てきたら
    まずビックリします。


    では、なぜ質問したのか?
    具体的に何かをしたい訳ではなかったのですが、もし他PCにメッセージを送信する事が出来たら、アイディアの幅が広がるかな?と安直に思ってしましました。


    > 桐というパーソナルデータベースソフトは、何でも出来そうな気にさせるほど優秀です。


    本当にそう思います。今では桐が大好きです。


    > しかし、何でも出来るワケではないのです。
    > これはあくまでも私の個人的な感想ですが・・・(^^ゞ
    > ローカルエリアネットワークを使用して、複数の桐でデータを共有する事は苦手です。
    > 私ならば、直接的に桐の表(.tbx)を共有する事は避けるようにします。※直接共有の代替手段は色々考えられますよ。


    共有の何が困るかというと、使用メンバー全てのレベルが同等であればまだ安心できますが、アンバランスであればデータが意図しない物になっている可能性が有る事です。


    私は、複数人で共有している表は絶対自分の表に入力した物を、共有表に読む込む様にしています。


    > 世の中には、何でもエクセルで行おうとする人が居ますが、それは変でしょう?
    > ということですよ。


    ありがとうございます。
    今回も勉強になりましたm(__)m


解決済み!
引用返信 [メール受信/OFF]

■記事リスト / レス記事表示 → [親記事-2]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■609 / 親記事)  拙作の[整形ユーティリティ]の些細な改良
□投稿者/ ONnoji -(2025/05/26(Mon) 16:55:15)
    2025/05/26(Mon) 16:56:42 編集(投稿者)

    ジェダイの桐さん。ごきげんよう。

    拙作の[整形ユーティリティ]の些細な改良を予定しています。

    1.[整形 1]〜[整形 4]の改良

     [整形 1]〜[整形 4]の[開く]ボタンを[Ctrl + マウス左クリック]すると、[フォームウィンドウの一覧]が表示されます。

     [フォームウィンドウの一覧]でフォームを選択すると、フォームにセットされている[イベント処理]を探して整形します。

     ただし、選択した[フォーム]は開いているので、"[イベント処理]は使用中です"という[メッセージボックス]が現れます。

     "バッチ(.bat)でファイルを copy します よろしいですか?"で[OK]を実行してください。

     ⇒ この改良は,既に開いているフォームを選ぶので、[開く]ボタンでフォルダのファイルを探すのが面倒な場合に便利だと思います。


    2.[トレース出力整形]の改良

     Thin_INF_Framework などが組み込まれているフォームのトレースをする場合、[名札 メイン]と[フォーム開始]のトレース結果は非常に多くの行になります。

     特に[フォーム開始]のトレース結果は275行以上になるので、毎回同じ内容を見させられるのにはウンザリします。

     そこで、[明細を除く 名札メインとフォーム開始]ボタンを実行すると、[名札 メイン]と[フォーム開始]の明細を除去します。

     実際には削除するのではなくて、[名札 メイン]と[フォーム開始]の明細を除いた行に絞り込みます。

     [絞り込み解除]ボタンを実行すれば、絞り込みは解除されます。

      ┌when メイン処理を実行開始しました
      └end

      ┌when イベント処理"フォーム::フォーム開始"を実行開始しました
      │
      │┌when 手続き"フォーム::フォーム開始(2)"を実行開始しました
      │└end
      │
      └end 戻り値=1で実行終了しました

     ↑こうなります。(^^v


    以上の1.2.に関して、ジェダイの桐さんのご意見・ご感想をお聞かせください。

    よろしくお願いいたします。m(__)m


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

▽[全レス12件(ResNo.8-12 表示)]
■617 / ResNo.8)  Re[1]: 拙作の[整形ユーティリティ]の些細な改良
□投稿者/ ONnoji -(2025/06/05(Thu) 12:23:10)
    2025/06/05(Thu) 12:28:49 編集(投稿者)

    添付ファイルがあります。

    utx_list3_update_20250605A.zip を解凍すると次の2ファイルがあります。

     utx_list3_trace.wfx 181KB
     work.txt       734KB

    ・utx_list3_trace.wfx は、上書きしてください。

    ・work.txt は、以下の手順で utx_list3.kex に読み込んでください。

     1.utx_list3.kex を再定義で開く
     2.[行操作]メニュー→[行削除]→[全行]を実行します
     3.[ファイル]メニュー→[読み込み]→[テキスト]を実行して、work.txt を読み込みます
     4.[ファイル]メニュー→[表整理]→[10%]を実行します。

    以上の操作でアップデートは終了です。

    p.s.

     新しい utx_list3.kex は、zip形式で圧縮すると 200KB を超えてしまいました。

    そのために、テキスト: work.txt を zip形式で圧縮しています。
引用返信 [メール受信/OFF]
■619 / ResNo.9)  Re[2]: 拙作の[整形ユーティリティ]の些細な改良
□投稿者/ ONnoji -(2025/06/05(Thu) 12:54:50)
    2025/06/05(Thu) 12:58:17 編集(投稿者)

    FW フィルターに関して

    [トレース出力整形]では、整形後に自動的に[FW フィルター]が実行されます。

    その際に、フィルターする手続きが見つからない場合には、チェックボックスのラベルの文字色は赤になります。

    チェックボックスのラベルの文字色は赤の場合には、チェックボックスは使用不可表示になっていませんが、

    オンオフしてもフィルターは動作しません。

    これは、プログラムの都合で、チェックボックスを使用不可表示にする手間を省いた結果です。

    青信号と赤信号のイメージで使ってください。(^^ゞ


引用返信 [メール受信/OFF]
■620 / ResNo.10)  Re[3]: 拙作の[整形ユーティリティ]の些細な改良
□投稿者/ ジェダイの桐 -(2025/06/05(Thu) 13:34:13)
    ONnojiさん


    こんにちは!


    アップデート完了しました(^^ゞ
    かなり見やすくなりました!

    26行目から3992行目までが除外された状態で始まるので
    直ぐ内容が見れるのは素直に嬉しいです(^^♪

    便利になりました。

引用返信 [メール受信/OFF]
■621 / ResNo.11)  Re[4]: 拙作の[整形ユーティリティ]の些細な改良
□投稿者/ ONnoji -(2025/06/05(Thu) 17:07:18)
    ジェダイの桐さん、ごきげんよう。

    > アップデート完了しました(^^ゞ
    > かなり見やすくなりました!
    > 26行目から3992行目までが除外された状態で始まるので
    > 直ぐ内容が見れるのは素直に嬉しいです(^^♪
    > 便利になりました。

    試していただいてありがとうございます。m(__)m

    今回のものはプレビュー版です。

    もう少しブラシアップする予定です。

    なお、現行では[テキスト出力 / 印刷]では FWフィルター が掛かっていません。

    1行挿入するだけでOKです。

    ││ 絞り込み [処理] = #u  ←←←←←←←← この行を挿入します。

    挿入位置は以下を参考にしてください。

    ■ utx_list3_textprint.kex

    手続き定義開始 prcReformPrintData( 文字列 &sourceTblName, 文字列 &tempTblName, 整数 &print )
     変数宣言 自動,文字列{ &icon, &title = "prcReformPrintData( )", &msg }
     変数宣言 自動,文字列{ &procedure }
     変数宣言 自動,数値 { &anchor, &status, &cnt = 0 }
     変数宣言 自動,整数 { &multiTblNum, &done }
     ** utxlist2:utx_proc_var.kev より流用

     編集表 &INFmMyTblNum /* 2022.06.12 */
     手続き実行 TBLprcTableMultiOpen( &INFmMyTblNum, &multiTblNum, &done )
    ┌if ( &done )

    │ **&sourceTblName = &mTextPrintReformTblName /* #一括パス名 + "utx_list3_text_reform_(1).tbl" */
    │ 表 &sourceTblName

    │ **&tempTblName = &mTextPrintTempTblName /* #一括パス名 + "utx_list3_text_temp.tbl" */
    │┌if ( #ファイルサイズ( &tempTblName ) > 0 )
    ││
    ││ 表 &tempTblName
    │├else
    ││
    ││ 編集表 &multiTblNum
    ││ 書き出し 枠組み, &tempTblName, 終了状態 = &status
    ││ 表 &tempTblName
    │└end

    │ 編集表 &tempTblName
    │ 行削除 *, 圧縮

    │ 編集表 &multiTblNum
    │ 絞り込み [チェック] <> #u

    │┌if ( &mテキスト印刷Sort )
    ││ 並べ替え  { [セクションID]昇順, [オブジェクト名]辞書順, [イベントID]昇順 }
    │└end

    │┌繰り返し ( .not #eof )
    ││
    ││ &procedure = [手続き名]
    ││
    ││ 編集表 &sourceTblName
    ││ 解除 *
    ││ 絞り込み [手続き名] = &procedure
    ││ 絞り込み [処理] = #u  ←←←←←←←← この行を挿入します。
    ││┌if ( .not #eof )
    │││
    │││ 編集表 &tempTblName
    │││ ジャンプ 行番号 = 最終
    │││ 行番号 &anchor
    │││
    │││ ジャンプ 行番号 = 終端
    │││ 読み込み 表, &sourceTblName, *
    │││
    │││┌if ( [手続き種類] = "イベントハンドラ" .or [手続き種類] = "一般手続き" )
    ││││ 行追加 [手続き名] = #u
    │││└end
    │││
    │││┌if ( &print )
    ││││ 手続き実行 prcLineAdjust( &anchor, &procedure )
    │││└end
    │││
    ││├else
    │││
    │││ &msg = "手続きが見つかりません\n\n" + &procedure + "\n\n整形データが同期していないので処理を中止します"
    │││ &msg = &msg + "\n\n" + &procedure
    │││ &msg = &msg + "\n\n整形データが同期していないので処理を中止します"
    │││ &icon = "e"
    │││ 手続き実行 INFprcMsgPause( &icon, &title, &msg )
    │││
    │││ 編集表 &multiTblNum
    │││ ジャンプ 行番号 = 最終
    ││└end
    ││
    ││ 編集表 &multiTblNum
    ││ &cnt = &cnt + 1
    ││ ジャンプ 行番号 = 次行
    │└繰り返し終了

    │ 編集表 &sourceTblName
    │ 終了 表 編集対象表

    │ 編集表 &tempTblName
    │ ジャンプ 行番号 = 最終
    │┌if ( .not #eof .and [手続き名] = #u )
    ││ 行削除
    │└end
    │ 終了 表 編集対象表

    │ ** 2015.01.21 [終了 表 &multiTblNum]の直前に[編集表 &multiTblNum]を追加
    │ ** 2015.01.21 桐ver.9-2004 以降では、エラーになることがある ※桐ver8 と 桐ver.9 ではエラーにならない
    │ ** 2015.01.21 KU1068:対象表が更新中またはグループ操作中のためこのコマンドは使用できません
    │ 編集表 &multiTblNum
    │ 終了 表 &multiTblNum
    │ 編集表 &INFmMyTblNum

    └end

    手続き定義終了

    p.s.

    [テキスト出力 / 印刷]では FWフィルター が掛かっている方が都合がいいでしょう。

    とりあえず、1行挿入してお使いください。

引用返信 [メール受信/OFF]
■623 / ResNo.12)  Re[5]: 拙作の[整形ユーティリティ]の些細な改良
□投稿者/ ジェダイの桐 -(2025/06/06(Fri) 11:55:16)
    ONnojiさん


    こんにちは!


    > ││ 絞り込み [処理] = #u  ←←←←←←←← この行を挿入します。


    こちらを挿入する事で、 FWフィルター が掛かった事を確認出来ました(^^ゞ

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

■記事リスト / レス記事表示 → [親記事-9] [10-12]



■記事リスト / ▲上のスレッド
■608 / 親記事)  INF_Framework の手続きリファレンス
□投稿者/ ONnoji -(2025/04/24(Thu) 17:47:51)
    2025/04/24(Thu) 17:51:33 編集(投稿者)

    拙作:INF_Framework に関する情報です。

    2025-04-24 INF_Framework の手続きリファレンス を追加しました。

    こちら
     ↓
    桐の釣魚大全のトップ > INF_Framework の手続きリファレンス
    https://silicon7565.cloudfree.jp/INF_Framework/INF_Framework_procedure.html

    Thin_INF_Framework および INF_Framework で使用できる便利な手続きのリファレンスです。

    ※もしも、webページが表示されない場合には、F5キーを実行してブラウザをリドローしてください。

    桐の釣魚大全のトップ
    https://silicon7565.cloudfree.jp/index.html



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






112943

Mode/  Pass/

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

- Child Tree -
- Antispam Version -