DOWN LOAD BBS

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

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

記事リスト ( )内の数字はレス数
UpDate日付入力のイベントハンドラ(10) | NomalVK_frameworkの使用感 と 質問(7) | NomalHDLVARprcWindowAppearVarSendの使用感(15) | Nomal拙作の[整形ユーティリティ]の些細な改良(12) | NomalINF_Frameworkについて質問(2) | 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) | NomalINF_Framework の話をしよう(19) | NomalモードレスB で さよなら。モードレスB を閉じる(7) | NomalThin_INF_Framework のご案内(58) | Nomalガントチャートのベータ版のご案内(19) | Nomalガントチャートについて(1) | 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) | Nomal#197 イベント処理の整形ユーティリティ 第 3.9 版(2) | NomalINF_DatePicker.wfm/wfx の編集属性式の改修について(0) | Nomal#195 #196 INF_DatePicker.kev/.kex 共通(1) | Nomal#195 #196 INF Framework 第3.3版 INF_DatePicker(1) | Nomal#198 INF_カード 第1.0版のご紹介(1) | NomalIPS_Framework.cmd / IPS_Framework.cmx 共通(0) | Nomal#197 イベント処理の整形ユーティリティ 第 3.9 版(0) | 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) | Nomal桐でGrep(桐9対応版)素晴らしい(1) | Nomal192 整形ユーティリティ(3) | Nomal190 整形ユーティリティ ビーユージー(0) | Nomal188 アップデート INF_dirでゲットだぜ(1) | Nomal187 INF Framework 第3.2版 for 桐10 / 桐10s (0) | Nomal186, 187, 188, 189 INF_Framework の潜在バグ(0) | Nomal188 イベント処理の整形ユーティリティ 第 3.5 版に関して(0) | Nomal171:toy_launcher 第 3.0 版を使ってみて(3) | NomalINF_DatePicker(カレンダー入力)(0) | Nomal177・8 INF Framework (桐10/ 桐10s・桐9-2012/ 桐9s版)(0) | Nomal182 整形ユーティリティに無害な虫がいました(1) | Nomal175:「桐でGrep(桐10対応版) 3.10版  (C)悲しげ」を使ってみて(5) | Nomal177・8 INF Framework (桐10/ 桐10s・桐9-2012/ 桐9s版)(1) | NomalIPS_form を使いこなすための手引書です(1) | Nomal176:桐でGrep(桐9対応版)(2) | Nomal174: 桐10移行計画3 (0) | 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列固定に集計関数も移動させたい(1) | Nomal桐V9 メール一斉送信 2.01 (0) | Nomal167:フォルダ毎サイズ集計(0) | Nomal桐4作品、一挙掲載(4) | Nomal162:データ管理システム(0) | Nomal160:toy_launcher(3) | Nomal161:販売部長U(体験版)」桐9-2004版(0) | Nomal159:画像管理システム for 桐(0) | Nomal140 清書ユーティリティ 第2.1版 (再)登録 (2) | Nomal158:わんたっち表形式 の登録(2) | NomalNO TITLE(0) | Nomal157:桐で「キーダウン・システムキーダウン]イベントを自由自在に制御(1) | Nomal155:桐で「麻雀牌ゲーム(四川省風)」(1) | Nomal156:桐で「トランプゲーム(フリーセル風)」(0) | 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) | Nomal142 桐でヘルプファイルを(1) | Nomal143 桐v9 メール一斉送信 Ver.2.01(0) | Nomal「メール一斉送信]について(10) | Nomal141 桐ver8 列固定式の一覧表形式フォーム(1) | Nomal全銀フォーマット作成一括処理使わせていただきました(8) | Nomal140 清書ユーティリティ 第2.1版 登録 (8) | Nomal138 桐ver9 文字列検索 (0) | Nomal137 桐ver9 K-ba (0) | Nomalこの掲示板の XSS 脆弱性(3) |



