|
【 イベント 】 |
|
-- clsTglLablEx のみ --
Private Sub object_Click ( ByVal Btn_Value As Boolean )
[トグルラベル]ボタンをマウスでクリックした際(Change イベントの後)に発生します。
[トグルラベル]ボタンとして使っているラベル自体の本来のクリックイベントもUserFormモジュール内に記述
している場合は、ラベル本来のクリックイベントの後で発生します(ラベル本来のクリックイベントの時点では、
未だボタン状態は変わっていませんので、注意して下さい)。
( Btn_Value )
クリックした結果のボタン状態(オン:凹/オフ:凸)が、True
/ False で返ります。
※ 利用元で、トグルラベルボタンのクリックイベント処理が必要なければ、利用元モジュール内に、
この[ object_Click ]プロシジャーを記述する必要はありません。
|
|
-- clsTglLablEx のみ --
Private Sub object_Change
( ByVal Index As Integer, ByVal Btn_Label As MSForms.Label,
ByVal Btn_Value As Boolean, ByVal MyEvent As Boolean )
[トグルラベル]ボタンのオン(凹)/オフ(凸)状態が変化した際に発生します。マウスクリックが起因で変化
した場合は、Click イベントの前に発生します。
一度の操作(マウスクリック/メソッド実行)で発生する Change
イベントは一回だけとは限りません。その
一度の操作によって「状態が変化した」ボタン全てについて続けて発生します。
例えば、[排他あり]でマウスクリック(凸→凹)した場合では、クリックしたボタンの他に「今までオン(凹)
だったボタン」の状態も変化しますので、この2つボタンに対して
Change イベントが「都合 2回」続けて
発生します。Click イベント発生は、これら一連の Change イベントが全て発生した後になります。
この一連のChangeイベントは、「マウスクリックした / メソッド実行に際して[
object ]に指定した」ボタンに
対して発生します。そのイベントが自身に対するものかは[MyEvent]で判断できます。実際に、どのボタン
に対するものかは[Index / Btn_Label]で判ります。
(例) Btn1 , Btn2 , Btn3 の3つのボタンでグループを構成している
・ 排他あり の場合で、Btn2 がオン(凹)の時に、Btn1 をマウスクリックすると、
Btn1 : オフ(凸)→オン(凹)
, Btn2 : オン(凹)→オフ(凸) , Btn3 : 変化無し
という変化になり、Btn1/Btn2 のChange イベントが発生しますが、このイベントは2つとも『Btn1_Change
イベントプロシジャー』として発生し、その時に受け取る引数の内容が、一方はBtn1 で 他方はBtn2 と
いう動きになります。
・排他なし で、『 Btn3.OnValueSet 』を実行した場合、発生するChange イベント(元々オン(凹)だった
ボタンでは発生しません)は全て『Btn3_Change イベントプロシジャー』 として発生します。
( Index )
状態の変化した[トグルラベル]ボタンの番号(Rgst メソッドで登録したコレクション内での順番です。
1から割当てられます)が返ります。
( Btn_Label )
状態が変化した[トグルラベル]ボタンのラベルコントロールオブジェクトが返ります。
( Btn_Value )
状態が変化した[トグルラベル]ボタンの、変化した結果のボタン状態(オン:凹/オフ:凸)が、True
/ False
で返ります。
( MyEvent )
現在、このイベントで通知されたイベントが、[ object
]自身のラベルコントロールに対するものか、同一グ
ループ内の、他のボタン(ラベルコントロール)に対するものかが、True
/ False で返ります。
True の場合、 Btn_Label = object です。
※ 利用元で、トグルラベルボタンのチェンジイベント処理が必要なければ、利用元モジュール内に、
この[ object_Change ]プロシジャーを記述する必要はありません。
|
|
【 イベント発生通知 受領プロシジャー( clsTglLabel のみ) 】 |
|
-- clsTglLabl のみ -- (clsTglLabel と Click の間のアンダーバーは、2つ並べます)
Public Sub clsTglLabel__Click(ByVal Index As Integer, _
ByVal Btn_Label As MSForms.Label, _
ByVal Btn_Value As Boolean, _
ByVal GrpId As String)
マウスクリックが行なわれた際に、UserForm側が[clsTglLabel
]クラスからイベント発生の通知を受け取る
為の窓口ルーチンです。必ず、この名前で且つ[Public ]指定で記述して下さい。
発生のタイミング等は、上記[clsTglLabelEx の Click イベント]と同じですので、そちらを参照して下さい。
( Index )
マウスクリックした[トグルラベル]ボタンの番号(Rgst
メソッドで登録したコレクション内での順番です。
1から割当てられます)が返ります。
( Btn_Label )
マウスクリックした[トグルラベル]ボタンのラベルコントロールオブジェクトが返ります。
( Btn_Value )
マウスクリックした[トグルラベル]ボタンの、変化した結果のボタン状態(オン:凹/オフ:凸)が、True
/
Falseで返ります。
( GrpId )
UserForm上で、複数のグループが有る場合でも、この窓口ルーチンは『唯1つ』です。どのグループ
に対する通知なのかが返りますので、この[GrpId ]によって、各グループのクリックイベント処理ルー
チンへ振り分けて下さい。
※ 利用元で、トグルラベルボタンのクリックイベント処理が必要ない場合であっても、このプロシジャー
自体は必要です。その場合は『空のプロシジャー』としてください。
Public Sub clsTglLabel__Click(ByVal
Index As Integer, _
ByVal Btn_Label As MSForms.Label, _
ByVal Btn_Value As Boolean, _
ByVal GrpId As String)
' 何も処理を記述しない
End Sub
|
|
-- clsTglLabl のみ -- (clsTglLabel と Change の間のアンダーバーは、2つ並べます)
Public Sub clsTglLabel__Change(ByVal Index As Integer, _
ByVal Btn_Label As MSForms.Label, _
ByVal Btn_Value As Boolean, _
ByVal GrpId As String _
ByVal MyEvent As Boolean)
ボタンの状態が変化した際に、UserForm側が[clsTglLabel ]クラスからイベント発生の通知を受け取る
為の窓口ルーチンです。必ず、この名前で且つ[Public ]指定で記述して下さい。
発生のタイミング等は、上記[clsTglLabelEx の Change イベント]と同じですので、そちらを参照して下さい。
( Index )
状態の変化した[トグルラベル]ボタンの番号(Rgst メソッドで登録したコレクション内での順番です。
1から割当てられます)が返ります。
( Btn_Label )
状態が変化した[トグルラベル]ボタンのラベルコントロールオブジェクトが返ります。
( Btn_Value )
状態が変化した[トグルラベル]ボタンの、変化した結果のボタン状態(オン:凹/オフ:凸)が、True
/ False
で返ります。
( GrpId )
UserForm上で、複数のグループが有る場合でも、この窓口ルーチンは『唯1つ』です。どのグループ
に対する通知なのかが返りますので、この[GrpId ]によって、各グループのクリックイベント処理ルー
チンへ振り分けて下さい。
( MyEvent )
現在、このイベントで通知されたイベントが、[ object
]自身のラベルコントロールに対するものか、同一グ
ループ内の、他のボタン(ラベルコントロール)に対するものかが、True
/ False で返ります。
True の場合、 Btn_Label = object です。
※ 利用元で、トグルラベルボタンのチェンジ処理が必要ない場合であっても、このプロシジャー自体は
必要です。その場合は『空のプロシジャー』としてください。
Public Sub clsTglLabel__Change(ByVal
Index As Integer, _
ByVal Btn_Label As MSForms.Label, _
ByVal Btn_Value As Boolean, _
ByVal GrpId As String _
ByVal MyEvent As Boolean)
' 何も処理を記述しない
End Sub
|
|
【 メソッド 】 |
|
object .Rgst ラベルコントロール, Index, ラベルコレクション, GrpID, Exclusive
[トグルラベル]ボタンを構成するラベルコントロールを登録するメソッドです。
このRgst メソッドの実行に先立って、同じグループになるラベルコントロールのコレクションを作成して
おく必要があります。
Rgst メソッドの後で、[ clsTglLabel ]クラスの場合は『Caller プロパティ』を、[clstglLabelEx ]クラスの場合
は『Parent プロパティ』を設定する必要があります。
( ラベルコントロール )
[clsTglLabel ][clsTglLabelEx ]クラスのボタンとして使うラベルコントロールオブジェクトを指定します。
( Index )
ボタン番号を指定します。同一グループ内で、Rgst メソッドで登録する順に、1から1ずつカウントアップ
して設定していきます。この値は、コレクション内でのラベルコントロールの順番と同じである必要があり
ます。
( ラベルコレクション )
同一グループを構成するラベルコントロールのコレクションを指定します。
( GrpID )
複数のボタングループ(= 複数の[ object ])を使用する場合、そのグループを区別する「文字列」を
指定します。1グループしか使わないならば「空文字:
"" 」で構いません。
( Exclusive )
True を指定すると「排他あり」、 False を指定すると「排他なし」になります。
|
|
object .Init OnColor , OffColor , InitValue (第 2 版で追加)
[トグルラベル]ボタンの、オン/オフ時の ボタンカラーを OnColor / OffColor で指定すると、クラス側で
オン/オフ時に自動的に色を変更します。
Array 関数に True/False を並べたものを、InitValue に指定する事で、ボタンの初期状態を設定できます。
( OnColor / OffColor )
オン(凹)の時のボタンカラーとオフ(凸)の時のボタンカラーを指定します。
( vbRed , vbBlue ) や ( vbButtonFace , vbWindowText
) 等のカラー定数 もしくは RGB 関数、
16進数で指定します。
( InitValue )
Array 関数によるVariant 配列(True / False)を指定します。Array 関数内に、先頭から順に、ボタン番号
順で、オン(True )・オフ(False )を並べて指定します。ボタン番号は「1〜」、Array
関数による配列の引数
は「0〜」からでズレていますが、気にせずに Array 関数には先頭から並べてください。
ボタン数より多く並べた部分は無視されます。ボタン数より少ない場合は、残りの部分が初期状態設定され
ません(凹凸 と ボタンカラー)。
排他指定の場合、True を複数指定しても有効になるのは最初のものだけです。
|
|
object .OnValueSet [ Index ]
[ object ]と同じグループの[トグルラベル]ボタンをオン(凹)状態にするメソッドです。
Index 引数の指定で「グループ全体 / 個別のボタン1つ」という使い分けが出来ます。
排他あり の場合には、下記のようになります。
・ グループ全体(Index を省略/ゼロ)に対して実行しても機能しません(ボタン状態は変化しません)
・ ボタンを指定して実行すると、既にオン(凹)状態のボタンが存在する場合は、そのボタンはオフ
(凸)状態に変わります
この場合の[ object ]に記述するものは、グループの代表として『[ object ]と同じグループ全体
への処理です』という意味での使われ方になります(ボタン番号[
1 ]のものを指定しても、[ 2 ]の
ものを指定しても同じ動作になります)。
[ object ]そのものへ対しての値の設定ならば[Value プロパティ]でも行なえます。
( Index )
ボタン番号(Rgst メソッドで登録したコレクション内での順番です)を指定します。
「排他あり」の場合、それまでオン(凹)だったボタンはオフ(凸)に変わります。
「排他なし」の場合、省略 もしくは ゼロ を指定すると、[ object ]と同じグループの全てのボタン
がオン(凹)になります。
「排他あり」の場合には、省略/ゼロ としても機能しません。
|
|
object .OffValueSet [ Index ]
[ object ]と同じグループの[トグルラベル]ボタンをオフ(凸)状態にするメソッドです。
Index 引数の指定で「グループ全体 / 個別のボタン1つ」という使い分けが出来ます。
排他有無に係わり無く、指定したボタンはオフ(凸)状態になります。
この場合の[ object ]に記述するものは、グループの代表として『[ object ]と同じグループ全体
への処理です』という意味での使われ方になります(ボタン番号[
1 ]のものを指定しても、[ 2 ]の
ものを指定しても同じ動作になります)。
[ object ]そのものへ対しての値の設定ならば[Value プロパティ]でも行なえます。
( Index )
ボタン番号(Rgst メソッドで登録したコレクション内での順番です)を指定します。
指定したボタンはオフ(凸)になります。
省略 もしくは ゼロ を指定すると、[ object ]と同じグループの全てのボタンがオフ(凸)になります。
|
|
【 プロパティ 】 |
|
object .Item [ = ラベルコントロール ]
[ object ]に対して、Rgst メソッドで登録したラベルコントロールが返るプロパティです。
値の取得のみ可能です。
( 値の取得 )
[ object ]に登録したラベルコントロールオブジェクトが返ります。
|
|
object .Index [ = Integer ]
[ object ]に対して登録したラベルコントロールのボタン番号が返るプロパティです。
値の取得のみ可能です。
( 値の取得 )
[ object ]のボタンが 「グループ内で何番目になるのか」 というボタン番号が返ります。
|
|
object .Count
[ object ]と同じグループのボタンの数(Rgst メソッドで登録したラベルコントロールのコレクションに
属するラベルコントロールの数)を返すプロパティです。
値の取得のみ可能です。
( 値の取得 )
この[ object ]と同じグループのボタンの数が返ります。
|
|
object .GrpID
[ object ]と同じグループのボタンに対して設定した識別文字列(Rgst
メソッドで登録した文字列)を
返すプロパティです。
値の取得のみ可能です。
( 値の取得 )
この[ object ]と同じグループを識別する文字列が返ります。
|
|
-- clsTglLabl のみ --
object .Caller [ = String ]
clsTglLabel クラス ⇔ 利用元UserForm 間の相互処理に使うプロパティです。
利用元のUserForm名(Nameプロパティ)を指定します。
値の取得と設定が可能です。
( 値の取得 )
利用元のUserForm名が返ります。
( 値の設定 )
実際には、利用元のUserForm内で[ Me.Name ]を渡します。
|
|
-- clsTglLablEx のみ --
object .Parent [ = clsTglLblGrp クラスオブジェクト ]
clsTglLabelEx ⇔ clsTglLblGrp クラス間の相互処理に使うプロパティです。
ユーザーが clsTglLabelEx クラスを直接使う場合には不要です。
[ object ]の親となるclsTglLblGrp クラスオブジェクトを指定します。
値の取得と設定が可能です。
( 値の取得 )
[ object ]の親となるclsTglLblGrp クラスオブジェクトが返ります。
( 値の設定 )
実際には、clsTglLblGrp クラス内で[ Me ]キーワードにより自オブジェクトを渡します。
|
|
object .Value [ = Boolean ]
[ object ]のボタンの「オン(凹)/オフ(凸)」状態を表します。値の設定と取得が可能です。
( 値の取得 )
ボタンが オン(凹)の場合は True が返ります。オフ(凸)の場合は
False が返ります。
( 値の設定 )
False を設定すると、ボタンがオフ(凸)になります。
True を設定すると、
・「排他あり」の場合(オンはひとつだけ可)、自ボタンはオン(凹)になり、それまでオンになっていた
他のボタンはオフ(凸)に変わります。
・「排他なし」の場合、自ボタンはオン(凹)になります。他のボタンは、そのままです。
|
|
object .GrpValue ( [ Index ] ) [ = Variant ( Integer / Boolean / #NA) ]
[ object ]と同じグループのボタンの「オン(凹)/オフ(凸)」状態を表します。
個別のボタンの状態(オン/オフ)と、グループ全体で「何番目がオン」という情報を取得できます。
値の取得のみ可能です。
この場合の[ object ]に記述するものは、グループの代表として『[ object ]と同じグループ全体
への処理です』という意味での使われ方になります(ボタン番号[
1 ]のものを指定しても、[ 2 ]の
ものを指定しても同じ動作になります)。
( Index )
ボタン番号(Rgst メソッドで登録したコレクション内での順番です)を指定します。省略可。
( 値の取得 )
Index にボタン番号を指定した場合、
そのボタンのオン/オフが True / False で返ります。
ボタン番号がグループ内のボタン数を越えている場合はエラー値(#N/A)が返ります。
Index を省略 もしくは ゼロ を指定 した場合
・全てのボタンがオフならば ゼロ が返ります。
・「排他あり」の場合(オンはひとつだけ可)、オン状態のボタン番号が数値で返ります。
・「排他なし」の場合、
オン状態のボタンがひとつだけならば、そのボタン番号(1〜)が返ります。
複数のボタンがオンの場合は[
-1 ]が返ります。
|
|
object .Enabled [ = Boolean ]
[ object ]のボタンの操作可否(ラベルコントロールの Enabled プロパティ)の値を表します。値の設定
と取得が可能です。
( 値の取得 )
[ object ]に対応するラベルコントロールの Enabled プロパティ
の値( True/False )が返ります。
( 値の設定 )
[ object ]に対応するラベルコントロールの Enabled プロパティ
に指定の True/False を設定します。
|
|
object .GrpEnabled [ = Boolean ]
[ object ]と同じグループの全ボタンの操作可否(ラベルコントロールの Enabled プロパティ)を処理
します。値の設定と取得が可能です。
この場合の[ object ]に記述するものは、グループの代表として『[ object ]と同じグループ全体
への処理です』という意味での使われ方になります(ボタン番号[
1 ]のものを指定しても、[ 2 ]の
ものを指定しても同じ動作になります)。
( 値の取得 )
[ object ]と同じグループの全ボタンについて
・ラベルコントロールの Enabled プロパティが 全て True の場合、True を返します。
・上記以外の場合、False を返します。
( 値の設定 )
[ object ]と同じグループの全てのボタンについて、そのラベルコントロールの Enabled プロパティ に
指定の値(True/False )を設定します。
|