【 擬似からの脱却 】 [ Breakthrough in the Pseudo-Control Arrays ]
[ clsBpca の 軌跡 ] [ 前頁 , 次頁 , §1 , §2 , §3 , §4 , §5 , §6 , §7 , §8 , §9 , §10 , §11 , §12 ]
[ 汎用クラス , トグルラベル クラス , Focus クラス , クラス アドイン , カレンダークラス ] [ 質問はメールへ ]
(前節より‥‥‥)
それで‥‥、「残っている問題点」って何! (-"-#)
散々、苦労して、ここまで辿り着いた『擬似コントロール配列』ですが、私としては‥‥‥
このサンプル(と同レベルのものなら、どれでも)は、実務的には、
サッパリものの役に立たない!
加えて、このままでは
メンテ/管理し難くて「使い物」にならない!
と思いますね (-。-)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のようにフォーム内でイベント処理でき
るようにする方法の考察
について解説していきます。
[ 前頁 , 次頁 , §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. |