VBA > Paski narzędziowe w oknach VBA

Drukuj

Paski narzędziowe w oknach VBA

Symfonia ERP udostępnia programistom VBA zarządzanie menu programu, paskami narzędziowymi (toolbarami) w oknach VBA, jak również umozliwia tworzenie i wyświetlanie menu kontekstowego.

 

Symfonia ERP umożliwia stworzenie okien MDI nowego typu (okna VBA), będących jednocześnie projektami VBA widocznymi w środowisku IDE. Każde z tych okien może posiadać od jednego do trzech paneli, w których można umieszczać zarówno kontrolki predefiniowane, jak i dowolne kontrolki typu OCX zarejestrowane w systemie. Aby ułatwić zarządzanie tymi oknami zostały dodane paski narzędziowe (toolbary), które zawierają pewną liczbę przycisków i mogą być umieszczane przy dowolnej krawędzi okna. Przyciski znajdujące się na takim pasku mogą zawierać bitmapkę, opis tekstowy lub oba te elementy równocześnie. Mamy możliwość programowego sterowania zachowaniem przycisku (przyciśnięty, podniesony, nieaktywny), można również odbierać zdarzenia od przycisku, a nawet anulować akcję przyciśnięcia go. Można też modyfikować pasek narzędzi w trakcie działania programu – dodawać nowe przyciski w dowolnym miejscu, usuwać istniejące, zmieniać bitmapki i opisy tekstowe, ukrywać lub usuwać całe paski narzędzi.

 

Zarówno paski narzędziowe jak i menu głowne programu i menu kontekstowe dostępne są dla programistów VBA poprzez specjalną strukturę obiektów. Poniższy schemat przedstawia drzewo tych obiektów.

Paski_narz_dziowe1

Korzeniem drzewa obiektów dotyczących pasków narzędziowych, menu i menu kontekstowego jest obiekt CommandBars. Obiekt ten jest kolekcją obiektów typu CommandBar. Każdy obiekt CommandBar jest programowym odpowiednikiem paska narzędziowego, również menu i menu kontekstowego. Na podstawie wartości właściwości Type obiektu CommandBar można określić, czy dany obiekt odpowiada paskowi narzędziowemu, menu czy menu kontekstowemu. Każdy obiekt CommandBar zawiera obiekt Controls typu CommandBarControls. Obiekt ten jest kolekcją obiektów kontrolnych typu CommandBarControl. Każdy obiekt CommandBarControl odpowiada jednemu obiektowi kontrolnemu umieszczonemu na pasku narzędziowym (CommandBarButton – przycisk na pasku) lub na menu (CommandBarButton – element menu,Command BarPopup – podmenu).

 

Środowisko IDE Symfonia ERP zawiera globalny obiekt Application. Obiekt ten posiada kolekcję CommandBars , która zawiera wszystkie menu głównego okna programu i menu kontekstowego (odwołanie: Application.CommandBars ). Ponieważ wszystkie właściwości i metody obiektu Application są widoczne bez konieczności poprzedzania przez "Application.", odwołanie CommandBars jest równoważne z odwołaniem Application.CommandBars (z wyjątkiem opisanym poniżej).

 

Każde okno VBA jest jednocześnie połączone z odpowiadającym mu projektem VBA (domyślna nazwa "VBASymfonia"). Główny obiekt projektu (ang. Host) jest typu Document i nosi nazwę "Element". Obiekt ten również posiada kolekcję CommandBars , która zawiera wszystkie paski narzędziowe z danego okna oraz może zawierać menu kontekstowe. W module odpowiadającym temu obiektowi (Element) wszystkie właściwości i metody są widoczne bez konieczności poprzedzania przez "Element", odwołanie CommandBars jest więc równoważne z Element.CommandBars (a nie Application.CommandBars ).

 

Obiekty kontrolne pozwalają na wygodny i efektowny dostęp do pasków narzędziowych w oknach VBA (porównaj strukturę obiektów odpowiadających paskom narzędziowym w Microsoft Office). Należy pamiętać o kilku zasadach:

 

Należy stosować obsługę błędów (On Error...), uchroni to nas przed nieoczekiwanym zachowaniem programu (przechodzenie w tryb śledzenia błędów)

Nie należy odwoływać się bezpośrednio do obiektów z kolekcji CommandBars i Controls, jeżeli uprzednio nie upewniliśmy się, czy obiekt istnieje i czy jest właściwego typu (również obsługa błędów)

Obiekt CommandBars występuje zarówno w obiekcie Application, jak i w oknie VBA, stąd należy uważać, do którego obiektu się odwołujemy. Obiekt CommandBars umieszczony w obiekcie Application zawiera menu głównego okna programu i menu kontekstowe, natomiast obiekt umieszczony w projekcie odpowiadającym oknu VBA zawiera paski narzędziowe z okna i menu kontekstowe

Wszystkie przyciski na pasku narzędziowym są tej samej wielkości, tzn. dopasowują się do największego z przycisków (ustawienie Caption lub Faceld w chociaż jednym przycisku rezerwuje miejsce we wszystkich pozostałych).

 

Zobacz także:

Zarządzanie paskami narzędziowymi

Zarządzanie przyciskami na paskach narzędziowych