タイトル | : 複数チェックボックスの連動について |
記事No | : 12891 |
投稿日 | : 2008/08/12(Tue) 17:49 |
投稿者 | : ダリア |
お久しぶりです。ダリアです。 環境はVB6、WIN XPです。 複数のチェックボックスの連動について質問いたします。 説明が下手なのですが、チェックボックスに以下のような機能を持たせようと思っています。 (これを、本来ならばどのように表現するのかが、ちょっと分からないのです)
フォーム上にA_CHECK_ALLというチェックボックスとA_CHECKというチェックボックスを7個用意します。
そして、以下のような動作をさせようとしました。 A_CHECK_ALLのチェックボックスを(チェックする)オン状態にすると、A_CHECKの7個のチェックボックス全てがオンされます。 A_CHECK_ALLのチェックボックスを(チェックを外す)オフ状態にすると、A_CHECKの7個のチェックボックス全てがオフされます。 仮にA_CHECK_ALLがオン状態で、A_CHECKの7個のチェックボックスのひとつがオフにされた場合、A_CHECK_ALLはオフになります。 また、A_CHECK_ALLがオフ状態で、A_CHECKの7個のチェックボックスが全てオンになった場合、A_CHECK_ALLはオンになります。
以下のようなイベントを各々のチェックボックスで作成したのですが、上手く動きません。 ClickイベントはChangeイベントと同義なので、とうぜんながらA_CHECKの値が変わった途端にA_CHECKのイベントが発生してしまいます。 このような場合、どのようにプログラムを組むべきなのでしょうか? よろしくお願いします。
A_CHECK_ALLのイベント Private Sub A_CHECK_ALL_Click()
Dim i As Integer With frmDiagSelect If .A_CHECK_ALL.Value = 1 Then For i = 0 To 7 If .A_CHECK(i).Enabled = True Then .A_CHECK(i).Value = 1 End If Next i Else For i = 0 To 7 .A_CHECK(i).Value = 0 Next i End If End With End Sub
A_CHECKのイベント Private Sub A_CHECK_Click(Index As Integer)
With frmDiagSelect For Index = 0 To 7 If .A_CHECK(Index).Value = 0 Then .A_CHECK_ALL.Value = 0 Exit Sub End If Next Index .A_CHECK_ALL.Value = 1 End With
End Sub
|