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

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

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

  ====================================================================
  §4  クラスモジュールって、何?
  ====================================================================

(前節より‥‥‥)
      それは良いけど、クリックイベントの方はどうなの? まとめる方法は無いの?  (・・?

  確かに、オブジェクトへの参照方法については、前節までのような方法で記述を一元化できま
したが、未だ、イベントプロシジャーそのもののコーディングが一元化できずに残っていますね。
 
 『イベントプロシジャー』が7個必要なことに変わりはない。

 Private Sub cmdWeek1_Click()
   Call cmdWeek_Click_Sub(1)
 End Sub

 Private Sub cmdWeek2_Click()
   Call cmdWeek_Click_Sub(2)
 End Sub
   :
   :
 Private Sub cmdWeek7_Click()
   Call cmdWeek_Click_Sub(7)
 End Sub



  そこで、イベントの一元化に使われるのが「クラスモジュール」です。  φ( ̄▽ ̄)o

ただ‥‥‥  (ー_ーゞ
        ところで、クラスモジュールって、そもそも何?  (・o・)
という話から始めなければ、先に進めませんので、以下に整理してみました。「訳判らん」という
用語が沢山出て来ると思いますが、出来るだけ噛み砕いて説明しているつもり(?)ですので、
頑張って読み進んでください。  p(・∩・)q
    ハイ、そこの人、逃げないで  ヽ(・_・)−C</ ̄ー ̄;)/  ((((((^_^;) 逃避モード

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
  cmdSun/cmdWeek1 といった UserForm に貼り付けたコマンドボタンには、
        ・ オブジェクト名の後にピリオドは挟んで [BackColor] 等と記述すれば、Command
           Button が持つ属性を参照/更新できる【 プロパティ 】

        ・ オブジェクト名の後を [ _Click ( ) ] と続けた名前で Sub プロシジャーを記述すれば、
           マウスクリックという操作をした時に自動的に、そのプロシジャーを呼び出してくれる
           【 イベント 】

        ・ オブジェクト名の後にピリオドを挟んで[SetFocus] とか [Move]等と記述すれば、その
           CommandButton にフォーカスを移したり、位置を移動させたりできます。こちらは、
           【 メソッド 】と呼ばれるものです。

        (補)   プロパティメソッド 、どちらも「オブジェクト名の後にピリオドを挟んで」
                記述しますので、同じように思えますが、例えて言えば、普通のモジュール
                での [ Function ] と [ Sub ]に相当します(実際、メソッドの定義には Sub
                ステートメントを使います。プロパティの方は Property Let/Get という
                ステートメントを使います)。
                  プロパティは、クラスオブジェクトと利用側との間で、「ひとつの値 を 渡し
                たり/受け取ったり」する為のインターフェースです。代入演算子( = )の右辺
                や左辺で使ったり、[式]の中に記述したりします。
                  メソッドは、クラスオブジェクトに対して「ある動作(その内容はクラス内に
                定義してある)」をさせる為の命令指示です。 SetFocus/Move のように、本
                当に動きをさせるだけでなく、クラスオブジェクト内に一度に複数の値を格納
                させる場合にも使えます。
                  プロパティ( Let )も、値をクラスオブジェクトへ格納させる機能ですが、代入
                演算子( = )を挟んで、左辺にプロパティ/右辺に格納する[値]という使い方を
                しますので、渡せる値はひとつです。

といったものが備わっています( CommandButton ならば、どの CommanButton であっても
同じ様に備わっています)。これは、大元として( CommandButton の場合)

        『 MsForms.CommandButton

という「プロパティ/イベント/メソッド」を定義した雛形(型紙、テンプレートと言っても良い)と
いうものが先ず有り、cmdSun/cmdWeek1 といったコントロールを UserForm 上に貼り付け
た時に、

        その cmdSun/cmdWeek1 が持つべき属性として
        『MsForms.CommandButton 』という雛形が割り当てられる


為です。元が同じ物をコピーしているので、cmdSun も cmdWeek1 も「同じプロパティ/イベント
を備えている」という結果になっている訳です。

  この雛形の事を【 クラス 】と呼びます。

  クラスそのものには「実体」はありません。あくまで「枠組み」が有るだけです。 cmdSun/cmd
Week1 などの実体(オブジェクト)に写し取られる事で始めて働く事ができます。

  洋服の型紙(紙)が、それ自体では「洋服の素材」とはなり得なくても、その形を布地に写し取
らせる事で、その布地に「洋服の素材」という『働き』をさせる事ができる、というのと同じです。

  型紙はたった1つでも、色々な「柄や色」の布地を用意すれば、色々な「柄や色」の洋服が幾
つでも作れますね(柄や色は違ってもサイズ/デザインは同一)。
  同じように、クラスの定義そのものは「たった1つ」でも、cmdSun/cmdWeek1 など複数のオブ
ジェクトに適用すれば、それら複数のオブジェクト全てに「(クラス内に定義してある)同じ機能」
を持たせる事ができます。

  このクラス(雛形)の形を写し取らせて、実体あるもの(オブジェクト)に、クラスで定義した機能を
持たせる(引き継がせる)事を

        【 インスタンスの生成

と呼びます(大体、この辺りで、  ((((((^_^;) 逃避モード  に入りますね。大方の人は‥‥  (-。-)y-゚゚゚   )。

  [ MsForms.CommandButton ]というクラスは、Microsoft が UserForm 向けに用意しているもの
ですが、ユーザーサイドでも「カスタムメイドのクラス」を定義する事ができます。そのカスタムメイド
のクラスを定義/格納する場所が「クラスモジュール」と呼ばれる場所です。




ハイハイ、細かい事は良いから‥‥‥ ヽ(ー_ーヽ) 

そんな事より、「使い方」教えて、使い方!  ヽ(-.-;)

  ====================================================================
  次節 : §5  クラスモジュールの利用
  ====================================================================

[ 前頁 , 次頁 , §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.