Wiele razy po czasach Windows 98 doświadczyliśmy, że niektóre dialogi tracą kolejność Z i wracają do poprzedniej formy.Delphi - Jak zapobiegać przemieszczaniu się Forms/MsbBox pod wcześniejszym formularzem?
Na przykład:
Dialog1.ShowModal;
Dialog1.OnClickButton() : ShowMessage('anything');
Gdy pojawi MessageBox, to czasami nie ma ostrość i zostanie przeniesiony pod Dialog1. Użytkownicy są zdezorientowani, mówią: Moja aplikacja zamarła !!! Ale jeśli używają Alt + Tab, aby przejść do innej aplikacji iz powrotem, fokus powraca do MessageBox i będzie to okno na pierwszym planie.
Doświadczyliśmy tego dzięki ShowMessage, MessageBox, zwykłym formularzom, a także formularzom QuickReport.
Czy ktoś o tym wie? Czy jest to błąd systemu Windows? Jak możesz temu zapobiec? Jak to złapać?
Dzięki za pomoc: dd
naprawdę powiedział, że po Win98, więc wszystkie systemy operacyjne (także Win7) są dotknięte tym problemem. Użyliśmy Delphi 6 Prof, więc właściwości nie działają z domyślnymi formularzami.
Ktoś powiedział, że okna dialogowe wiadomości można kontrolować za pomocą MessageBox + MB_APPLMODAL. To dobra wiadomość, ale mamy wiele starych formularzy i komponentów, narzędzia firm trzecich.
Ciężka praca polega na złożeniu nowego wniosku i zastąpieniu formularzy.
Ale spróbujemy to zrobić.
Myślę, że odpowiedź brzmi: problem z połową aplikacji i połowa problemu z systemem Windows. Jeśli system Windows czasami to obsługuje, a czasem nie, wydaje się, że jest to błąd systemu Windows. Ale jeśli możemy wymusić dobre modalne tworzenie okien, to jest błąd programowania.
Czy ktoś może mi wyjaśnić, co oznacza flaga WS_POPUP? Czy ma jakiś efekt uboczny, czy nie?
podziękowań: dd
Często też mam ten problem, nie znalazłem też odpowiedzi. Czekam na to, co ludzie wymyślili. –
Z jaką wersją to się dzieje? –
jesteś systemem Windows 98? Łał. Jak Sertac pyta, wersja Delphi jest krytyczna. Delphi 2007 i nowsze wersje mają obejście. –