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

■14365 / 2階層)  モジュール化はフォームのレベルでも必要
□投稿者/ ONnoji -(2024/05/21(Tue) 19:15:37)
    2024/05/22(Wed) 15:32:55 編集(投稿者)
    2024/05/22(Wed) 02:39:48 編集(投稿者)

    これは個人( ONnoji )の感想です。

    以下のようにモーダル側で、

     表 "日付絞り込み.TBX"

    なんてコマンドを実行するのは一番駄目なアプローチだと思いますよ。


      主ウィンドウ                 モーダルフォーム(ダイアログボックス)
     ┌──────────────────┐   ┌──────────────────┐
     │日付絞り込み.wfx          │   │期間指定絞込.wfx          │
     │                  │   │                  │
     │                  │   │ 期間指定絞込.kex         │
     │機能名      機能パラメータリスト   │   │ 表 "日付絞り込み.TBX"      │
     │1 表示               │   │  :               │
     │2 モーダルフォーム 期間指定絞込.wfm┝━━━┥  :               │
     │                  ┝━━━┥  :               │
     │                  │   │ 編集表 "日付絞り込み.TBX"    │
     │                  │   │ 終了 表 編集対象表 ← エラー │
     └───────┬──────────┘   └──────────────────┘
             │
           編集対象表
             │
     ┌───────┴─────────┐
     │日付絞り込み.TBX         │ 
     │                 │
     │                 │
     │                 │
     │                 │
     │                 │
     └─────────────────┘

    だって、"日付絞り込み.TBX"は、すでに開いているのですから、余計なチョッカイを出しちゃ面倒なんですよ。
                   ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    ここは、主ウィンドウ側の"日付絞り込み.kex"で

     変数宣言 固有,整数{ &gAnswer }
     変数宣言 固有,日時{ &gRefinementStartDate, &gRefinementEndDate }

    として、

     &gRefinementStartDate = [日付]
     &gRefinementEndDate  = [日付]

    と値を代入して(代入しなくてもいいけれど・・・)

    1.固有変数(または共通変数)でモーダル側でも値が参照できるようにして
    2.固有変数(または共通変数)で終了状態( &gAnser )も受取る
    3.もし、終了状態( &gAnser )がOK(1)なら実行

    ですね。

    例えば、

     オブジェクト名: cmd期間指定絞込
     標題     : 期間指定絞込

      機能名      機能パラメータリスト
     1 なし       #代入( &gRefinementStartDate, [日付]), #代入( &gRefinementEndDate, [日付])
     2 モーダルフォーム 期間指定絞込.wfx
     3 実行条件     ( &gAnswer = 1 )
     4 手続き実行    cmd期間指定絞込Click

    とかね。(^^ゞ ※あくまでもアバウトな例示です。詳細を含んだ例示ではありませんよ。

    こうすると、モーダルフォーム(ダイアログボックス)は、変数を操作するだけに専念できるでしょう。
          ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    そして、主ウィンドウでは、絞り込みに専念できるというわけです。
        ・・・・・・・・・・・・・・・・・・・

     ※そもそも、絞り込む機能は編集対象があるフォームの機能であって、NULLフォームが絞り込む機能を持つ必要はありません。
           ・・・・・・・・・・・・・・・・・・・・・     ・・・・・・・・・・・・・・・・・・

     ※NULLフォームは、編集対象があるフォームへ情報を伝えて、編集対象があるフォームが自ら実行すればよいのです。
      ・・・・・・・・・・・・・・・・・・・・・・・・・・             ・・・・・・・・・

    キモは、モーダル側で主ウィンドウの編集対象表の面倒を見ないことですよ。

    モーダルは単に変数の値を編集するだけ。※固有変数・共通変数・組み込み変数を編集します。

    そして、モーダルで編集された変数の値を参照して絞り込みを実行するのは、主ウィンドウ側のの手続きということです。

    こうすれば、機能分担がハッキリして、保守が楽になるということですよ。(^^ok

    モーダルフォームは補助ウィンドウなのですから、主役の仕事を横取りしてはいけないんですゾッ!。
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    モジュール化は手続きのレベルだけでなく、フォームのレベルでも必要なんですよ。

    そう考えれば、自然に気が付きますよ。

    p.s.

    > モジュール化は手続きのレベルだけでなく、フォームのレベルでも必要なんですよ。

    モジュールとは交換可能な構成部分という意味ですね。

    だから、僭越にもモーダルフォームが主ウィンドウの範囲を対象にした機能を有していると、一体化しちゃって交換可能じゃなくなっちゃうでしょう。
                                              ・・・・・・・・・・・・・・・・・・・・・
    なので、モーダルフォームは主ウィンドウに対して余計なチョッカイを出してはいけないのですよ。

     <参考>

      桐の釣魚大全のトップ > フォームアプリケーション教書 第1部
      19.5 それぞれのフォームアプリケーションは独立しているので直接的な干渉をしない
      http://silicon7565.html.xdomain.jp/guide/guide_Part1.htm#section19-5

    p.s.

    今回のように、NULLフォーム側で主人であるフォームの編集対象表を直接ハンドルするという発想は「フロー駆動型」です。

    「目からウロコのデータベース桐プログラミング入門」の「3 イベント駆動型のプログラミング」で論じたように、「フロー駆動型」は一括処理の考え方です。

    実は、過去の掲示板には「フォーム+イベント処理」のアプローチでありながら、心の中では「フロー駆動型」の例が非常に多いのです。
               ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    「フロー駆動型」とは、プログラムの作者がすべてを支配するということです。
               ・・・・・・・・・・・・・・・・・

    今回の件は、心の中では「フロー駆動型」の典型的な例だと思いますよ。

    例えが分り難いでしょうが、『ホビットの冒険』や『指輪物語』の一つの指輪(ひとつのゆびわ、One Ring)の持ち主のようになってはいけないのです。

    心の中に「フロー駆動型」の誘惑があると、「イベント駆動(イベントドリブン)」としての「フォーム+イベント処理」のアプローチが出来なくなります。

      【指輪の銘】 一つの指輪 出典: フリー百科事典『ウィキペディア(Wikipedia)』
      一つの指輪は全てを統べ、
      一つの指輪は全てを見つけ、
      一つの指輪は全てを捕らえて、暗闇の中に繋ぎとめる。
      (One Ring to rule them all, One Ring to find them, One Ring to bring them all, and in the darkness bind them)

    「イベント駆動(イベントドリブン)」のためには、一つの指輪を滅びの山に捨ててください。

    と、『指輪物語』を読んだことが無い人にはワカラナイことを書きましたが・・・(^^ゞ

    改めて、今回の件は、心の中では「フロー駆動型」の典型的な例だと思いますよ。

    「イベント駆動型」では、複数のフォームが存在しても、それらは独立していなければならないのです。

    そして、プログラムの作者がすべてを支配するというアプローチは放棄することです。
        ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    これが「制御主体の反転」という意味です。

    そして、それこそが「イベント駆動型」の極意・真髄だと思いますよ。


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

→Re[3]: モジュール化はフォームのレベル.. /ONnoji
→Re[3]: モジュール化はフォームのレベル.. /ジェダイの桐
 
前の記事(元になった記事) 次の記事(この記事の返信)
上記関連ツリー

Nomal 期間絞込でのエラー時対応について / ジェダイの桐 (24/05/20(Mon) 09:54) #14350
Nomal Re[1]: 期間絞込でのエラー時対応について / まさやん (24/05/20(Mon) 11:46) #14351
│└Nomal Re[2]: 期間絞込でのエラー時対応について / ジェダイの桐 (24/05/20(Mon) 17:39) #14353 解決済み!
Nomal Re[1]: 期間絞込でのエラー時対応について / AK (24/05/20(Mon) 15:33) #14352
│├Nomal Re[2]: 期間絞込でのエラー時対応について / ジェダイの桐 (24/05/20(Mon) 17:48) #14354
│└Nomal Re[2]: 期間絞込でのエラー時対応について / まさやん (24/05/20(Mon) 19:39) #14356
│  └Nomal Re[3]: 期間絞込でのエラー時対応について / AK (24/05/20(Mon) 19:36) #14355
│    └Nomal Re[4]: 期間絞込でのエラー時対応について / ジェダイの桐 (24/05/21(Tue) 14:50) #14360
│      └Nomal Re[5]: 期間絞込でのエラー時対応について / ONnoji (24/05/21(Tue) 15:21) #14362
│        └Nomal Re[6]: 期間絞込でのエラー時対応について / ジェダイの桐 (24/05/23(Thu) 17:27) #14382
│          └Nomal Re[7]: 期間絞込でのエラー時対応について / ONnoji (24/05/23(Thu) 17:31) #14383
Nomal Re[1]: 期間絞込でのエラー時対応について / ONnoji (24/05/20(Mon) 23:34) #14358
│└Nomal Re[2]: 期間絞込でのエラー時対応について / ジェダイの桐 (24/05/21(Tue) 14:58) #14361
Nomal Re[1]: 期間絞込でのエラー時対応について / ONnoji (24/05/21(Tue) 18:47) #14363
  ├Nomal Re[2]: 期間絞込でのエラー時対応について / AK (24/05/21(Tue) 19:12) #14364
  └Nomal モジュール化はフォームのレベルでも必要 / ONnoji (24/05/21(Tue) 19:15) #14365 ←Now
    ├Nomal Re[3]: モジュール化はフォームのレベル.. / ONnoji (24/05/22(Wed) 10:52) #14366
    └Nomal Re[3]: モジュール化はフォームのレベル.. / ジェダイの桐 (24/05/22(Wed) 16:28) #14367
      └Nomal Re[4]: モジュール化はフォームのレベル.. / ONnoji (24/05/22(Wed) 16:34) #14368
        └Nomal Re[5]: モジュール化はフォームのレベル.. / ONnoji (24/05/22(Wed) 16:48) #14369 1716386255.jpg/65KB
          └Nomal Re[6]: モジュール化はフォームのレベル.. / ジェダイの桐 (24/05/22(Wed) 17:12) #14370
            ├Nomal Re[7]: モジュール化はフォームのレベル.. / ONnoji (24/05/22(Wed) 17:26) #14371
            │└Nomal Re[8]: モジュール化はフォームのレベル.. / ジェダイの桐 (24/05/23(Thu) 13:53) #14376 解決済み!
            │  ├Nomal Re[9]: モジュール化はフォームのレベル.. / ONnoji (24/05/23(Thu) 16:26) #14380
            │  ├Nomal Re[9]: モジュール化はフォームのレベル.. / AK (24/05/23(Thu) 17:15) #14381
            │  │└Nomal Re[10]: モジュール化はフォームのレベル.. / ジェダイの桐 (24/05/24(Fri) 09:37) #14386
            │  │  └Nomal Re[11]: モジュール化はフォームのレベル.. / ななーし (24/05/28(Tue) 16:08) #14407
            │  └Nomal Re[9]: モジュール化はフォームのレベル.. / まさやん (24/05/23(Thu) 20:28) #14384
            ├Nomal Re[7]: モジュール化はフォームのレベル.. / ONnoji (24/05/22(Wed) 23:34) #14373 1716388486.jpg/73KB
            └Nomal Re[7]: モジュール化はフォームのレベル.. / ONnoji (24/05/23(Thu) 22:57) #14385
              └Nomal Re[8]: モジュール化はフォームのレベル.. / ジェダイの桐 (24/05/24(Fri) 10:12) #14387
                └Nomal Re[9]: モジュール化はフォームのレベル.. / ONnoji (24/05/26(Sun) 16:15) #14393

All 上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信

Mode/  Pass/

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

- Child Tree -
- Antispam Version -