| 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)を共有する事は避けるようにします。※直接共有の代替手段は色々考えられますよ。
また、交通費精算ならばそれ用のパッケージソフトがあると思いますので、それを利用する方がベストだと思いますよ。
繰り返しになりますが、
桐というパーソナルデータベースソフトは、何でも出来そうな気にさせるほど優秀です。
でも、何でも出来るワケではないのです。
世の中には、何でもエクセルで行おうとする人が居ますが、それは変でしょう?
ということですよ。
|