■記事リスト / ▼下のスレッド
■653 / 親記事)  日付入力のイベントハンドラ
□投稿者/ ONnoji -(2025/09/04(Thu) 12:23:33)
    2025/09/05(Fri) 00:46:06 編集(投稿者)

    ジェダイの桐さんへ

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

    プロトタイプが一応完成しました。

    test_prototype_dateAccept_02.zipを解凍すると以下の4つのファイルがあります。

     test_prototype_dateAccept_02.kex
     test_prototype_dateAccept_02.tbx
     test_prototype_dateAccept_02.wfx
     test_prototype_dateAccept_02_test_prototype_dateAccept_02_info.txt

    是非そちらで試していただいて、ご意見・ご感想をよろしくお願いいたします。m(__)m

    なお、日時型のテキストボックス:txt日時 は、[環境設定]の[日時型の形式]のフォーマットで表示されます。

    文字列型のテキストボックス:txt文字列 は、デフォルトでは[環境設定]の[日時型の形式]のフォーマットで表示されますが、

    [名札 メイン]で &mDateAcceptDateTypeNum = 0, &mDateAcceptPaddingTypeNum を宣言するとフォーマットが変更できます。

     ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

    名札 メイン

     ** prcDateAccept( ) で日付を文字列型項目(または変数)で扱う時のオプション変数
     ** "日付文字の表示形式" と "日付文字の数値の表示"のデフォルト値は "0:環境設定と同じ" ですが、
     ** 以下の↓変数宣言コマンドの先頭のコメント( ** )を削除すると有効になり任意のスタイルに変更できます
     ** 変数宣言 局所,整数 { &mDateAcceptDateTypeNum = 0, &mDateAcceptPaddingTypeNum = 0 }
     ** 日付を日時型項目(または変数)で扱う場合には、[環境設定]または[テキスト]オブジェクトの属性で指定してください
     ** -------------------------------------------------
     ** 表示形式を指定します。自動変数/整数/ &dateTypeNum
     **値 戻り値
     ** 0 環境設定と同じ形式 ← デフォルト:&dateTypeNum / prcDateAccept( )
     ** 1:2019年 7月25日 ( 13時23分45秒 )  2:2019年 7月25日 ( 午後 1時23分45秒 )  3:令和1年 7月25日 ( 13時23分45秒 )
     ** 4:令和1年 7月25日 ( 午後 1時23分45秒 ) 5:R 1/ 7/25 ( 13:23:45 ) 6:R 1/ 7/25 ( 1:23:45 PM ) 7:R 1- 7-25 ( 13:23:45 )
     ** 8:R 1- 7-25 ( 1:23:45 PM )  9:2019/ 7/25 ( 13:23:45 )  10:2019/ 7/25 ( 1:23:45 PM ) 11:2019- 7-25 ( 13:23:45 )
     ** 12:2019- 7-25 ( 1:23:45 PM ) 13:19/ 7/25 ( 13:23:45 )  14:19/ 7/25 ( 1:23:45 PM )  15:19- 7-25 ( 13:23:45 )
     ** 16:* 19- 7-25 ( 1:23:45 PM ) 17:Jul 25,2019 ( 13:23:45 ) 18:* 7/25/2019 ( 13:23:45 )  19:25 Jul 2019 ( 13:23:45 )
     ** 20:* 25/ 7/2019 ( 13:23:45 ) 21:2019. 7.25 ( 13:23:45 )
     ** [mm/dd/yyyy] または [dd/mm/yyyy] の表示形式を選択すると、日時関数で計算できない日時文字列になりますので、注意してください。
     ** -------------------------------------------------
     ** 数値の表示を指定します。自動変数/整数/ &paddingTypeNum
     **値 戻り値
     ** 0 環境設定と同じ ← デフォルト:&paddingTypeNum / prcDateAccept( )
     ** 1 空白詰め
     ** 2 ゼロ詰め
     ** 3 詰めなし
     ** -------------------------------------------------

     ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

    <入力方法>

    年 月 日 をハイフン/スラッシュ/ドット/空白文字などで区切って入力してください。

    先頭の数字が 1 から 12 ⇒ 当年(2025年)と見做し月を指定したことになります
    先頭の数字が 13 から 99 ⇒ 2000年を加算します
    先頭の数字が 4桁    ⇒ 年として扱います( ただし 1945 から 2099 の範囲外はエラーになります )

    先頭に元号を付けることも出来ます

     ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇


     ■ test_prototype_dateAccept_02.wfx

     フォーム
     ├ ファミリ
     │ └ famModernUI
     ├ ワークスペース
     │ ├ INFtxtCommon
     │ ├ INFcmdCommon
     │ ├ cmdStartup
     │ └ cmdTest
     ├ フォーム操作バー
     ├ フォームヘッダ部
     │ ├ lblFlatButtonBorder_1
     │ ├ EZWcmdズームイン
     │ ├ EZWcmdズームアウト
     │ ├ EZWtxtMagnification
     │ ├ INFcmdWhoAreYou
     │ ├ HDLVARcmdWhoAreYou
     │ ├ ONEcmdUI変換
     │ └ chk項目値を範囲選択する
     │   └ lbl項目値を範囲選択する
     ├ フォーム明細部
     │ ├ txt文字列
     │ │ └ lbl文字列
     │ ├ txt日時
     │ │ └ lbl日時
     │ ├ txt長整数
     │ │ └ lbl長整数
     │ ├ txt数値
     │ │ └ lbl数値
     │ ├ txt通貨
     │ │ └ lbl通貨
     │ └ lblFlatButtonBorder_2
     └ フォームフッタ部
       └ lblFlatButtonBorder_3

    p.s.

    手続き:prcDateTestYear( ) 修正箇所 ※この修正は必須ではありません

    599行め(54行め)
    修正前
       ケース ( #対応番号( "S,s,昭和,昭", &prefix ) <> 0 )
    修正後
       ケース ( #対応番号( "S,s,S,s,昭和,昭", &prefix ) <> 0 )
     
    606行め(61行め)
    修正前
       ケース ( #対応番号( "H,h,平成,平", &prefix ) <> 0 )
    修正後
       ケース ( #対応番号( "H,h,H,h,平成,平", &prefix ) <> 0 )

    613行め(68行め)
    修正前
       ケース ( #対応番号( "R,r,令和,令", &prefix ) <> 0 )
    修正後
       ケース ( #対応番号( "R,r,R,r,令和,令", &prefix ) <> 0 )

    631行め(86行め)
    修正前
        &errorMsg = &errorMsg + "\n\n <ヒント>"
    修正後
        **&errorMsg = &errorMsg + "\n\n <ヒント>"

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

▽[全レス10件(ResNo.6-10 表示)]
■659 / ResNo.6)  Re[6]: 日付入力のイベントハンドラ
□投稿者/ ONnoji -(2025/09/11(Thu) 13:47:14)
    2025/09/12(Fri) 09:36:41 編集(投稿者)
    2025/09/11(Thu) 13:51:02 編集(投稿者)

    ジェダイの桐さんへ

    prototype_IMTD_01.zip を解凍すると以下の4つのファイルがあります。

     prototype_IMTD_01.kex
     prototype_IMTD_01.tbx
     prototype_IMTD_01.wfx
     prototype_IMTD_01_prototype_IMTD_01_info.txt

    今までの「まとめ」を行いました。

    是非そちらで試していただいて、ご意見・ご感想をよろしくお願いいたします。m(__)m

    p.s.

    データ入力時に、桐から表示されたエラーメッセージはとても分かり難いですよね。

     (i) 日時型入力に誤りがあります

    ↑このようなメッセージボックスが表示されても、意味が分からない人も居ますよね。

     (i) KD1053:数値データ形式に誤りがあります

    ↑これも同様で、意味がサッパリ分かりませんよね。

    これってどう考えても、桐側のユーザインタフェースが悪いんですよね。
               ・・・・・・・・・・・・・・・・・・・・

    だから、ちょっとだけ考察したというワケなんですよ。アハハハha

    p.p.s.

    アイテムメニューの表示に乱れがありました。

    以下のように修正をお願いします。

    手続き名:IMTDcmd日付文字列アイテム表示Click( )

    475行め(25行め)

    ×  ・・・,"19-10-15       西暦 2桁ハイフン区切り",\

    〇  ・・・,"19-10-15       西暦2桁 ハイフン区切り",\


prototype_IMTD_01.zip
/48KB
引用返信 [メール受信/OFF]
■660 / ResNo.7)  Re[7]: 日付入力のイベントハンドラ
□投稿者/ ジェダイの桐 -(2025/09/12(Fri) 15:28:17)
    ONnojiさん


    こんにちは!


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

    感想


    アイテム表示( 日付文字列の形式 )
    アイテム表示( 数字の表示 ) のアプローチが今までの中で一番分かりやすい

     → 選択後アナウンスが流れ何をセットしたのか一目で分かる為、ユーザーが納得しやすい設計となっている


    日付文字列 日時型 長整数型 数値型 通貨型 のエラー入力時のアナウンスが具体的でよい


    元号入力で元号の境目年 の扱いが自動処理になっていて親切

     R1/4/30 → 平成31年 4月30日
     R1/5/1  → 令和 1年 5月 1日
     H1/1/7  → 昭和64年 1月 7日
     S64/1/8 → 平成 1年 1月 8日


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

    ちょっと判断が難しい所


    異常値入力をしたとき、アナウンスが流れた後( 同時なのかな?? ) 編集選択位置設定 が全体選択になります。

    これをエラー対象へ、編集選択位置設定が範囲選択にならないかな?
    と思いました。

    例えば
     年でエラーをしたら 年が範囲選択
     月でエラーをしたら 月が範囲選択
     日でエラーをしたら 日が範囲選択

    ただし、これが実現出来るのか? と ユーザーにとって必要あるのか? が判断しきれなかったです。
    純粋にちょっと思った程度の発想ですm(__)m

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

    日付文字列 と 日時型 の入力について


    アイテム表示ボタンで選択しているので、ほとんどのユーザーはこんな事をしないと思いますが、

    250912 と 入力した場合

     日付文字列 → KU1117:値が範囲を超えています 詳細 : &num ・・・
     
     日時型   → KU1117:値が範囲を超えています 詳細 : &num ・・・
     日時型   → フォーム:(5188) 日時型入力に誤りがあります(-6)

    と桐側のアナウンスが流れます。共に 行番号は 602 で起こる様です。

    ここがもう少し、ユーザーに分かりやすいアナウンスが流れればいいなと思いましたm(__)m

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


    以上、私の感想となります(^^ゞ


引用返信 [メール受信/OFF]
■661 / ResNo.8)  Re[8]: 日付入力のイベントハンドラ
□投稿者/ ONnoji -(2025/09/13(Sat) 08:28:39)
    2025/09/13(Sat) 08:34:30 編集(投稿者)

    > アイテム表示ボタンで選択しているので、ほとんどのユーザーはこんな事をしないと思いますが、
    >
    > 250912 と 入力した場合
    >  日付文字列 → KU1117:値が範囲を超えています 詳細 : &num ・・・
    >  
    >  日時型   → KU1117:値が範囲を超えています 詳細 : &num ・・・
    >  日時型   → フォーム:(5188) 日時型入力に誤りがあります(-6)
    >
    > と桐側のアナウンスが流れます。共に 行番号は 602 で起こる様です。
    > ここがもう少し、ユーザーに分かりやすいアナウンスが流れればいいなと思いましたm(__)m

    数値系の変数のデータ型に誤りがありました。

    誤りと言うより、扱える数値の範囲が狭すぎました。(^^ゞ

    以下のように、4つの手続きの該当箇所を修正してください。m(__)m

    ■手続き名:IMTDprcDateAccept( )

    × 変数宣言 自動,整数 { &num }
    〇 変数宣言 自動,数値 { &num }

    × 変数宣言 自動,整数 { &year, &month, &day }
    〇 変数宣言 自動,数値 { &year, &month, &day }

    ■手続き名:IMTDprcDateTestYear( )

    × 手続き定義開始 IMTDprcDateTestYear( ・・・, 参照 整数 &year, ・・・ )

    〇 手続き定義開始 IMTDprcDateTestYear( ・・・, 参照 数値 &year, ・・・ )
                                ・・

    ■手続き名:IMTDprcDateTestMonth( )

    × 手続き定義開始 IMTDprcDateTestMonth( ・・・, 参照 整数 &month, ・・・ )

    〇 手続き定義開始 IMTDprcDateTestMonth( ・・・, 参照 数値 &month, ・・・ )
                                ・・

    ■手続き名:IMTDprcDateTestDay( )

    × 手続き定義開始 IMTDprcDateTestDay( ・・・, 整数 &num, 参照 整数 &day, ・・・ )
    〇 手続き定義開始 IMTDprcDateTestDay( ・・・, 数値 &num, 参照 数値 &day, ・・・ )
                            ・・       ・・
     ◇ ◇ ◇ ◇ ◇ ◇ ◇

    > ちょっと判断が難しい所
    > 異常値入力をしたとき、アナウンスが流れた後( 同時なのかな?? ) 編集選択位置設定 が全体選択になります。
    > これをエラー対象へ、編集選択位置設定が範囲選択にならないかな?
    > と思いました。
    > 例えば
    >  年でエラーをしたら 年が範囲選択
    >  月でエラーをしたら 月が範囲選択
    >  日でエラーをしたら 日が範囲選択
    > ただし、これが実現出来るのか? と ユーザーにとって必要あるのか? が判断しきれなかったです。
    > 純粋にちょっと思った程度の発想ですm(__)m

    誰でもそう思いますよね。私自身もそう思いました。

    しかし、区切り文字を、自由・フリーに入力できるので

    >  txt文字列 txt日時 への入力対応が柔軟で便利
    >  25y9m5d → 25/9/5
    >  無茶苦茶に入力しても対応してくれる
    >  25ttt9qqqq5oooo → 25/9/5( 実際はこんな入力をする人はいないと思いますが・・・ )

    年月日のどこに誤りがあったかはメッセージボックスで通知していますが、

    入力された文字列( 入力後イベントハンドラの引数:&編集文字列 )の年月日の位置を特定するのが難しいんですよ。

    ということで無駄な努力はしていないのです。ガハハハ。

    ちなみに、全体選択にする理由は、[BS]キーや[Delete]キーで一発削除できると便利だからです。

    間違った入力の時には、部分修正するよりも、最初からやり直すのが一番確実だからです。ガハハハha
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

     ◇ ◇ ◇ ◇ ◇ ◇ ◇

    > 250912 と 入力した場合

    「2桁の年+2桁の月+2桁の日」で入力した場合はどうしようか????

    この場合には、2文字ずつ年月日に分解して、それぞれの値をチェックすればOKです。

    このようなデータを入力する人も多いと思います。

    もちろん、この場合の利点もあるわけですが・・・(^^ゞ

    しかし、困ったことに区切りがない文字列は "日付文字列" にならないわけですよ。
              ・・・・・・・・・・・・・・・・・・・・・・

    なので、この場合には 250912年 として処理するワケです。

    ということで、日時型は "日時文字列" 、文字列型は "日付文字列" と扱うようにする仕様でありました。(^^ok
                ・・・・・        ・・・・・

     ◇ ◇ ◇ ◇ ◇ ◇ ◇

    > 感想
    > アイテム表示( 日付文字列の形式 )
    > アイテム表示( 数字の表示 ) のアプローチが今までの中で一番分かりやすい
    >  → 選択後アナウンスが流れ何をセットしたのか一目で分かる為、ユーザーが納得しやすい設計となっている
    > 日付文字列 日時型 長整数型 数値型 通貨型 のエラー入力時のアナウンスが具体的でよい

    今回も具体的なフィードバックをいただきありがとうございます。m(__)m

    当方は漫然としていて、データ型をよく吟味しなかったので、ご指摘をいただいて本当に助かりました。感謝。

    とりあえず、今回で IMTD の物語は最終回のつもり(予定)です。

    しかし、さらにお気づきの点があれば、お手数ですがお知らせいただければ幸いです。

    ありがとうございました。

    それでは。 (@^^)/~~~

引用返信 [メール受信/OFF]
■662 / ResNo.9)  Re[9]: 日付入力のイベントハンドラ
□投稿者/ ジェダイの桐 -(2025/09/13(Sat) 10:56:01)
    ONnojiさん


    こんにちは!


    数値型 通貨型 の 入力フィールド に

    99999999999999999999999999999999999999999999999( これこそユーザーは入力する事が無いと思いますが・・・ )

    と入力すると

    KU1030:演算中に桁あふれが発生しました 行番号 980
    と共に桐側のアナウンスが流れました。


    一応、報告しますm(__)m


引用返信 [メール受信/OFF]
■663 / ResNo.10)  Re[10]: 日付入力のイベントハンドラ
□投稿者/ ONnoji -(2025/09/13(Sat) 11:40:37)
    2025/09/13(Sat) 11:54:18 編集(投稿者)

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

    > 数値型 通貨型 の 入力フィールド に
    > 99999999999999999999999999999999999999999999999( これこそユーザーは入力する事が無いと思いますが・・・ )
    > と入力すると
    >
    > KU1030:演算中に桁あふれが発生しました 行番号 980
    > と共に桐側のアナウンスが流れました。
    > 一応、報告しますm(__)m

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

    手続き名:IMTDprcNumAccept( ) の

      &string = #str( #num( &string ) )

    ↑この部分で #数値( 別名:#num )関数の計算中に桁あふれが生じたということですね。
           ・・・・・・・・・・・・・・・・・・・・・・・・・・

        :prototype_IMTD_02.wfx hdl= 1>IMTDprcNumAccept( )を実行開始しました
        :&objectName : txt数値 &dataType : 数値 &source : [数値型]
        :( #対応番号( &dataTypeList, &dataType ) <> 0 ) : 1
        :&string : 99999999999999999999999999999999999999999999999
        :&dataType : 数値 &source : [数値型]
    エラー :KD1570:計算中に桁あふれが生じました 関数 : #数値(D:\kiri10s\dl_conv_INF_Framework_2022_Secondary\prototype_IMTD_02.tbx )
    エラー :KU1030:演算中に桁あふれが発生しました(D:\kiri10s\dl_conv_INF_Framework_2022_Secondary\prototype_IMTD_02.kex 980行目)

    まあ、これは仕方が無い事ですね。

    &string : 99999999999999999999999999999999999999999999999 は46桁の文字列 で、

    この場合、9.999999999999999E46 は 有効桁数:16 桁 の指数表示になる

    のですが・・・

      [桐 - ヘルプ]
      データ型
      ▽数値
      数値とプラスマイナス符号、小数点、指数記号(Eまたはe)が入力できます。
      扱える値の範囲は±10の124乗です(有効桁数:16 桁)。
      JAN、ITF、物流コードのバーコードデータは、このデータ型で扱うことができます。


    ということで、やるとすれば、16桁以上の整数は事前にエラーにする位ですかねぇ〜?

    でも、そこまで気を遣う必要なないと思いますよ。(^^ok

    p.s.

    コンピュータでの数値演算には、二進演算と二進化十進演算があります。

    桐の整数・長整数・数値・通貨は二進化十進演算で、演算誤差がありません。

    しかし、桐の実数型は二進演算なので、小数を含む演算をすると誤差が生じますので使わないようにしてください。
        ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    以下の過去ログもご一読ください。

    コチラ
     ↓
    エクセルで計算結果エラー|桐質問のほかの掲示板 過去ログより
    http://tayu.o0o0.jp/bbs/kiri/cbbs.cgi?mode=al2&namber=1312&no=1

    p.p.s.

    <参考>

    [桐 - ヘルプ]
    データ型

    桐では、データの種類に応じて9種類のデータ型を用意しています。

    ▽文字列
    氏名や電話番号、商品名など、文字列を扱うデータ型です。画像ファイル名やバーコードも、このデータ型を使用します。
    最大8000文字を扱うことができます(※注意:ただし、索引の整列項目は2000文字までです)。

    ▽数値
    数値とプラスマイナス符号、小数点、指数記号(Eまたはe)が入力できます。
    扱える値の範囲は±10の124乗です(有効桁数:16 桁)。
    JAN、ITF、物流コードのバーコードデータは、このデータ型で扱うことができます。

    ▽通貨
    基本的に数値型と同じです。表の中では3桁ごとの位取りコンマで区切って表示されます。

    ▽整数
    -32768〜32767の整数を扱うときに使用します。小数点以下の数値は扱えません。

    ▽長整数
    -2147483648〜2147483647の整数を扱うときに使用します。小数点以下の数値は扱えません。

    ▽実数
    科学計算や外部データベースとの互換のために設けられたデータ型です。
    数値とプラスマイナス符号、小数点、指数記号(Eまたはe)が入力できます。
    扱える値の範囲は±1.79769313486231e+308です(有効桁数:15〜16桁)。
    実数型の演算は、常に誤差が生じる可能性があるため、お金などを扱うデータ型としては適しません。
    ・・・・・・・・・・・・・・・・・・・・・・
    通常、扱う数値を格納する項目は、数値型または通貨型を使用してください。
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・


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

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



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



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



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






113354

Mode/  Pass/

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

- Child Tree -
- Antispam Version -