QBS >> Elementy standardowe >> QN-Toolbar

QN-Toolbar

Wprowadzenie

Poruszanie się po gałęziach menu może być uciążliwe, zwłaszcza, jeśli korzystamy np. na zmianę z dwóch browserów znajdujących się w odległych gałęziach menu. QN-Toolbar powstał po to, żeby przyspieszyć taką pracę, jak i po to, żeby ułatwić korzystanie z programu użytkownikom początkującym.

Podstawy

Na pasku znajdują się dwa zestawy przycisków - zaprojektowany przez programistę, zapisany w qconie, wspólny dla wszystkich użytkowników, i prywatny użytkownika, zapisany w parametrach. Zestaw zaprojektowany przez programistę nie może być w żaden sposób zmieniony z poziomu programu.

Okno toolbara nie łapie focusa, użyte zaś do uruchomienia innego okna otwiera je podając jako rodzica to okno, które miało focus jako ostatnie. Toolbar jest aktywny, o ile wszystkie otwarte na ekranie okna są nieblokujące - okno nieblokujące to takie, którego klasa (dziedzicząca z Window) ma przedefiniowaną metodę public boolean blocksToolbar(), tak, żeby zwracała false. W chwili obecnej wszystkie okna poza oknami menu są blokujące; oznacza to, że jeśli otwarte są same menu, to toolbar jest aktywny, po otwarciu czegokolwiek innego zaś aktywnym być przestaje. Pozwala to na uniknięcie problemów z transakcyjnością wynikających z tego, że użytkownik mógłby uruchomić naraz kilka funkcji zmieniających bazę danych.

Pusty toolbar - taki, na którym nie ma zdefiniowanych żadnych przycisków - nie wyświetla się.

W aplikacji może być tylko jeden toolbar.

Co muszę zrobić, by używać toolbara w moim programie?

Jeśli korzystasz z wersji biblioteki, w której znajduje się pakiet qline.toolbar, wystarczy, jeśli w pliku Start.java przed otwarciem jakiegokolwiek okienka wywołasz

Application.app.initToolbarManager("MainToolbar", "MainMenu");

a dookoła funkcji otwierającej menu dodasz wywołania fukcji otwierających i zamykających toolbar, na przykład w taki sposób:


        do if (showProgramInfo())
        {
                app.getToolbarManager().show();
                app.runMenu("MainMenu", null, null);
                app.getToolbarManager().hide();
        }
                while (!mess.ask("Czy koniec pracy z programem", true));


initToolbarManager bierze jako parametry dwa Stringi, z których pierwszy to nazwa toolbara (taka, jak nazwa ewentualnego menu zdefiniowanego w qconie, patrz dalej), a drugi to nazwa menu, akcje z którego mogą być dodawane na pasek przez użytkownika. Defaultowo są to "MainToolbar" i "MainMenu".

Co muszę zrobić, by wstępnie skonfigurować toolbar?

Musisz dopisać odpowiednią definicję w qconie. Toolbar definiuje się tak, jak zwykłe menu, zmieniają się jedynie nazwy niektórych parametrów z nagłówka.

MENU MainToolbar
	POS=70 5
	ICON_SIZE=48
	SUBTITLES=true
	VERTICAL=false
{
ID          ACTION                                      NAME          HELP                            ICON;
SPRZEDAZ    BROWSER DOK_RACH_BRO_ALL MENU_DRUK_ETYKIET; "Sprzedaż"    "Wszystkie dokumenty sprzedaży" "icon/toolbar/sprzedaz.gif";
ZAKUPY      BROWSER DOK_ZAKUP_BRO F2_FV_ZAKUP;          "Zakupy"      "Wszystkie dokumenty zakupu"    "icon/toolbar/zakup.gif";	
KONTRAHENCI BROWSER KONTRAHENCI_BRO F2_ODBIORCY;        "Kontrahenci" "Kartoteka kontrahentów, druk etykiet adresowych" "icon/toolbar/kontrahenci.gif";
PRACOWNICY  BROWSER PRACOWNIK_BROW PracownicyMenu;      "Pracownicy"  "Spis pracowników firmy" "icon/toolbar/pracownicy.gif";
DLUZNICY    NARROW_BROWSER DOK_RACH_BRO_NIEZAPLACONE F2MENU=F2_FV  {ZAPLACONE=0 CZY_PROFORMA=0}; "Dłużnicy" "Lista niezapłaconych dokumentów sprzedaży" "icon/toolbar/dluznik.gif";
}

Parametr SUBTITLES może przyjmować wartości true i false i określa, czy pod przyscikami mają być wyświetlane podpisy. Parametr VERTICAL przyjmuje wartości true i false i określa, czy toolbar ma być pionowy: jeśli wybierzemy false, będzie poziomy. Parametr ICON_SIZE określa wielkość przycisków w pikselach.

Akcje dla toolbara definiujemy dokładnie tak, jak dla menu, używane jednak są jedynie pola ID, ACTION, NAME, HELP i ICON.

Co muszę zrobić, by umożliwić dostosowanie toolbara użytkownikowi?

Wystarczy umieścić gdzieś w strukturze menu akcję otwierającą okno konfiguracji toolbara, czyli FUNC("qline.toolbar.ToolbarConfigRunner"). Jeśli nie chcemy, by użytkownik mógł manipulować ustawieniami toolbara - akcji w menu nie umieszczamy, i po kłopocie.