ToolBar to kontrolka ActiveX z zestawu biblioteki Common Controls 1 (plik mscomctl.ocx) dla kompilacji Office 32/64 bit.

 

Dość rzadko używana kontrolka, z uwagi na fakt tworzenia menu XMLowego we wstędze ribbon, z którą polecam się zapoznać. Toolbox posiada parę fajnych i prostych elementów łączących funkcjonalność przycisków zebranych w zgrabny pasek. Poniżej podam parę przykładów ich utworzenia, co da początek do utworzenia przez was interesujących konstrukcji visualno użytkowych.

Zaczynamy zatem. Menu Toolbar można umieścić w każdym miejscu, nie tylko u góry (choć jest to rozsądne, bo domyślne miejsce takich list). Zdarzyć się jednak może że połączenie ListView lub Treeview zaburzy tą symbiozę z uwagi na błąd ich wyświetlania, który wymusza ich obecność rozpoczynając od lewego górnego rogu formy (akurat tam gdzie chcielibyśmy dodać pasek przycisków). Miejcie to na uwadzę.

 

 

Przycisk do menu znajduje się w zestawie pod postacią pow obrazka i jego dodanie na formę rysuje wiele nie mówiący obiekt. Po zapoznaniu się jednak z jego właściwościami możemy utworzyć przyciski, a następnie wpłynąć na ich nazwę, chmurkę oraz rysunek który będzie reprezentował nasz przycisk. Ale o tym niżej:

 

 

W opcjach przycisku można określić ich ilość dodając kolejne przyciski “Insert Button”. Każdy kolejny będzie posiadał swój indeks i aby się odróżniał od poprzedniego wypada go nazwać. Zróbmy to sugerując się nazwali domyślnymi czyli “Przycisk1” .. “2”. Przy tej okazji można dodać chmurkę która po najechaniu myszą wyświetli tekst pomocniczy. Na moim komputerze CC1 nie posiadają polskich liter to też należy to też wziąć pod uwagę iż tekst powinien zostać napisany bez polskich ogonków, ponieważ na innym komputerze, który ich nie toleruje wyjdą krzaki. Ok przemycimy sobie jakiś kod który odpowie na naciśnięcie przycisków, a w późniejszym okresie wywoła konkretna procedurę zaplanowaną pod tym przyciskiem:

 

Visual Basic
Edytuj|Usuń
Const inf$ = "VBATools.pl" 
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button) 
Select Case Button.Index 
Case 1: MsgBox "Wciśnięto przycisk 1" 
Case 2: MsgBox "Wciśnięto przycisk 2, a nie 1", vbInformation, inf 
End Select 
End Sub
 

Co otrzymaliśmy nie jest na razie niczym wyjątkowym. Aby wzbogacić nasze Menu zauważamy że we właściwościach jest też styl. Czyli możliwość utworzenia przycisku jako checka (stan wciśnięty, wyciśnięty), grupy (jeśli jeden wciśnięty, to inne wyciśnięte), separatora (odległość między przyciskami), placeholdera (oddalenie przycisku o zadaną odległość) i listy rozwijanej (dodatkowe menu rozwijane w dół). Zasymulujmy sobie jak to działa: Poniżej dodałem między przyciskami 1 i 2 separator a przed przyciskiem listy placeholder z parametrem Width = 20. Lista otrzymała dodatkowe ButtonMenu co prezentuje poniższy wygląd.

 

 

No dobra ale jak to takie brzydkie ma być, to ja nie chce, napiszecie w komentarzach. Ależ nie musi. Pamiętacie lekcje o Imagelist, jak nie oto czas przypomnieć. Możemy podczas wywoływania formy po dodaniu takiej, wypełnionej obrazkami kontrolki sparować ją z naszą listą menu. Da to nam możliwość nadania wyrazu naszym przyciskom i może zrezygnowania z ich nazw (o ile obrazku nie będą pozostawiały złudzeń co użytkownik przez to chce osiągnąć).

 

Visual Basic
Edytuj|Usuń
Private Sub UserForm_Initialize() 
Toolbar1.ImageList = ImageList1 
With Toolbar1.Buttons 
.Item(1).Image = 1 
.Item(2).Image = 2 
.Item(4).Image = 3 
.Item(5).Image = 4 
.Item(6).Image = 5 
.Item(7).Image = 6 
End With 
End Sub
 

W kontrolce ImmageList określamy jakiej wielkości będą nasze obrazki przycisków i po ich załadowaniu do tego kontenera pow instrukcja tłumaczy jak je przypisać do naszego menu. Oto jak wygląda nasza kontrolka już z zaimportowanymi obrazkami.

 

 

Niestety nie można dodać obrazków do menu listy, ale zgrupowanie ich w ten sposób jest już wielką oszczędnością miejsca w interfejsie użytkownika. Jako ciekawostkę dodam że można sprawdzić stan wciśniętych przycisków i np dla Checka lub dla przycisków grupy zamieniać kodem grafikę na inną gdy przycisk jest wciśnięty.

 

Mam nadzieje że wam się spodoba. Napiszcie do czego wy go wykorzystujecie np z grupie dyskusyjnej FB.

 

Jeśli uważasz, że to użyteczna informacja - sięgnij gwiazd  

Pozdrawiam

 

(c) Shon Oskar – www.VBATools.pl

Wszelkie prawa zastrzeżone. Żadna część ani całość tego artykułu nie może być powielana ani publikowana bez zgody autora.