tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 複数チェックボックスの連動について
投稿日: 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

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。