Warsztat: Własna ikonka i własne napisy na przyciskach w MsgBox, dezaktywacja przycisku X.
BraMsgIcoX.zip
Autor: Zbigniew Bratko (brazby@poczta.onet.pl)
Baza w formacie MsAccess 97
92kB, 17 października 2001
Opis problemu:
Okna dialogowe MsgBox nie zawsze odpowiadają naszym potrzebom,
zwłaszcza, gdy chcielibyśmy otrzymać nieco bardziej rozbudowaną odpowiedź
niż Tak, Nie, Zaniechaj.
Rozwiązanie:
Co można wyprawiać z poczciwym i wydawałoby się trochę nudnym MsgBox-em
zademonstrował Zbigniew Bratko. Przysłany przez Zbyszka przykład o nazwie
BraMsgIcoX.zip w efektowny sposób steruje niemal wszystkimi elementami
okna dialogowego - ikonką , napisami na przyciskach,
przyciskiem X na pasku tytułowym, ale oddajmy głos autorowi:
Przysyłam Ci kolejny mój wytwór p.t BraMsgIcoX.
1. Wywietla własną ikonę i własny tytuł na pasku okna MsgBox.
2. Zmienia napisy na przyciskach i wyświetla własną ikonę na MsgBox-ie.
3. Dezaktywuje symbol X oraz pozycję X Zamknij Alt+F4 w menu systemowym
formularza oraz blokuje kombinacje klawiszy ( Ctrl+F4) oraz (Alt+F4).
4. Dezaktywuje całkowicie dowolne okno - brak jakiegokolwiek dostępu do okna.
Nie jestem całkowicie zadowolony z funkcjonowania BraMsgIcoX jako całości.
Ograniczenia stosowania przykładowych funkcji wynikają ze zbyt małej mojej
wiedzy na temat API.
1. Ikona okna MsgBox jest wpisywana na okno, a nie do niego,
więc nie jest z nim związana. Po zasłonięciu i odświeżeniu okna MsgBox,
ikona znika.
2. Miałem bardzo duży problem z pierwszym wyświetleniam ikony MsgBox po restarcie
Windows, gdyż ikona wskakiwała pod MsgBox, po wielu próbach okazało się
że przeniesienie kodu funkcji Public Function WstawTytIco(...) z modułu
klasy formularza do modułu standardowego rozwiązało problem (też nie
wiem czemu).
3. Dezaktywacja X - formularze (jeśli nie są PopUp) mają oprócz
menu systemowego swoje własne menu, do którego w żaden sposób nie
potrafię dotrzeć. Co prawda GetMenu zwraca jaki uchwyt, ale GetSubMenu
lub GetMenuItemCount nic nie zwraca. Nie mam pojęcia jak to zrobić. Moim
zdaniem BraMsgIcoX jest zasygnalizowaniem możliwości zmian niektórych właciwości
obiektów. (...) być może znajdą się chętni, aby poprawić niedoróbki tego projektu.
Informacja:
Archiwum BraMsgIcoX.zip należy rozpakować z zachowaniem struktury katalogów. Wszystkie pliki ICO muszą być umieszczone w podkatalogu o nazwie Ikony.