FM20 – Checkbox
CheckBox to kontrolka ActiveX z zestawu biblioteki FM20 (standardowy przybornik) dla kompilacji Office 32/64 bit.
Check to kontrolka, zwracająca stan przełącznika value = 1/0, True/False. Stan ten można zapamiętać w ustawieniach (czyli przekazać do arkusza Excela, rejestru komputera bądź zapisać w bazie danych). Jak w przypadku innych kontrolek można procedurą initialize przywrócić stan podczas uruchomienia formy.
Co może was zainteresować?.. bo przyznać trzeba, że wiele możliwości od przełącznika oczekiwać nie można. Spróbujmy jednak coś dodać do artykułu powołując się na praktyczne zastosowanie tej kontrolki. Mając do dyspozycji inne kontrolki umieszczone na formie, można wykorzystać ją aby np je odblokować umożliwiając wpisywanie danych. Czyli np posiadając tekstbox, w którym mogą być zapisane jakieś informacje, a co do których pozostawiona jest decyzja użytkownikowi (bo wcale dane tam nie muszą być wpisane).
A oto kod który steruje takim odblokowaniem pola użytkownika
Private Sub CheckBox1_Click()
TextBox3.Enabled = CheckBox1.Value
If Me.CheckBox1.Value = True Then
TextBox3.BackColor = &H80000005 'kolor biały
TextBox3.SetFocus 'przejście do aktywnej kontrolki
Else
TextBox3.BackColor = &H8000000F 'kolor szary
End If
End Sub
Weźmy też pod uwagę inny przypadek. Np rozważmy iż mamy stałe opcje, które nie wynikają ze zróżnicowanej listy wyboru jaką np reprezentuje ListBox ale stałe umieszczone w interfejsie pod postacią checków. Opcje te będą od siebie zależne, czyli zaznaczenie jednego checka może spowodować odblokowanie innych checków. Poniżej przedstawiam przykład takiej relacji:
Można tutaj zauważyć iż użytkownik zdecydował się na “Wyjazd z kumplami na motorach” i wybrał drugiego checka “Wystarczająca ilość gotówki“, ale zmienił zdanie (kompletnie go nie rozumiem) i zaznaczył “Rodzinny urlop nad morzem” co spowodowało wyłączenie checków z pierwszego wyboru, umożliwiając zaznaczenie opcji z pierwszej grupy. Po uruchomieniu przycisku zaznaczone opcje zostały zaczytane i przekazane w komunikacie. Jak wygląda kod który steruje takim zachowaniem checków oraz jak działa pętla na kontrolkach sprawdzających które z nich są checkboxami.
Private Sub CheckBox1_Click()
CheckBox2.Enabled = CheckBox1.Value 'przekazanie wartości przełącznika jako parametr odblokowania
CheckBox3.Enabled = CheckBox1.Value
CheckBox4.Enabled = CheckBox1.Value
CheckBox5.Enabled = Not CheckBox1.Value 'odwrotność stanu
End Sub
Private Sub CheckBox5_Click()
CheckBox6.Enabled = CheckBox5.Value
CheckBox7.Enabled = CheckBox5.Value
CheckBox8.Enabled = CheckBox5.Value
CheckBox1.Enabled = Not CheckBox5.Value
End Sub
Private Sub CommandButton1_Click()
Dim check As msforms.Control, inf$ 'deklaracja zmiennych
For Each check In Me.Controls 'pętla po obiektach
If TypeName(check) = "CheckBox" And check.Enabled = True And _
check.Value = True Then _
inf = inf & "- " & check.Caption & vbNewLine 'sprawdzenie czy check, włączony i zaptaszkowany
Next
If Len(inf) > 0 Then _
MsgBox inf, vbInformation, "VBATools.pl" 'zwrot informacji w komunikacie
End Sub
Niby niewiele, ale ile to daje praktycznych możliwości podczas kreowania formularzy użytkownika.
Jeśli uważasz że pokazane materiały są godne polecenia – podziel się tą wiadomością z innymi pozostawiając odnośnik to tego materiału.
(c) Shon Oskar – http://VBATools.pl
Wszelkie prawa zastrzeżone. Żadna część ani całość tego artykułu nie może być powielana ani publikowana bez zgody autora.