VBATools

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.

Obrazek

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).

Obrazek

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:

Obrazek

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.