Microsoft Corporation MS Access - Tworzenie Aplikacji W przypadku zastosowania się do powyższego sposobu postępowania przy tworzeniu obiektów aplikacji, aby osiągnąć oczekiwany efekt, użytkownik będzie musiał pracować w otoczeniu wielu różnych obiektów - zapytań, makr, procedur zdarzeń związanych z formularzem lub raportem i procedur w innych modułach. Kluczowa rola formularzy W aplikacjach Microsoft Access formularze nie są jedynie ekranami do wprowadzania lub edycji danych - stanowią one większość interfejsu aplikacji. Dla użytkowników formularze "są" aplikacją. Tworząc aplikację wokół formularzy, można sterować reakcjami na wydarzenia, które zachodzą w formularzu. Formularze mają dodatkową, niewidoczną z zewnątrz zaletę, ujawniającą się w przypadku wykorzystania makro do powiązania obiektów ze sobą. Dodatkową zaletą formularzy, poza rolą interfejsu aplikacji, jest możliwość wykorzystania pól ukrytych formularzy do przechowywania i przekazywania wartości w makro z formularza do formularza lub z operacji do operacji. Przypuśćmy na przykład, że chcemy umożliwić użytkownikom wprowadzanie pewnego zakresu dat w polu dialogowym, a następnie drukowania serii raportów dotyczących tego zakresu. Pole dialogowe jest formularzem, który należy utworzyć. W chwili wybrania przycisku "OK" w polu dialogowym formularz nie zostaje zamknięty, lecz ukryty. Wobec tego, dane wprowadzone przez użytkownika są teraz dostępne dla makra drukującego każdy z raportów. Przykład ukrywania pola dialogowego można znaleźć w rozdziale 4, "Wykorzystywanie formularzy do gromadzenia, wyświetlania i filtrowania informacji". Integracja obiektów Utworzenie obiektów w aplikacji nie jest wystarczające do jej działania. Należy jeszcze zintegrować obiekty aplikacji w jeden spójny system, stworzony do wykonywania określonych zadań stojących przed użytkownikami. Integracja obiektów jest realizowana przez uruchamianie makr lub procedur zdarzeń, w reakcji na zdarzenia zachodzące w formularzach lub raportach aplikacji. Na rysunkach przedstawiono sposób integracji oddzielnych obiektów w system dostosowany do potrzeb użytkownika, przeznaczony do wprowadzania nowych zamówień i drukowania faktur. W przykładowej aplikacji formularz "Zamówienia" jest formularzem głównym. Po uruchomieniu aplikacji formularz "Zamówienia" otwiera się automatycznie. Osoby przyjmujące zamówienia mogą wykonać wszystkie dalsze czynności bezpośrednio w tym formularzu. Rys. nr 5 Rysunek przedstawia fragment okna "Zamówienia" ze wskazaniem na przycisk "Pokaż szczegóły produktu". Poniżej okno "Szczegóły produktu", jak na rysunku nr 2, a pod nim fragment okna "Przycisk polecenia: Detale", które zawiera: - listę rozwijalną z pozycją "Wszystkie właściwości", - listę wyboru z pozycjami: "Przy uzyskaniu fokusu", "Przy utracie fokusu", "Przy kliknięciu" [Procedura zdarzenia], "Przy kliknięciu dwukrotnym", "Przy naciśniętej myszy". Kliknięcie przycisku "Pokaż szczegóły produktu" powoduje zajście zdarzenia Kliknięcie (Click) i uruchomienie procedury zdarzenia wyświetlającej rekord produktu w oddzielnym formularzu. (Szczegóły produktu: Nr produktu; Dostawca; Kategoria; Nazwa produktu; Ilość jednostkowa; Cena jednostkowa; Stan magazynu; Ilość zamówiona; Stan minimum; Wycofany) Właściwość przycisku "Przy kliknięciu" (OnClick) wskazuje, czy jest uruchamiane makro, czy procedura zdarzenia. Do integracji obiektów aplikacji można także wykorzystać przyciski dostosowanych pasków narzędzi, jak przedstawiono poniżej. Rys. nr 6 Rysunek przedstawia górny fragment okna "Zamówienia". Nad paskiem tytułu znajduje się pasek narzędzi z 17 przyciskami, wśród nich przycisk "Drukuj fakturę". Kliknięcie przycisku "Drukuj fakturę" na dostosowanym pasku narzędzi powoduje uruchomienie makra otwierającego pole dialogowe Drukuj fakturę, w którym można zaznaczyć odpowiednie zamówienie. Rys. nr 7 Rysunek przedstawia okno o tytule "Drukuj fakturę". Zawiera ono: - listę wyboru "Zamówienie" z podświetloną pozycją "Mere Paillarde 10376 02 XI 92", - 3 przyciski: "Podgląd", "Drukuj", "Anuluj". Kliknięcie przycisku "Drukuj" powoduje ukrycie pola dialogowego i wydrukowanie faktury. Rys. nr 8 Rysunek przedstawia przykładową fakturę: w jej lewym górnym rogu jest nazwa firmy, w prawym – data, w dolnej części pozycje: "Wysyłka do", "Rachunek dla"; w dolnej części: "Nr zam.", "Kod klienta", "Sprzedawca", "Data zam.", "Data wysyłki", "Nr spedytora". Automatyzacja masowej aktualizacji bez programowania W aplikacjach baz danych często zachodzi potrzeba automatyzacji masowej aktualizacji rekordów - na przykład, usuwania i archiwizacji rekordów klientów. Doświadczony projektant baz danych wie z praktyki, że taka operacja może wymagać napisania pokaźnego programu. Jednak w aplikacji Microsoft Access można zwykle lepiej manipulować zestawami rekordów za pomocą zapytań funkcjonalnych, niż za pomocą programu. Zapytania funkcjonalne - tworzące tabele, aktualizujące, dołączające i usuwające - są często najbardziej efektywnym sposobem zmiany danych. Na przykład, uruchomienie wcześniej utworzonego zapytania usuwającego jest znacznie bardziej efektywną metodą usunięcia wielu rekordów niż wykonanie tego zadania za pomocą procedury w języku Access Basic. Zapytanie można zdefiniować graficznie w widoku Projekt, a następnie uruchomić je z okna bazy danych. Można także napisać makro, wykorzystujące do uruchomienia zapytania tylko dwie akcje - -UstawOstrzeżenia (SetWarnings) i OtwórzZapytanie (OpenQuery). Makro można dołączyć do menu poleceń, do przycisku polecenia lub określić je jako ustawienie właściwości zdarzenia dla dowolnego zdarzenia zachodzącego w formularzu. Informacje dodatkowe na temat tworzenia zapytań funkcjonalnych, służących do manipulacji zestawami rekordów, można znaleźć w rozdziale 13, "Modyfikacja danych za pomocą zapytań funkcjonalnych", w "Podręczniku użytkownika Microsoft Access". Odwoływanie się do obiektów i ich wartości W poprzednim paragrafie pokazano, że obiekty można łączyć ze sobą nie tylko wykorzystując jeden obiekt do otwarcia innego, lecz także przekazując dane z jednego obiektu do następnego. Na przykład, gdy jest otwierane pole dialogowe "Druk faktury", które jest formularzem, użytkownik chce, aby właściwe zamówienie zostało zaznaczone w polu dialogowym. Jak to zrobić? Przez wykorzystanie makro lub procedury zdarzenia identyfikuje się w otwartym obiekcie wartość, która ma być przekazana - zwykle jest to wartość elementu sterującego w formularzu. Ponieważ w aplikacji może być równocześnie otwartych wiele formularzy, do identyfikacji elementu sterującego, zawierającego żądaną wartość, wymagana jest specjalna struktura składniowa. Rys. nr 9 Rysunek przedstawia, pod nagłówkiem "Formularze", ułożone kaskadowo okna: "Szczegóły produktu", "Zamówienia", "Drukuj fakturę", oraz pod nagłówkiem "Elementy sterujące" następujące dane: "Faktura dla:", "Kod klienta: Klienci.K", "Nr zamówienia:", "Spedytor:", "Fracht:", "Ogółem:", "Data wysyłki:". Kolekcja Formularze zawiera otwarte formularze bazy danych. Można ustawić właściwości każdego spośród formularzy. Każdy formularz ma zbiór elementów sterujących. Można ustawić właściwości każdego z elementów sterujących. Aby odwołać się do obiektu lub wartości, należy zacząć od obiektu i identyfikować kolejno jego każdy element. Przed każdym elementem kolekcji należy umieścić operator ! (wykrzyknik) - obiekt jest zwykle nazywany przez użytkownika. Na przykład, aby odwołać się do formularza o nazwie "Zamówienia", należy zastosować poniższe wyrażenie: Forms![Zamówienia) Na przykład, aby się odwołać do elementu sterującego "Nr zamówienia" w formularzu "Zamówienia", należy zastosować poniższe wyrażenie: Forms![Zamówienia]![Nr zamówienia] Informacje dodatkowe na temat obiektów i akcji można znaleźć w rozdziale 7, "Obiekty i kolekcje". Odwołanie do elementu sterującego ma miejsce w przypadku potrzeby uzyskania lub przekazania jego wartości. Rys. nr 10 Rysunek przedstawia fragment okna "Zamówienia", jak na rysunku nr 3, lecz z innymi danymi w polach: "Nr zamówienia" i "Sprzedawca". Aby się odwołać do właściwości, należy użyć operatora . (kropka) przed nazwą właściwości. Operator ten należy stosować przed nazwami właściwości, metod i kolekcji (obiekty nazywane zwykle automatycznie). Na przykład, aby odwołać się do właściwości "Szerokość" (Width) formularza "Zamówienia", należy zastosować następujące wyrażenie: Forms![Zamówienia].Width Aby się odwołać do właściwości "Szerokość" (Width) elementu sterującego "Nr zamówienia" w formularzu "Zamówienia", należy zastosować następujące wyrażenie: Forms![Zamówienia]![Nr zamówienia].Width Wskazówka. Najłatwiejszym sposobem odwołania się do obiektu lub właściwości jest wykorzystanie Generatora wyrażeń. Za pomocą Generatora wyrażeń można po prostu zaznaczyć żądany obiekt na liście, a wyrażenie zostanie napisane automatycznie, ze wszystkimi operatorami we właściwych miejscach. Aby wyświetlić Generator wyrażeń, należy kliknąć prawym przyciskiem myszy w miejscu, w którym ma być wprowadzone wyrażenie, a następnie wybrać polecenie "Buduj" z menu podręcznego. "Metody" są częścią języka Access Basic. Informacje na temat stosowania metod, można znaleźć w rozdziale 7 "Obiekty i kolekcje". Sterowanie sposobem uruchamiania aplikacji i tworzenie poleceń dostosowanych Po uzyskaniu poprawnej pracy aplikacji jako systemu można sterować sposobem jej uruchamiania, przypisać polecenia do naciśnięć klawiszy i utworzyć polecenia dostosowane do potrzeb użytkownika na paskach menu. Wykorzystaj makro AutoExec do sterowania sposobem uruchamiania aplikacji. Jeśli jedno z makr zostanie nazwane AutoExec, będzie ono uruchamiane przy każdym otwarciu bazy danych. Makro AutoExec może być wykorzystane do ustawiania środowiska aplikacji - na przykład, do ukrycia okna bazy danych i otwarcia formularza, który ma się pojawić jako pierwszy. Wykorzystaj makro AutoKlawisze do przypisania poleceń do naciśnięć klawiszy. Można napisać makro przypisujące własne polecenia użytkownika do naciśnięć klawiszy, co pozwala stosować skróty klawiatury. Makro nazwane AutoKlawisze jest także uruchamiane przy każdym otwarciu bazy danych. Wykorzystaj Generator menu do tworzenia dostosowanych pasków menu w formularzach. Można utworzyć dostosowane paski menu i polecenia menu. Aby utworzyć dostosowany pasek menu dla formularza należy uruchomić Generator menu. W arkuszu właściwości formularza, obok pola właściwości "Pasek menu" (MenuBar) należy kliknąć przycisk "Buduj". Informacje dodatkowe na temat stosowania dowolnego z tych specjalnych makr i tworzenia dostosowanych pasków menu można znaleźć w rozdziale 2, "Tworzenie struktury interfejsu użytkownika". Oddzielanie tabel od innych obiektów aplikacji Jeśli aplikacja jest rozprowadzana wśród pewnej liczby użytkowników lub jeśli dane są umieszczone na serwerze, może się okazać wygodnym wykorzystywanie jednej bazy danych do przechowywania danych (tabel) a innej bazy danych do przechowywania zapytań, formularzy, raportów, makro i modułów tej aplikacji. Dzięki temu dołączone tabele z pierwszej bazy danych mogą być wykorzystane jako podstawa wszystkich obiektów. Rys. nr 11 Rysunek przedstawia bazę danych "Tabele" (DANE.MDB) z następującymi pozycjami: "Dostawcy", "Kategorie", "Klienci", "Opisy zamówień", "Pracownicy", "Produkty", "Spedytorzy", "Zamówienia". Poniżej oddzielna baza danych aplikacji (APL.MDB), zawierająca: "Tabele", "Zapytania", "Formularze", "Raporty", "Makra", "Moduły" Baza danych przechowująca dane zawiera tylko tabele. Wszystkie dane użytkownika są przechowywane w tabelach wśród danych w bazie danych. Oddzielna baza danych aplikacji zawiera wszystkie zapytania, formularze, raporty, makra i moduły aplikacji. Baza danych aplikacji zawiera tabele załączone do tabel w bazie danych zawierającej dane. Użytkownicy otwierają i wykorzystują bazę danych aplikacji (APL.MDB). Ponieważ obiekty w bazie danych aplikacji wykorzystują przyłączone tabele jako podstawę, zmiany danych wprowadzane przez użytkowników za pomocą obiektów powodują zmiany w bazie danych przechowującej dane (DANE.MDB). Dla wszystkich obiektów aplikacji można zastosować zabezpieczenia, włącznie z tabelami w bazie danych przechowującej dane i obiektami w bazie danych aplikacji. Po oddzieleniu danych aplikacji od jej formularzy i innych obiektów można z łatwością rozprowadzać udoskonalone wersje aplikacji. Można rozprowadzać udoskonalone zapytania, formularze, raporty, makra i moduły bez potrzeby dystrybucji danych aplikacji. Jeśli dane są umieszczone na serwerze, można zmniejszyć obciążenie sieci przez uruchamianie aplikacji przez użytkowników ze stacji roboczych zamiast z serwera. Informacje dodatkowe na temat zabezpieczenia można znaleźć w rozdziale 14, "Zabezpieczenie aplikacji". Rys. nr 12 Rysunek przedstawia schemat połączeń 3 użytkowników z bazą na serwerze. Oryginalna baza danych jest umieszczona na serwerze. Kopie bazy danych aplikacji rozprowadza się wśród użytkowników. Jeśli od samego początku wiadomo, że aplikacja będzie podzielona na dwa pliki baz danych, należy od razu projektować aplikację z myślą o takim podziale. Można także utworzyć aplikację ze wszystkimi obiektami w jednym pliku, a następnie, po zakończeniu projektowania, podzielić ją na dwie części, tak aby była gotowa do dystrybucji. Aby podzielić aplikację po utworzeniu jej obiektów: 1. Utwórz i otwórz drugi plik bazy danych. Nową bazę danych można uczynić bazą aplikacji albo bazą przechowującą dane. 2. Aby nowa baza danych stała się bazą aplikacji, należy do niej importować wszystkie obiekty z wyjątkiem tabel, a następnie przyłączyć tabele z oryginalnej bazy danych do nowej. - lub - Aby nowa baza danych stała się bazą przechowującą dane, należy do niej importować tabele, utworzyć relacje między tabelami w nowej bazie, usunąć tabele z bazy oryginalnej i przyłączyć tabele z nowej bazy. Informacje dodatkowe na temat dołączania tabel można znaleźć w rozdziale 9, "Importowanie, eksportowanie i załączanie", w "Podręczniku użytkownika Microsoft Access". Po podzieleniu aplikacji można ją rozprowadzić wśród użytkowników. Użytkownicy będą otwierać i użytkować bazę danych aplikacji. Uwaga. Połączenia wykorzystywane przez przyłączone tabele zależą od ścieżki bazy danych przechowującej dane. Jeśli użytkownik umieści bazę danych w innej ścieżce, połączenia nie będą działać. Proces przyłączania tabel przez użytkowników można zautomatyzować, przez wyświetlenie żądania podania ścieżki do bazy danych przechowującej dane w trakcie uruchamiania aplikacji. Może być wówczas wykorzystana metoda Access Basic RefreshLink, w celu odświeżenia połączeń aplikacji. Przykład działania procesu odświeżania można obejrzeć, otwierając aplikację przykładowych rozwiązań (METODY.MDB) w katalogu programu Microsoft Access, w podkatalogu SAMPAPPS. W górnej części formularza "Metody" należy dwukrotnie kliknąć opcję "Użycie wielu baz danych". W dolnej części należy dwukrotnie kliknąć opcję "Załącz tabele przy uruchomieniu". Przykładowa aplikacja "Faktury" Aplikacja "Faktury", przedstawiona w tym rozdziale, znajduje się wśród przykładowych plików programu Microsoft Access. Aby uruchomić tę aplikację, należy otworzyć bazę danych FAKTURY.MDB w podkatalogu SAMPAPPS w katalogu programu Microsoft Access. Rys. nr 13 Rysunek przedstawia okno o tytule "Otwórz bazę danych", które zawiera: - listę rozwijalną z pozycjami: "faktury.mdb", "metody.mdb", "nwind.mdb", - listę rozwijalną "Katalogi", - 2 przyciski: "OK.", "Anuluj", - 2 pola wyboru: "Tylko-do-odczytu", "Wyłączność" (zaznaczone), - 2 listy wyboru: "Wyświetl pliki typu:", "Stacje dysków:". Aby uruchomić aplikację "Faktury", należy otworzyć bazę danych FAKTURY.MDB. Wskazówka. Aplikacja "Faktury" ma makro AutoExec, które ukrywa okno bazy danych i otwiera formularz "Zamówienia". Aby wyświetlić okno bazy danych po uruchomieniu aplikacji, należy nacisnąć klawisz F11. Aby całkowicie pominąć makro AutoExec, należy w trakcie otwierania bazy danych trzymać naciśnięty klawisz SHlFT. W pozostałych rozdziałach części 1 tej książki jest wyjaśnione tworzenie funkcji przedstawionych w aplikacji "Faktury". Informacje dodatkowe na temat funkcji aplikacji można szybko uzyskać klikając przycisk "Pokaż" na pasku narzędzi formularza lub naciskając klawisz F1. Rys. nr 14 Rysunek przedstawia przycisk "Pokaż". Aby przeczytać na temat możliwości aplikacji "Faktury", należy kliknąć ten przycisk. Rozdział 2 Tworzenie struktury interfejsu użytkownika Im mniej zauważalny jest interfejs użytkownika, tym lepiej można się skupić na wykonywanym zadaniu zamiast na funkcjonowaniu interfejsu. W tym rozdziale przedstawiono kilka koncepcji dotyczących tworzenia struktury intuicyjnego interfejsu użytkownika. Omówiono sterowanie sposobem uruchamiania aplikacji oraz tworzenia poleceń za pomocą pasków menu i przypisywania klawiszom pewnych akcji. Spis treści rozdziału: - Realizacja przechodzenia do zadań i obiektów. - Projektowanie formularza głównego. - Uruchamianie aplikacji za pomocą makra AutoExec. - Tworzenie paska menu. - Uruchamianie i wykorzystywanie Generatora menu. - Tworzenie podmenu. - Co to są makra paska menu? - Edycja paska menu. - Powielanie dostosowanego paska menu w celu wykorzystania go w innym formularzu. - Wybór globalnego paska menu. - Uwagi dotyczące pracy w sieci. - Wykorzystywanie w aplikacji dostosowanych pasków narzędzi. - Zezwalanie użytkownikom na modyfikację pasków narzędzi aplikacji. - Przypisywanie klawiszom akcji. Realizacja przechodzenia do zadań i obiektów Twórca aplikacji określa dla użytkowników sposób poruszania się, czyli nawigacji, w obrębie aplikacji oraz wykonywania przez nich zadań. Poruszanie się w obrębie aplikacji Microsoft Access zwykle oznacza przesuwanie się od pola do pola w formularzu lub między formularzami: Poruszanie się w obrębie formularza. Przemieszczanie się od pola do pola w formularzu powinno naśladować naturalne postępowanie w trakcie wykonywania zadania - użytkownicy nie powinni przeskakiwać ze szczytu formularza na dół i z powrotem do góry, w celu realizacji jednego zadania. Elementy sterujące powinny być zgrupowane logicznie, tak aby użytkownik mógł się skupić na jednym obszarze formularza. Jeśli elementy sterujące są wykorzystywane do wyszukiwania lub filtrowania rekordów, należy je umieścić w nagłówku lub w stopce formularza, aby wskazać, że są one oddzielone od innych pól bieżącego rekordu. Rys. nr 15 Rysunek przedstawia okno o tytule "Produkty i dostawcy". Zawiera ono: - listę rozwijalną "Wybierz produkt do odnalezienia:" z podświetloną pozycją "Alice Mutton", pod nią lista wyboru z pozycjami: "Alice Mutton", "Aniseed Syrup", "Boston Crab Meat", "Camembert Pierrot", "Carnarvon Tigers" - pola: "Nazwa produktu", "Nazwa angielska". Elementy sterujące używane do wyszukiwania lub filtrowania rekordów należy umieścić w nagłówku lub stopce formularza oddzielnie od pól w bieżącym rekordzie. Przemieszczanie się od jednego formularza do innego i wykonywanie zadań. Nie ma żadnych powodów do uznania jednego sposobu nawigacji między formularzami lub wykonywanymi zadaniami za lepszy od innego sposobu. Jest jednak dobrym pomysłem umożliwienie użytkownikom przemieszczania się sposobami znanymi z innych aplikacji Windows. Jest także uzasadnione, aby zachować konsekwencję w obrębie aplikacji - aby podobne zadania w różnych formularzach były wykonywane w podobny sposób. Poniżej przedstawiono niektóre znane elementy nawigacyjne używane w aplikacjach Windows: - Przyciski poleceń. Przycisk polecenia może być wykorzystany w formularzu w celu wykonania zadania (na przykład, zachować bieżący rekord) lub do otwarcia innego formularza, wykorzystanego do związanego zadania. Zaletą przycisków poleceń jest ich dobra widoczność. Ponadto można je skojarzyć wizualnie z konkretną grupą elementów sterujących w formularzu. Rys. nr 16 Rysunek przedstawia fragment okna o tytule "Zamówienia". Zawiera ono tabelę z nagłówkami: "Nr produktu:", "Produkt", "Cena jedn.". Pod tabelą – przycisk "Pokaż szczegóły produktu". Przycisk "Pokaż szczegóły produktu" w formularzu "Zamówienia" otwiera formularz wyskakujący, w którym są wyświetlane szczegóły na temat wybranego produktu. - Polecenia menu. Można umieścić własne menu i polecenia na pasku menu formularza lub raportu. Polecenia w menu zajmują mniej miejsca niż przyciski poleceń w formularzach, lecz są one mniej widoczne - użytkownik musi otworzyć menu aby je zobaczyć. Ponieważ nie są one skojarzone wizualnie z żadnym konkretnym obszarem formularza, ich najlepszym zastosowaniem są zadania związane z całym formularzem, a nie z jego częścią. Rys. nr 17 Rysunek przedstawia fragment okna o tytule "Microsoft Access" – na jego pasku menu jest podświetlona opcja "Plik", która zawiera pozycje: "Zachowaj rekord", "Zamknij", "Drukuj fakturę" (podświetlone), "Ustawienie wydruku", "Koniec". Za pomocą polecenia menu "Drukuj fakturę" można wydrukować fakturę dla bieżącego zamówienia w formularzu "Zamówienia". Wskazówka. Aby najczęściej używane polecenia menu stały się bardziej widoczne, można je powtórzyć w postaci przycisków na pasku narzędzi. Informacje dodatkowe można znaleźć w paragrafie "Wykorzystywanie w aplikacji dostosowanych pasków narzędzi" dalej w tym rozdziale. - Przypisywanie akcji klawiszom. Makro można skojarzyć z kombinacją klawiszy w taki sposób, że jest ono uruchamiane za każdym razem, gdy użytkownik naciśnie te klawisze. To rozwiązanie jest jeszcze mniej widoczne niż polecenia menu - użytkownik musi zawczasu znać przyporządkowanie klawisza, aby z niego korzystać. Ma ono jednak zaletę, polegającą na dostępności w całej aplikacji, a nie tylko w jednym formularzu. Jeśli jest jakaś akcja, która może być wykonywana w dowolnym miejscu aplikacji (na przykład, drukowanie bieżącego rekordu), można ją przypisać do kombinacji klawiszy. Informacje dodatkowe można znaleźć w paragrafie "Przypisywanie klawiszom akcji", dalej w tym rozdziale. Projektowanie formularza głównego Jednym ze skutecznych sposobów organizacji i prezentacji zadań w aplikacji jest zastosowanie "formularza głównego" jako centrum sterowania aplikacji. Formularz główny zapewnia możliwość przejścia do każdego z zadań; jest to zwykle pierwszy formularz, jaki się pojawia po uruchomieniu aplikacji. W trakcie projektowania formularza głównego należy dążyć do umieszczenia najważniejszych zadań możliwie blisko "powierzchni" aplikacji. Na przykład, jeśli aplikacja jest skupiona na jednym zadaniu, formularz tego zadania powinien być wykorzystany jako formularz główny. Aplikacja "Faktury" jest dobrym przykładem takiego rozwiązania. Jej formularzem głównym jest formularz "Zamówienia". Użytkownik może w nim wykonać podstawowe zadania i przejść z niego do związanych zadań. Rys. nr 18 Rysunek przedstawia okno "Zamówienia", w którym znajdują się: - lista rozwijalna "Faktura dla:", - pole "Kod klienta", - pola: "Kontakt:", "Tytuł:", "Telefon:", "Faks:", "Adres wysyłk.:", - pole "Spedytor:" z 3 polami wyboru: "Speedy", "Federal", "United", - pole "Nr zamówienia", - tabela o nagłówkach: "Nr produktu", "Produkt", "Cena jedn.", "Ilość", "Rabat", "Wartość". Po uruchomieniu aplikacji "Faktury" otwiera się automatycznie formularz "Zamówienia", gotowy do wprowadzenia pierwszego zamówienia. Aby zobaczyć formularz "Zamówienia", otwórz plik FAKTURY.MDB w podkatalogu SAMPAPPS, w katalogu, w którym jest przechowywany program Microsoft Access. Jeśli, w przeciwieństwie do poprzednio opisanego przykładu, aplikacja zawiera liczne formularze i raporty i nie można przewidzieć, który z nich będzie użyty jako pierwszy, można uruchomić aplikację wyświetlając formularz główny działający podobnie jak tablica rozdzielcza. W formularzach tego rodzaju często stosuje się przyciski poleceń, w celu zgrupowania związanych obiektów i zadań. Formularz główny opisanego powyżej typu oraz makra dołączone do jego przycisków, można znaleźć w pliku NWIND.MDB. Makra są w grupie przycisków Panelu głównego. Rys. nr 19 Rysunek przedstawia okno o tytule "Panel główny", zawierające 5 przycisków: "Formularze", "Wydruk raportów", "Zestawienia dzienne zamówień", "Okno bazy danych", "Koniec Microsoft Access". W górnej części okna nazwa firmy "Northwind Traders". Formularz "Panel główny" bazy danych Northwind umożliwia pracownikowi łatwy dostęp do często używanych formularzy i raportów. Przycisk "Przegląd formularzy" w formularzu "Panel główny" przedstawia jeden ze sposobów grupowania obiektów. Po kliknięciu tego przycisku zostaje wyświetlony formularz "Panel formularzy", zawierający przycisk dla każdego często używanego formularza w bazie danych. Aby otworzyć formularz należy kliknąć jego przycisk w formularzu "Panel formularzy". Inny sposób projektowania formularza głównego jest przedstawiony w aplikacji "Metody". Projektant bazy danych może tam znaleźć różne znane rozwiązania projektów aplikacji. Jej formularz główny jest narzędziem pozwalającym znaleźć właściwe rozwiązanie. Aby zobaczyć ten formularz, otwórz plik METODY.MDB w pod katalogu SAMPAPPS, w katalogu, w którym jest przechowywany program Microsoft Access. Rys. nr 20 Rysunek przedstawia okno o tytule "Metody", w którym znajdują się : - pole "Wybierz kategorię przykładów" z pozycjami: "Tworzenie interfejsu Microsoft Windows", "Przykładowe formularze", "Praca z formularzami i elementami sterującymi", "Wykorzystywanie pól edycji z listą wyboru, list, formularzy i podraportów", "Zapytanie według formularza", "Użycie zapytań z formularzami i raportami", "Przykładowe raporty", "Tworzenie zaawansowanych raportów", "Kontrola zawartości wydruku w raportach", "Obliczanie podsumowań na raportach", "Użycie wielu baz danych", - pole "Wybierz przykład", - 2 przyciski: "OK" i "Koniec" - pole wyboru "Automatycznie pokaż temat Pomocy dla wybranego przykładu". Główny formularz aplikacji "Metody" można wykorzystywać do przechodzenia od zagadnień ogólnych do szczegółowego przykładu. Te trzy formularze - "Zamówienia", "Panel główny" i formularz główny aplikacji "Metody"- ilustrują tylko kilka spośród wielu możliwych rozwiązań, które można zastosować w projekcie formularza głównego aplikacji. Po ułożeniu planu przemieszczania się między formularzami i zadaniami w tworzonej aplikacji można przystąpić do zdefiniowania sposobu jej uruchamiania. Uruchamianie aplikacji za pomocą makra AutoExec Do uruchomienia aplikacji można wykorzystać specjalne makro o nazwie AutoExec. W trakcie otwierania bazy danych jest szukane makro o takiej nazwie i w przypadku znalezienia, automatycznie uruchomione. Makro AutoExec należy wykorzystywać do wykonywania akcji, które powinny mieć miejsce za każdym razem, gdy jest uruchamiana aplikacja. Na przykład, makro można wykorzystać wyszukując temat do ukrycia okna bazy danych, otwarcia formularza głównego i wydrukowania dziennego raportu. Aby automatycznie uruchomić makro w momencie otwierania bazy danych: 1. Utwórz makro zawierające akcje, które mają być wykonywane w momencie otwierania bazy danych. 2. Zachowaj makro i nazwij je AutoExec. Następnym razem, gdy będzie otwierana baza danych, to makro zostanie uruchomione automatycznie. Informacje dodatkowe dotyczące tworzenia i wykorzystywania makr można znaleźć w Pomocy, wyszukując temat "macros". Uwaga. Jeśli w trakcie otwierania bazy danych uruchomienie makra AutoExec ma być ominięte, należy trzymać naciśnięty klawisz SHIFT w momencie zaznaczania bazy, w polu dialogowym "Otwórz bazę danych". Jeśli baza została wcześniej otwarta, w celu uruchomienia określonego makra można także zastosować opcję wiersza polecenia /x. Informacje dodatkowe można znaleźć w Pomocy, wyszukując temat "command-line options". Przykład. Wykorzystanie makra AutoExec do ukrycia okna bazy danych i otwarcia formularza Pracownicy firmy Northwind zaczynają każdy dzień od wprowadzenia nowych zamówień do bazy danych. Zatem natychmiast po uruchomieniu aplikacji "Faktury" powinien zostać otwarty formularz "Zamówienia", w celu wprowadzenia zamówień. Ponadto powinno zostać ukryte okno bazy danych, ponieważ nie ma potrzeby, aby pracownicy oglądali tabele, zapytania, makra i moduły zawarte w aplikacji. Czynność pierwsza: Utworzenie makra AutoExec z dwiema akcjami. Należy wykorzystać akcję WykonajElementMenu (DoMenultem) do wykonania polecenia "Ukryj", z menu "Okno" w oknie bazy danych, a akcję OtwórzFormularz (OpenForm) do otwarcia formularza "Zamówienia" w celu wprowadzenia danych. Rys. nr 21 Rysunek przedstawia okno o tytule "Makro: AutoExec". Zawiera ono: - pole "Akcja" z pozycjami: "WykonajElementMenu" (ze strzałką z lewej strony), "OtwórzFormularz", - listę wyboru "Komentarz" – w niej pozycje: "Uruchamia się automatycznie przy otwieraniu bazy danych", "Ukrywa okno bazy danych", "Otwiera formularz Metody do wprowadzania danych", - pole "Argumenty akcji" z polami edycji: "Pasek menu" (wpis – "Baza danych"), "Nazwa menu" (wpis – "Okno"), "Polecenie" (wpis – "Ukryj"), "Polecenie podrzędne". Poniżej przedstawiono kluczowe argumenty i ich ustawienia dla akcji OtwórzFormularz (OpenForm) (tabela): Argument, Ustawienie; Nazwa formularza, Zamówienia; Widok, Formularz; Tryb danych, Dodawanie; Tryb okna, Normalny; Czynność druga: Zachowanie makra w pliku FAKTURY.MDB. W chwili gdy osoba przyjmująca zamówienie otwiera bazę danych (uruchamia aplikację), okno bazy danych jest ukryte, a formularz "Zamówienia" jest automatycznie otwierany do wprowadzania zamówień. Wskazówka. Gdy aplikacja zawiera wiele formularzy, można usprawnić jej działanie przez zastosowanie makra AutoExec do otwierania i ukrywania wszystkich formularzy. W akcjach OtwórzFormularz (OpenForm), używanych do otwierania formularzy, należy ustawić argument "Tryb okna" na Ukryte (Hidden). Wówczas, zamiast otwierać formularz za każdym razem gdy użytkownik go potrzebuje, należy ustawić właściwość formularza "Widoczny" (Visible) na wartość "Tak". Po zakończeniu pracy z formularzem, należy ustawić jego właściwość "Widoczny" (Visible) na wartość "Nie". Przy zastosowaniu tej techniki, uruchomienie aplikacji wymaga więcej czasu, ponieważ od razu są otwierane wszystkie formularze. Jednak jej sprawność po uruchomieniu może być znacznie lepsza. Informacje dodatkowe na temat ustawiania właściwości formularza w trakcie korzystania z niego można znaleźć w rozdziale 4, "Wykorzystywanie formularzy do gromadzenia, wyświetlania i filtrowania informacji". Sterowanie środowiskiem aplikacji Makro AutoExec można wykorzystać do ustawienia środowiska aplikacji - na przykład, uczynić niedostępnymi wbudowane paski narzędzi lub ukryć pasek stanu. Środowisko aplikacji ustawia się przez ustawienie opcji systemowych. Należy jednak pamiętać, że ustawienia opcji, przechowywane w pliku SYSTEM.MDA, dotyczą każdej bazy danych otwartej w grupie roboczej Microsoft Access. Z tego powodu należy przywrócić oryginalne ustawienia opcji, z chwilą zakończenia aplikacji przez użytkowników. Do wyszukania opcji systemowych w kodzie Access Basic można wykorzystać metodę GetOption, a następnie wykonać ten kod w makro AutoExec, wykorzystując akcję UruchomKod (RunCode). Aby następnie przywrócić oryginalne ustawienia opcji, można wykorzystać metodę SetOption, w kodzie wykonywanym w chwili zamykania przez użytkownika ostatniego formularza aplikacji. Informacje dodatkowe dotyczące wykorzystania tych metod można znaleźć w Pomocy, wyszukując temat "GetOption" lub "SetOption". Tworzenie paska menu Menu jest wygodną i logiczną formą zestawu poleceń, pogrupowanych w sposób ułatwiający do nich dostęp użytkowników. Poniżej przedstawiono elementy interfejsu menu aplikacji Microsoft Access. Rys. nr 22 Rysunek przedstawia okno o tytule "Microsoft Access". Na pasku menu podświetlona jest opcja "Plik", która zawiera polecenia: "Zachowaj rekord", "Zamknij", "Drukuj fakturę" (podświetlone), "Ustawienie wydruku", "Koniec". Między poleceniami są paski oddzielające. "Pasek menu" jest wyświetlany tuż poniżej paska tytułu aplikacji i zawiera jedną lub więcej "nazw menu", takich jak "Plik", "Edycja" i "Rekordy". Kliknięcie nazwy menu powoduje wyświetlenie listy elementów menu. Elementy menu mogą zawierać polecenia (takie jak "Zamknij" i "Koniec"), paski oddzielające i nazwy podmenu. Można utworzyć dostosowany pasek menu, zwierający zarówno wbudowane polecenia Microsoft Access, takie jak polecenie "Koniec" w menu "Plik", jak i polecenia zdefiniowane specjalnie dla konkretnej aplikacji, takie jak polecenie "Drukuj fakturę" w menu "Plik". Dostosowane paski menu mogą być wykorzystywane w aplikacji w dwojaki sposób: - Dołączone do formularza lub raportu. Menu dostosowane będzie wyświetlane po każdym otwarciu formularza lub wyświetleniu raportu za pomocą polecenia "Podgląd wydruku". - Globalne. Dostosowany pasek menu będzie wyświetlany we wszystkich oknach "z wyjątkiem" formularzy lub raportów mających własne dostosowane paski menu. (Dostosowany pasek menu formularza lub raportu jest nadrzędny w stosunku do globalnego paska menu.) Informacje dodatkowe można znaleźć w paragrafie "Wybór globalnego menu", dalej w tym rozdziale. Uruchamianie i wykorzystywanie Generatora menu Menu tworzy się za pomocą Generatora menu, w którym się definiuje menu i polecenia, które mają się pojawić na pasku menu. Generator menu tworzy pewną liczbę makr określających dostosowany pasek menu. Generator menu może być uruchomiony z widoku Projekt formularza lub raportu albo przez wybranie polecenia "Dodatki" z menu "Plik" w dowolnym oknie Microsoft Access. - Najłatwiejszym sposobem utworzenia paska menu dołączonego do formularza lub raportu jest uruchomienie Generatora menu z widoku Projekt formularza lub raportu. Dzięki temu Generator menu automatycznie tworzy pasek menu i dołącza go do formularza lub raportu. - Można także utworzyć lub edytować pasek menu wybierając polecenie "Dodatki" z menu "Plik", a następnie wybierając Generator menu. W przypadku takiego sposobu postępowania, także można dołączyć utworzony pasek menu do formularza lub raportu. Informacje dodatkowe na temat makr definiujących pasek menu można znaleźć w paragrafie "Co to są makra paska menu?" dalej w tym rozdziale., Aby wykorzystać Generator menu do utworzenia dostosowanego paska menu dla formularza lub raportu: 1. W widoku Projekt formularza lub raportu wyświetl arkusz właściwości. (Kliknij dwukrotnie tło okna projektu poza formularzem lub raportem, albo białe pole, w którym stykają się linijki.) 2. W arkuszu właściwości kliknij właściwość "Pasek menu" (MenuBar), a następnie kliknij przycisk "Buduj" po prawej stronie właściwości. Zostanie wyświetlone pierwsze pole dialogowe Generatora menu. W tym polu można określić, czy do utworzenia nowego paska menu ma być wykorzystany jako wzorzec wbudowany pasek menu, czy też nowe menu ma być utworzone od samego początku. Wskazówka. Łatwiej jest wykorzystać wbudowane menu jako wzorzec. Wystarczy z niego usunąć niepotrzebne menu i polecenia, a następnie dodać własne menu i polecenia. Jako wzorzec paska menu dołączonego do formularza, wygodnie jest użyć paska menu "Widok Formularz" lub "Widok Arkusz danych". Jako wzorzec paska menu dołączonego do raportu, można użyć paska menu "Raport". 3. Zaznacz pasek menu, który ma być wykorzystany jako wzorzec: - Aby jako wzorca użyć paska menu "Widok Formularz", zaznacz "Formularz". - Aby jako wzorca użyć paska menu "Widok Arkusz danych", zaznacz "Arkusz danych formularza". - Aby jako wzorca użyć paska menu "Raport", zaznacz "Raport". - lub - Zaznacz aby utworzyć pasek menu od samego początku. 4. Wybierz przycisk "OK". Informacje dodatkowe na temat edycji istniejącego paska menu można znaleźć w paragrafie "Edycja paska menu", dalej w tym rozdziale. Aby uruchomić Generator menu z dowolnego okna: 1. Z menu "Plik" wybierz polecenie "Dodatki", a następnie wybierz polecenie "Generator menu". W efekcie uruchomienia Generatora menu jest wyświetlane pole dialogowe, w którym można dokonać wyboru pomiędzy edycja istniejącego paska menu a utworzeniem nowego paska. 2. Wybierz przycisk "Nowy". Zostanie wyświetlone pierwsze pole dialogowe Generatora menu. W tym polu można określić, czy istniejący pasek menu ma być wykorzystany jako wzorzec, czy też nowy pasek ma być utworzony od początku. Wskazówka. Łatwiej jest wykorzystać wbudowane menu jako wzorzec. Wystarczy z niego usunąć niepotrzebne menu i polecenia, a następnie dodać własne menu i polecenia. 3. Zaznacz pasek menu, który ma być wykorzystany jako wzorzec. - lub - Zaznacz , aby utworzyć pasek menu od samego początku. 4. Wybierz przycisk "OK". Zostanie wyświetlone pole dialogowe Generatora menu, zawierające wypełnione już menu i polecenia wybranego paska menu. Jeśli była wybrana opcja , zostanie wyświetlone pole dialogowe Generatora menu bez wypełnionych menu i poleceń. Rys. nr 23 Rysunek przedstawia okno o tytule "Generator menu – [Nowy pasek menu]". Zawiera ono: - pole edycji "Tytuł:" z wpisem "&Plik", - lista rozwijalna "Akcja", - pola edycji: "Argument(y)" i "Tekst paska stanu", - przyciski: "OK", "Anuluj", "Pomoc", "Duplikat", "Następny", "Wstaw", "Usuń" oraz 4 przyciski ze strzałkami: w lewo, w prawo, w górę, w dół, - listę wyboru z menu i poleceniami dla paska menu, na którą składają się: - nazwa menu "&Plik", - nazwa podmenu "&Nowy", - nazwy poleceń: "&Tabela", "&Zapytanie", "&Formularz", "&Raport", "&Makro", "Mo&duł", "&Zamknij", (pasek oddzielający), "Zacho&waj", "Zac&howaj jako". W dolnej połowie pola dialogowego Generatora menu znajduje się lista wszystkich menu, poleceń i pasków oddzielających w pasku menu. Położenie menu lub polecenia określa, czy jest to nazwa menu, nazwa polecenia, nazwa podmenu czy nazwa polecenia podmenu: - Element listy wysunięty w lewo jest wyświetlany na pasku menu jako nazwa menu. - Element listy z pojedynczym wcięciem jest wyświetlany w poprzedzającym menu, gdy zostanie zaznaczona nazwa menu. Te elementy mogą być poleceniami w menu, paskami oddzielającymi lub nazwami podmenu. - Element listy z pojedynczym wcięciem, po którym następują elementy z większymi wcięciami, staje się nazwą podmenu. Elementy z wcięciem, poniżej nazwy podmenu, stają się poleceniami lub paskami oddzielającymi w tym podmenu. - Element listy z jednym myślnikiem (-) jako opisem jest wyświetlany jako pasek oddzielający. "Pasek oddzielający" można wykorzystać do podziału elementów menu na logiczne grupy. Do menu lub polecenia można przypisać klawisz dostępu przez dodanie znaku (&) bezpośrednio przed znakiem, który ma być klawiszem dostępu. "Klawisz dostępu" jest kombinacją klawiszy, pozwalającą otworzyć menu lub wybrać polecenie przez naciśnięcie klawisza ALT plus klawisz przypisanego znaku (lub znaków). Rys. nr 24 Rysunek przedstawia dolny fragment okna "Generator menu – [Nowy pasek menu]" z lista wyboru zawierającą: nazwę menu "&Plik", nazwy polecenia "Zachowaj rek&ord", "&Zamknij", "Drukuj &fakturę", "&Ustawienie wydruku". Znak (&) służy do wyznaczenia klawisza dostępu do menu lub polecenia. Na przykład klawisz P jest klawiszem dostępu do menu Plik, zaś Z - do polecenia Zamknij. Rys. nr 25 Rysunek przedstawia fragment okna z rozwiniętym menu "Plik", na które składają się: "Zachowaj rekord", "Zamknij", "Drukuj fakturę..." (podświetlone), "Ustawienie wydruku...", "Koniec". Aby wykonać polecenie "Zamknij" z menu "Plik", można nacisnąć klawisze ALT+P+Z. Aby zdefiniować pasek menu: 1. W dolnej połowie pola dialogowego Generatora menu zaznacz element, którego charakterystykę zamierzasz zmienić. W górnej połowie pola dialogowego są wyświetlane informacje na temat elementu, który można edytować. zmiany wielkości wcięcia zaznaczonego elementu. Przyciski "Strzałka w górę" i "Strzałka w dół" można wykorzystać do przeniesienia elementu w inne miejsce. 2. Do każdego polecenia przypisz akcję, zaznaczając odpowiednią pozycję w polu edycji z listą wyboru "Akcja" i wpisz jej argumenty w polu tekstowym "Argument". Rys. nr 26 Rysunek przedstawia okno o tytule "Generator menu – [Zamówienia pasek menu]", jak na rysunku nr 23, lecz z innymi danymi: - w polu edycji "Tytuł" jest wpis: "Drukuj &fakturę", - w polu edycji "Argument(y)" – "Drukuj fakturę", - w polu edycji "Tekst paska stanu" – "Drukuj fakturę dla bieżącego zamówienia", - w liście rozwijalnej "Akcja" – "RunMacro", - w liście z menu i poleceniem – podświetlona nazwa polecenia "Drukuj &fakturę". W celu zdefiniowania działania polecenia, można zaznaczyć jedną z następujących akcji: - Do utworzenia polecenia menu należy wykorzystać akcję WykonajElementMenu DoMenuItem). Wykorzystanie tej akcji jest równoważne z wybraniem polecenia z jednego z wbudowanych pasków menu. Dla poleceń WykonajElementMenu (DoMenuItem) jest wykorzystywany tekst z wbudowanych pasków stanu, toteż nie ma potrzeby wprowadzania żadnego tekstu do pola "Tekst paska menu". Polecenie zostaje także wyłączone automatycznie w takim samym kontekście, w jakim byłoby wyłączone we wbudowanym pasku menu. - Do wykonania samodzielnie napisanego makra należy wykorzystać akcję UruchomMakro. polu "Tekst paska stanu" wpisz komunikat, który ma się pojawić w pasku stanu. Komunikat ten jest wyświetlany, gdy użytkownik zaznaczy polecenie. - Do wykonania samodzielnie napisanej w języku Access Basic procedury typu "Function" należy wykorzystać akcję UruchomKod (RunCode). W polu "Tekst paska stanu" wpisz komunikat, który ma się pojawić w pasku stanu. Komunikat ten jest wyświetlany, gdy użytkownik zaznaczy polecenie. Gdy ma być wykonana akcja UruchomKod (RunCode), w pierwszej kolejności jest wyszukiwana funkcja o określonej nazwie w module formularza lub raportu, do którego jest dołączony pasek menu. W przypadku istnienia takiej funkcji, jest ona wykonywana. Jeśli moduł formularza lub raportu nie zawiera funkcji o takiej nazwie, jest ona poszukiwana w modułach globalnych. 3. Po zakończeniu definiowania paska menu wybierz przycisk "OK". Zostanie wyświetlone pole dialogowe "Zachowaj jako". 4. Wpisz nazwę utworzonego menu dostosowanego w polu "Nazwa paska menu", a następnie wybierz przycisk "OK". Za pomocą Generatora menu są tworzone makra definiujące pasek menu. Jedno z tych makr określa które menu są wyświetlane na pasku - nosi ono nazwę wprowadzoną w polu dialogowym "Zachowaj jako". Za pomocą Generatora menu jest tworzona grupa makr dla każdego menu na pasku menu. - Jeśli Generator menu został uruchomiony z właściwości "Pasek menu" (MenuBar) formularza lub raportu, właściwość ta zostanie ustawiona na nazwę makra definiującego pasek menu. - Jeśli Generator menu został uruchomiony za pomocą polecenia "Generator menu" z podmenu "Dodatki", pasek menu należy dołączyć do formularza lub raportu przez ustawienie właściwości "Pasek menu" (MenuBar) na nazwę makra definiującego pasek menu. Informacje dodatkowe na temat makr definiujących pasek menu można znaleźć w paragrafie "Co to są makra paska menu?", dalej w tym rozdziale. Uwaga. Podmenu "Dodatki" wraz z listą dodatków zainstalowanych w programie Microsoft Access jest wyświetlane w menu "Plik" każdego wbudowanego paska menu. Jeśli wbudowany pasek menu jest wykorzystywany jako wzorzec dla dostosowanego paska menu, w Generatorze menu jest wyświetlana nazwa podmenu "Dodatki", bez wykorzystanych w nim poleceń. Lista dodatków jest automatycznie wypełniana gdy użytkownik wybierze polecenie "Dodatki" z menu "Plik". Jeśli Generator menu jest wykorzystywany do dodania innych poleceń do podmenu "Dodatki" (czego się nie zaleca), polecenia te są wyświetlane przed dodatkami w podmenu "Dodatki". Więcej informacji na temat tworzenia i instalacji dodatków, tak aby były wyświetlane w podmenu "Dodatki" można znaleźć w rozdziale 15, "Korzystanie z bibliotecznych baz danych oraz bibliotek dołączanych dynamicznie". Przykład. Tworzenie dostosowanego paska menu dla formularza "Zamówienia" bazy danych Northwind. Informacje dodatkowe na temat zapobiegania wprowadzaniu zmian projektów obiektów przez użytkowników można znaleźć w rozdziale 14, "Zabezpieczanie aplikacji". Pracownicy firmy Northwind chcieliby, aby formularz "Zamówienia" był wyposażony w dostosowany do ich potrzeb pasek menu. Niektóre polecenia we wbudowanym pasku "Widok Formularz" są niepotrzebne, natomiast potrzebne jest polecenie, za pomocą którego można drukować fakturę bieżącego zamówienia. Poniżej są przedstawione czynności, które należy wykonać, aby utworzyć dostosowany pasek menu i dołączyć go do formularza "Zamówienia". Czynność pierwsza: Uruchomienie Generatora menu. Otwórz formularz "Zamówienia" w widoku Projekt, a następnie wyświetl jego właściwości. Zaznacz właściwość "Pasek menu" (MenuBar), a następnie kliknij przycisk "Buduj" po prawej stronie właściwości. Aby wykorzystać pasek menu "Widok Formularz" jako wzorzec dla dostosowanego paska, wybierz opcję "Formularz" w pierwszym polu dialogowym Generatora menu. Czynność druga: Usunięcie niepotrzebnych menu i poleceń. Ponieważ pracownicy zawsze używają formularza "Zamówienia" w widoku Formularz, nie są im potrzebne polecenia w menu "Widok", przełączające widoki - a nawet nie jest wskazane, aby się przełączali do widoku Projekt. W dolnej połowie okna Generatora menu, usuń wiersz menu "Widok" oraz wiersz każdego z poleceń w tym menu, włącznie z poleceniem "Opcje". (Polecenie Opcje zostanie później dodane do menu "Edycja"). Rys. nr 27 Rysunek przedstawia dolną część okna "Generator menu". W liście wyboru z menu i poleceniami podświetlony jest wiersz menu "&Widok". Ponad listą wyboru – przyciski: ze strzałkami w lewo, w prawo, w górę, w dół, oraz przyciski: "Następny", "Wstaw", "Usuń". Aby usunąć wiersze menu i poleceń, zaznacz każdy wiersz a następnie wybierz przycisk "Usuń". Pracownicy także nie potrzebują poleceń w menu "Edycja", służących do tworzenia połączeń lub wklejania obiektów OLE w pola, a także nie potrzebują niektórych poleceń z menu "Plik". Usuń następujące polecenia: - Polecenie "Wstaw obiekt" i wszystkie dalsze polecenia w menu "Edycja". - Podmenu "Nowe" i wszystkie jego polecenia ("Tabele", "Zapytania" itd.), polecenia "Zachowaj formularz" i "Zachowaj formularz jako", "Podgląd wydruku", "Drukuj" i "Uruchom makro" z menu "Plik". Czynność trzecia: Dodanie polecenia. Pracownicy uruchamiają aplikację "Faktury" ze swoich stacji roboczych, każdy z użytkowników może ustawić indywidualne opcje. Polecenie "Opcje" będzie dodane na końcu menu "Edycja". Najpierw wstaw nowy wiersz na dole listy poleceń menu "Edycja", po ostatnim pasku oddzielającym. Rys. nr 28 Rysunek przedstawia dolną część okna "Generator menu", jak na rysunku nr 27. W liście wyboru z menu i poleceniami wstawiono nowy wiersz. Aby wstawić wiersz na końcu menu Edycja, zaznacz &Rekordy (pierwszy wiersz następnego menu po menu "Edycja"), a następnie wybierz przycisk "Wstaw". W polu "Opis" wpisz "&Opcje..." w celu zdefiniowania nazwy polecenia. Wykorzystaj przycisk "Strzałka w prawo" do wprowadzenia wcięcia. Następnie zaznacz akcję WykonajElementMenu (DoMenuItem) w polu "Akcja". Jest to akcja wykorzystywana do wykonania polecenia programu Microsoft Access. Ustaw jej argumenty na wykonanie polecenia "Opcje" z menu "Widok" z paska menu "Widok Formularz". Rys. nr 29 Rysunek przedstawia górną część okna "Generator menu – [Zamówienia pasek menu]", które zawiera: - pole edycji "Tytuł:" z wpisem "&Opcje...", - lista rozwijalna "Akcja:" z pozycją "WykonajElementMenu", - pole edycji "Argument(y):" z pozycją "Formularz;Widok;Opcje...". Obok znajduje się przycisk z wielokropkiem. (Kliknij na ten przycisk, aby zaznaczyć argumenty na liście.), - 4 przyciski: "OK", "Anuluj", "Pomoc", "Duplikat", - pole edycji "Tekst paska stanu:" – bez wpisu. Dla polecenia Opcje jest wykorzystywany tekst wbudowanego paska stanu, toteż nie trzeba wprowadzać innego. (Jeśli tekst paska stanu zostanie wprowadzony, to będzie zignorowany.) Wskazówka. Zgodnie z konwencją, po nazwie polecenia "Opcje" należy dodać wielokropek (...), ponieważ wybranie tego polecenia powoduje wyświetlenie pola dialogowego, w którym użytkownicy zaznaczają opcje. Wielokropek jest wizualnym znakiem dla użytkowników, że przed faktycznym wykonaniem polecenia będą jeszcze mieli szansę wprowadzenia dodatkowych informacji. Polecenia powodujące natychmiastowe wykonanie akcji, takie jak polecenie "Kopiuj" z menu "Edycja", nie mają na końcu wielokropka. Informacje dodatkowe na temat tworzenia dostosowanego pola dialogowego można znaleźć w rozdziale 4, "Wykorzystywanie formularzy do gromadzenia, wyświetlania i filtrowania informacji". Czynność czwarta: Dodanie polecenia uruchamiającego makro. Aplikacja "Faktury" zawiera makro o nazwie "Drukuj fakturę", które powoduje wyświetlenie dostosowanego pola dialogowego, wykorzystywanego do drukowania faktury dla bieżącego zamówienia. Do menu "Plik" zostanie dodane polecenie uruchamiające to makro. Najpierw wstaw nowy wiersz w menu "Plik". W polu "Opis" wpisz "Drukuj &fakturę...", a następnie kliknij przycisk "Strzałka w prawo", aby wprowadzić wcięcie. Zaznacz akcję UruchomMakro (RunMacro) w polu "Akcje", a następnie wprowadź argument uruchamiający makro "Drukuj fakturę". W polu "Tekst paska stanu" wpisz tekst, który ma być wyświetlany, gdy użytkownik zaznaczy polecenie. Rys. nr 30 Rysunek przedstawia górną część okna "Generator menu, podobnie jak na rysunku nr 29, z tą różnicą, że: - w polu edycji "Tytuł:" jest wpis: "Drukuj &fakturę...", - w liście rozwijalnej "Akcja:" – pozycja "UruchomMakro", - w polu edycji "Argument(y):" – wpis "Drukuj fakturę", - w polu edycji "Tekst paska stanu:" – wpis "Drukuj fakturę dla bieżącego zamówienia". Obecnie pracownicy mogą drukować fakturę dla bieżącego zamówienia, wybierając polecenie z dostosowanego paska menu. Wskazówka. Jeśli zamierzasz włączyć do menu polecenia uruchamiające makra, lecz te makra jeszcze nie istnieją, można mimo to zdefiniować działający pasek menu. Zacznij od utworzenia makra wykorzystującego akcję PoleKomunikatu (MsgBox) do wyświetlania prostych komunikatów w rodzaju "Tu jest menu poleceń". Następnie, dla każdego polecenia uruchamiającego nieistniejące makro, zamiast niego wykorzystaj makro "PoleKomunikatu". Dzięki temu można zobaczyć menu i polecenia na pasku menu, zanim zostaną napisane wszystkie makra. Po utworzeniu tych makr można wykorzystać Generator menu do edycji paska menu i zastąpić makro "PoleKomunikatu" makrem docelowym. Czynność piąta: Zachowywanie paska menu. Po zakończeniu definiowania paska na temat makr menu wybierz przycisk "OK". Nazwij pasek "Pasek menu faktur". Zostanie utworzone makro, w którym są określone menu pojawiające się na pasku i nazwa "Pasek menu faktur". Za pomocą Generatora menu jest także tworzona grupa makr dla każdego menu na pasku. Właściwość formularza "Pasek menu" (MenuBar) zostaje ustawiona na nazwę makra paska menu. Informacje dodatkowe na temat makr definiujących pasek menu można znaleźć w paragrafie "Co to są makra paska menu?", dalej w tym rozdziale. Tworzenie podmenu Każde tworzone menu może zawierać jeden lub więcej poziomów podmenu. Podmenu stanowi odgałęzienie innego menu i są w nim wyświetlane jego własne polecenia. Potrzeba zastosowania podmenu może wystąpić w przypadku, gdy: - Pasek menu jest zapełniony. Można dodać inne menu jako podmenu, zamiast menu najwyższego poziomu, wyświetlanego na pasku menu. - Trzeba wyróżnić powiązanie dwóch elementów menu Informacje dodatkowe na temat wykorzystania pól dialogowych można znaleźć w rozdziale 4, "Wykorzystywanie formularzy do gromadzenia, wyświetlania i filtrowania informacji". Jeśli jednak na pasku jest jeszcze miejsce, lepszym rozwiązaniem jest utworzenie dodatkowego menu najwyższego poziomu zamiast podmenu. Dzięki temu, po otwarciu menu są widoczne wszystkie jego polecenia. Ograniczenie liczby poziomów menu jest dobrą zasadą projektową, dzięki której użytkownicy nie gubią się w trakcie nawigacji po interfejsie aplikacji. W przypadku potrzeby wprowadzenia podmenu, należy rozważyć zastosowanie zamiast niego pola dialogowego. Pola dialogowe pozwalają użytkownikom określić wiele wyborów w jednym miejscu. Na rysunku przedstawiono menu z dwoma poziomami podmenu. Rys. nr 31 Rysunek przedstawia fragment okna o tytule "Microsoft Access". Na pasku menu podświetlona jest opcja "Plik", obejmująca polecenia: "Zachowaj rekord", "Zamknij", "Drukuj raporty", "Ustawienie wydruku...", "Koniec". Polecenie "Drukuj raporty" jest podświetlone, obok znajduje się podmenu 1 z poleceniami: "Faktura", "Klienci – etykiety adresowe", "Raporty sprzedaży". Podświetlone jest polecenie "Raporty sprzedaży" a obok znajduje się podmenu 2 z pozycjami: "Plany sprzedaży" (podświetlona), "Średnie sprzedaży", "Procenty sprzedaży". Należy zauważyć, że wszystkie nazwy podmenu mają po prawej stronie symbol strzałki zwróconej w prawo. Jest on dodawany automatycznie, jako znak podmenu. Rys. nr 32 Rysunek przedstawia osobno, te same co na rysunku nr 31, podmenu. Przy pozycjach "Drukuj raporty" i "Raporty sprzedaży" po prawej stronie znajdują się strzałki, będące symbolami wskazującymi nazwę podmenu. Elementami podmenu mogą być polecenia, paski oddzielające i nazwy podmenu. Na następnym rysunku przedstawiono sposób wyświetlania nazw i elementów podmenu z poprzedniego przykładu w dolnej połowie okna "Generatora menu". Rys. nr 33 Rysunek przedstawia dolną część okna "Generator menu". Zawiera ono: - przyciski: 4 ze strzałkami (w lewo, w prawo, w górę, w dół), "Następny", "Wstaw", "Usuń", - pole listy z nazwą menu "Plik", z nazwami podmenu oraz elementami podmenu. Aby utworzyć podmenu: 1. Utwórz element menu, który ma stanowić nazwę podmenu. 2. Utwórz elementy, które będą wyświetlane w nowym podmenu i wprowadź odpowiednie wcięcia klikając przycisk "Strzałka w prawo". W oknie Generatora menu każdy poziom wcięcia jest poprzedzony przez wielokropek (...). Aby usunąć jeden poziom wcięcia, zaznacz element, a następnie wybierz przycisk "Strzałka w lewo". Co to są makra paska menu? W trakcie tworzenia dostosowanego paska menu za pomocą Generatora menu tworzony jest szereg specjalnych makr, które definiują pasek menu. Należą do nich: - Makro paska menu zawierające akcję DodajMenu (AddMenu) dla każdego menu na dostosowanym pasku menu. Jest to makro określające, które menu są wyświetlane na pasku. Makro to ma nazwę podaną przez projektanta w trakcie tworzenia paska menu. - Jedna grupa makr dla każdego menu i każdego podmenu na pasku. Każda grupa makr definiuje polecenia tego menu lub podmenu. Na przykład, jeśli dostosowany pasek menu zawiera menu "Plik", zostanie utworzona grupa makr dla menu "Plik", zawierająca jedno makro dla każdego polecenia menu. Jeśli dostosowany pasek menu zawiera menu "Edycja", zostanie utworzona następna grupa makr, definiująca polecenia tego menu. Grupa makr określająca menu jest nazywana według nazwy paska menu i menu. Jeśli dostosowany pasek menu zostanie nazwany "Mój pasek menu", a są na nim umieszczone dwa menu - menu "Plik" i menu "Edycja" - zostanie utworzone makro paska menu o nazwie "Mój pasek menu", definiujące ten pasek, grupa makr o nazwie "Mój pasek menu plik" definiująca menu "Plik" i grupa makr o nazwie "Mój pasek menu edycja", definiująca menu "Edycja". Na rysunku przedstawiono makro paska menu, definiujące pasek menu dla formularza "Zamówienia" aplikacji "Faktury" oraz grupę makr definiujących polecenia menu "Plik" na tym pasku. Rys. nr 34 Rysunek przedstawia fragment okna "Microsoft Access" z podświetloną opcją "Plik" na pasku menu i z rozwiniętym menu. Obok znajduje się okno "Makro: Zamówienia pasek menu", w nim pole "Akcja" z pozycją "DodajMenu" (powtórzona 5 razy) oraz poniżej - pola edycji: "Nazwa menu" (z wpisem "&Plik"), "Nazwa makra menu" (z wpisem "Zamówienia pasek menu_Plik"), "Tekst paska stanu" (z wpisem "Zachowuje rekord, drukuje fakturę"). Pasek menu jest tworzony przez makro paska menu, zawierające akcje DodajMenu (AddMenu). Poniżej dwóch w/w okien znajduje się okno "Makro: Zamówienia pasek menu_Plik". Zawiera ono pola: "Nazwa makra", "Akcja", "Komentarz". Każde makro tworzy grupa makr wywoływana przez akcję DodajMenu (AddMenu) w makrze paska menu. Tekst paska stanu jest ustawieniem dla argumentu "Tekst paska stanu" akcji DodajMenu (AddMenu), definiującej to menu. Tekst paska stanu polecenia wykorzystującego akcje UruchomMakro (RunMacro) i UruchomKod (RunCode) do uruchomienia makra lub funkcji Access Basic, jest wyświetlany w kolumnie "Komentarz", w wierszu zawierającym akcję definiującą polecenie. (Dla poleceń wykorzystujących akcję WykonajElementMenu (DoMenuItem) do wykonania polecenia, wykorzystywany jest wbudowany komunikat paska stanu Microsoft Access.) Pasek menu jest dołączany do formularza lub raportu przez ustawienie jego właściwości "Pasek menu" (MenuBar) na nazwę makra paska menu, definiującego ten pasek. Na przykład, właściwość "Pasek menu" (MenuBar) formularza "Zamówienia" jest ustawiona na "Pasek menu faktur", czyli nazwę makra zawierającego akcje DodajMenu (AddMenu). Jeśli Generator menu jest uruchamiany z właściwości "Pasek menu" (MenuBar) formularza lub raportu w widoku Projekt, właściwość "Pasek menu" (MenuBar) jest ustawiana automatycznie. Właściwość "Pasek menu" (MenuBar) można także ustawić za pomocą makra lub języka Access Basic. Informacje dodatkowe można znaleźć w Pomocy, wyszukując temat "MenuBar". Jeśli menu zwiera podmenu, makro podmenu powoduje wykonanie akcji DodajMenu (AddMenu), co z kolei powoduje przywołanie grupy makr podmenu. Rys. nr 35 Rysunek przedstawia rozwinięte menu "Plik" z poleceniami: "Zachowaj rekord", "Zamknij", "Drukuj raporty" (ze strzałką w prawo), "Ustawienie wydruku...", "Koniec". Obok znajduje się okno "Makro: Zamówienia pasek menu_Plik", a w nim zawarte są pola: "Nazwa makra" (z pozycjami: "Zachowaj rek&ord", "&Zamknij", "Drukuj &raporty", "&Ustawienie wydruku...", "Konie&c"), "Akcja" (z pozycjami: 2 razy "WykonajElementMenu", "Dodaj menu", 2 razy "WykonajElementMenu". Menu "Plik" jest definiowane przez grupę makr. Nazwa podmenu jest zdefiniowana przez argument "Nazwa menu" akcji DodajMenu (AddMenu ), dodającej podmenu. Z kolei tekst paska stanu podmenu jest zdefiniowany przez argument "Tekst paska stanu". Edycja paska menu Do edycji dostosowanego paska stanu można wykorzystać Generator menu albo można ręcznie edytować makra i grupy makr określających pasek menu. Aby wykorzystać Generator menu do edycji dostosowanego paska menu, dołączonego do formularza lub raportu: 1. Zaznacz właściwość "Pasek menu" (MenuBar) formularza lub raportu, a następnie kliknij przycisk "Buduj", po prawej stronie właściwości. Zostanie wyświetlone pole dialogowe Generator menu z wypełnionymi definicjami dostosowanego menu formularza lub raportu. 2. Wykonaj edycję menu i poleceń, a następnie wybierz przycisk "OK". Zostaną automatycznie zmodyfikowane makra definiujące pasek menu i jego menu. Aby wykorzystać Generator menu do edycji dowolnego, dostosowanego paska menu: 1. Z menu "Plik" dowolnego okna wybierz polecenie "Dodatki", a następnie wybierz polecenie "Generator menu". Zostanie wyświetlone pole dialogowe "Generator menu", w którym można zaznaczyć makro paska menu, przewidziane do edycji. 2. Zaznacz makro paska menu, który ma być edytowany. Zaznacz makro paska menu zawierające tylko akcje DodajMenu (AddMenu) Rys. nr 36 Rysunek przedstawia pole dialogowe o tytule "Generator menu". Zawiera ono: - okienko "Edytuj pasek menu:" z pozycjami: "AutoExec" (podświetlona), "AutoKlawisze", "Drukuj bieżący rekord", "Drukuj fakturę", "Pokaż", "Zamówienia pasek menu", "Zamówienia pasek menu_Edycja", "Zamówienia pasek menu_Okno", "Zamówienia pasek menu_Plik", "Zamówienia pasek_Pomoc", "Zamówienia pasek menu_Rekordy", - 4 przyciski: "Edycja", "Nowy", "Usuń", "Anuluj". 3. Wybierz przycisk "Edycja" Zostanie wyświetlone pole dialogowe "Generator menu" z wypełnionymi definicjami dostosowanego menu formularza lub raportu. (Jeśli zostało zaznaczone makro zawierające akcje inne niż DodajMenu (AddMenu ), zostanie wyświetlony komunikat, że makro zawiera akcje, które nie są obsługiwane i makro nie zostanie otwarte.) 4. Wykonaj edycję menu i poleceń, a następnie wybierz przycisk "OK". Makra definiujące pasek menu zostaną zastąpione nowymi, w których są uwzględnione wprowadzone zmiany. Aby ręcznie edytować makra definiujące pasek menu: - Otwórz każde makro w widoku Projekt i wykonaj jego edycję Jeśli makra definiujące pasek menu były tworzone lub edytowane samodzielnie przez projektanta, może on wykorzystać do edycji Generator menu, jeśli będą przestrzegane następujące zasady: - Każdy wiersz w makrze paska menu musi zawierać akcję DodajMenu (AddMenu). Jeśli niektóre wiersze zawierają inne akcje, makro nie zostanie otwarte do edycji. - W grupach makr definiujących poszczególne menu należy stosować tylko makra o pojedynczej akcji, z akcjami WykonajElementMenu (DoMenuItem), UruchomMakro (RunMacro) lub UruchomKod (RunCode) do definiowania poleceń menu. Jeśli grupa makr zawiera inne akcje lub makra o wielu akcjach, edycja paska menu jest niemożliwa. Jeśli makra określające pasek menu były ręcznie tworzone lub edytowane, przy czym została im nadana jedna z poniższych cech, przed otwarciem paska menu do edycji zostanie wyświetlone ostrzeżenie, że cecha będzie usunięta w chwili zachowywania paska menu. Można wówczas podjąć decyzję, czy wykorzystywać Generator menu do edycji paska menu. A oto wspomniane cechy: - Puste wiersze lub wiersze, w których jest wypełniona tylko kolumna "Komentarz". - Nazwy grup makr definiujących poszczególne menu, nie spełniające konwencji nazewnictwa Generatora menu. (Nie zaleca się zmian nazw tych grup makr). - Warunki w makrze paska menu. Uwaga. W makrze paska menu, w kolumnie "Warunek" wiersza zwierającego akcję DodajMenu (AddMenu), można wprowadzić warunek w celu wyświetlania lub ukrywania menu. Warunek może być zastosowany tylko w makrach definiujących menu wyświetlane na pasku. Nie wolno stosować warunków w grupach makr definiujących polecenia i podmenu w menu.