ロゴ(青) 擬似からの脱却 ロゴ(緑)

  【 擬似からの脱却 】  [ Breakthrough in the Pseudo-Control Arrays ]

[ clsBpca の 軌跡 ] [ 前頁 , 次頁 , §1 , §2 , §3 , §4 , §5 , §6 , §7 , §8 , §9 , §10 , §11 , §12 ]
[ 汎用クラス , トグルラベル クラス , Focus クラス , クラス アドイン , カレンダークラス ] [ 質問はメール]

  ====================================================================
  §6  「擬似コントロール配列」で残る問題点
  ====================================================================

(前節より‥‥‥)
      それで‥‥、「残っている問題点」って何!  (-"-#)

  散々、苦労して、ここまで辿り着いた『擬似コントロール配列』ですが、私としては‥‥‥
        このサンプル(と同レベルのものなら、どれでも)は、実務的には
            サッパリものの役に立たない!
        加えて、このままでは
            メンテ/管理し難くて「使い物」にならない!

と思いますね (-。-)y-゚゚゚      ヽ(-.-;) おいおい 今更 それは無かろう!

  「使い物」にならないというポイントを、ちょっと整理してみましょうか‥‥‥

  3節までは、UserFormモジュール内に
      ・7つのクリックイベント(共通サブルーチンを呼び出すようにしているので
        イベントコードそのものは単純)
      ・1つの共通サブルーチン
を作るという形で簡素化して来た訳ですが、これが5節の「クラス利用」になって
      ・UserFormモジュール内にクリックイベントコードは無い
      ・UserFormモジュール内に共通サブルーチンも無い
という形になりましたね。

  共通サブルーチン部分は、そっくりそのままクラスモジュールへ移っただけですから、今回の
「クラスの利用」という手法そのものが、
        共通サブルーチンというコードを『考える/記述する』という
        事に対して何かメリットを与える
というような効果は無いですね(単に記述する場所が変わっただけですし、これによって、コー
ディング量が減った訳でもないですね)。

  今回の【クラス化】による一番の効果(”メリット”とは書き辛いな)は
        今まで、7つも「ダラダラ」と並べておかなければならなかった
        クリックイベント記述が必要なくなった
というか、
        UserFormモジュール内から完全に消えた!
という事です。

  システムから、7つのボタン各々のクリック通知を受ける事は、
        全てクラス内で受け持たれており、
更には、その時に「行なうべき処理」までが
        クラス内で済ませて貰って
いる状態ですね。

  これは、Userform側から見れば
        クリックした時に曜日をMsgBoxで表示する
という「動きそのもの」までが消えてしまった、という事になります。UserFormの、どこを見ても、
        クリックした時に曜日をMsgBoxで表示する
という記述が無いのに、そういう動きをしている‥‥‥

  イベント記述がフォームモジュールの外に出てしまって、フォームから隔絶された遠い彼方へ
行ってしまい、自分(UserForm)の知らない所で、影でコソコソと何かをやられているようで落ち
着きませんね。
    (#ノ-_-)ノ⌒┻┻    (ノ-o-)ノ  ハイ〜、ちゃぶ台返し したくなった人、この指、止〜まれ♪

  まぁ、これはクラスモジュールにイベント処理(イベント発生時に行なう処理。ここの例では
MsgBox表示)を記述するという手法である以上は仕方ない事ではあります。

  また、この例では「MsgBoxを表示して、自コントロールの色を変更する」だけしか行なってい
ませんが、実際のプログラムでは、こんなに単純ではありませんよね。
        ・UserForm内の他のコントロールを操作したり、
        ・UserForm内の変数を操作したり
        ・UserForm内のサブルーチンを呼び出したり
と、色々な『他』を参照/更新する必要があるでしょう。しかし、この例では、渡されたコマンド
ボタンしか操作していません。

  そして、この[clsCmdWeek]クラスは、
        cmdSun, cmdMon, ‥‥cmdSat (または cmdWeek1‥‥‥cmdWeek7)
専用クラスです。

  他に、やはり配列化したいコマンドボタンが同じフォームに有ったとしても、このクラスは流用でき
ません(その他のコマンドボタンにこのクラスを流用しても、出来るのは「曜日を表示」する事だけで
す)。そのコマンドボタン用に、別にもう1つのクラスを定義作成する必要があります。

  1つ2つならまだしも、これが5つも6つも有ったら大変ですね。こういう理由で、今のままでは実務的
には「使い物」にはならないんです。

  前節まで、かなり噛み砕いて解説してはみましたが、それでも「クラス」というものは判り難いものだ
と思います。特に初心者(中級者くらいまでは)にとっては手の出ない範疇でしょう。それでも、イベン
ト記述を一元化するには、クラスそのものへの取り組みが必須です。

  しかし、ユーザーサイドからは「クラス」というものは『ブラックボックス』的な運用で使える事が一番
良い事だと思います。ブラックボックスとして使う為には、やはりイベント内で行なう処理自体はUser
Form内で記述できるようにする必要がありますね。


  という事で、次節からは
        ・前節までの擬似コントロール配列で、フォーム内の他の資源(コントロール・変数・
          サブルーチン)を処理する方法
        ・擬似コントロール配列手法を見直して、VBのようにフォーム内でイベント処理でき
          るようにする方法の考察
について解説していきます。


  ====================================================================
  次節 : §7  クラスからフォーム内の情報を操作
  ====================================================================

[ 前頁 , 次頁 , §1 , §2 , §3 , §4 , §5 , §6 , §7 , §8 , §9 , §10 , §11 , §12 ]
[ 汎用クラス , トグルラベル クラス , Focus クラス , クラス アドイン , カレンダークラス ] [ 質問はメール]


[ Home へ戻る ]

ロゴ(ゴールド) ロゴ(ゴールド)

角田 桂一 Mail:addinbox@h4.dion.ne.jp CopyRight(C) 2004 Allrights Reserved.