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.