VBATools

FM20 – Frame

Frame to kontrolka ActiveX z zestawu biblioteki FM20 (standardowy przybornik) dla kompilacji Office 32/64 bit.

Ramka taka może ona pełnić 2 funkcję, dekoracyjną lub grupującą.

Obrazek

Ta pierwsza wspaniale spełnia się w roli odznaczenia pewnego obszaru w formie, od innych obszarów spełniających odrębną funkcję (np teksty wpisywane przez użytkownika, od ustawień parametrów interfejsu). Druga zaś funkcja, przy użyciu kontrolek typu OptionButtontworzy automatycznie grupę która daje możliwość niezależnej współpracy wew tej grupy:

Obrazek

Jak widać w pow przykładzie żadna z kontrolek wew grupy nie została zaznaczona Value = True, a uruchomienie formy dało możliwość wyboru jednej z nich w każdej z grup.

Zagadnieniem dość przydatnym jest wyłączanie pewnych grup z użycia. Np spełnienie pewnego warunku udostępnia odblokowanie elementów w grupie a inne ma to uniemożliwić. Pokazuje to na poniższym przykładzie:

Obrazek

Jak można zauważyć kod wpisany w Checkboxa przekazuje negację parametru Value do odblokowania ramki Frame, co widać po zmianie koloru ramki.

Private Sub CheckBox1_Click() 
Frame1.Enabled = Not CheckBox1.Value 'zaprzeczenie wartości przekazane jako parametr odblokowania 
End Sub

Niestety w VBA w przeciwieństwie do rozwiązań w bardziej zaawansowanym VB.NET elementy w grupie nie zaznaczają się jako nieaktywne, choć przejmują tą właściwość co uniemożliwia zaznaczenie tych opcji lub ich zmianę. Niemniej jednak to iż ich wygląd się nie zmienia trochę przeszkadza w pracy z takim interfejsem. W tym przypadku dobrze jest sprawdzić, które z kontrolek znajdują się wew tej ramki aby im również przekazać parametr Enabled = False.

Jak przerobić wszystkie elementy w grupie pokazuje na poniższym przykładzie:

Obrazek

Oto kod, który steruje takim ustawieniem wew grupy

Private Sub CheckBox1_Click() 
Frame1.Enabled = Not CheckBox1.Value 
Dim kontrolki As msforms.Control 'deklaracja zmiennej nieokreślonej 
 For Each kontrolki In Me.Frame1.Controls 'pętla po kontrolkach z grupie Frame1 
    kontrolki.Enabled = Not kontrolki.Enabled 
 Next 
End Sub

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.