Showmodal dziwne losowe zachowanie

0

Witam, Napotkałem w swojej aplikacji na dziwne zachowanie z którym walczę już od bardzo dawna mianowicie czasami okna które wywołuje przez ShowModal są wyświetlane pod formą główną co powoduje zawieszenie aplikacji. Wtedy pomaga tylko jedna rzecz CTRL+ALT+DEL -> menedżer zadań -> nasza aplikacja -> prawy przycisk myszy -> minimalizuj. Okno główne jest minimalizowane a okno modalne zostaje odkryte przez co można je zamknąć.

Dodam że korzystam z nakładki graficznej AlphaControls ale nie wydaje mi się aby w niej był problem.

0
ModalForm.PopupMode := pmExplicit;
ModalForm.PopupParent := Self; //Self odnosi się do formy-parenta dla ModalForm
ModalForm.ShowModal; 
0

Tak ma wiele aplikacji, ale nie trzeba jej zamykać. Wystarczy ALT + TAB

0

Nie wiem czy to ma jeszcze jakieś znaczenia ale wywołanie takiej procedury powoduje że okienko czasami także jest zasłonięte przez naszą formę główną:

 raise Exception.Create('Error Message');

Najbardziej dziwi mnie fakt że to się dzieje sporadycznie a nie zawsze.

0

nie rozumiem Twojego problemu:

var Forma: TForm;


Forma := TForm.Create(Self);
Forma.ShowModal;

 

i tu nie ma miejsca na dziwne zachowanie... forma jest modalna i nie da się kliknąć na "rodzic" ponieważ jest Disabled

0
xor01 napisał(a)

i tu nie ma miejsca na dziwne zachowanie...

Nawet nie zdajesz sobie sprawy z tego, jak dziwnie potrafią się zachowywać okna modalne i przez nie cała aplikacja...


Sam dopiero co uporałem się z problemem minimalizacji wszystkich okien aplikacji, jeśli metoda Application.Minimize wywołana zostanie z okna modalnego; Co dziwne, ukrywa się jedynie główny formularz (Application.MainForm), a pozostałe pozostają widoczne; Problem rozwiązałem w ten sposób, że aplikacja nie będzie się minimalizować...

Głupie, ale jak nie potrafi się rozwiązać danego problemu, to trzeba z niego zrezygnować i wymyślić rozwiązanie zastępcze; Oczywiście gorsze rozwiązanie, bo pierwotnie moja apka miała być rozciągnięta na cały ekran i przykrywać nawet pasek zadań; Aby otworzyć system pomocy w przeglądarce (z dowolnego formularza, nawet modalnego), trzeba by zminimalizować program - inaczej okno przeglądarki będzie zawsze pod oknami aplikacji i nie będzie do niego dostępu; A minimalizowanie wszystkich okien z poziomu okna modalnego nie ukrywa wszystkich formularzy;

W takim razie aplikacja musi posiadać normalne okna (ze stylem fsNormal zamiast fsSystemStayOnTop), a otwarcie odpowiedniej strony systemu pomocy nie będzie się wiązać z minimalizowaniem - przeglądarka otworzy się lub pokaże ponad oknami aplikacji;

To taki lekki off-top w celu uświadomienia, iż WTFy czychają wszędzie.

0

podeślij jakiś kod który sprawia Ci trudności

0

Najlepszym rozwiązaniem jest zastąpienie komunikatów poprzez własne zrobione na formie.

Nie dość, że masz nieograniczone pole to jej wyglądu, to jeszcze możesz ustawić, aby to okno było zawsze na wierzchu, nie mówiąc już o takich rozwiązaniach jak np: czasowy Timer wyrzucający formę na wierzch.

1 użytkowników online, w tym zalogowanych: 0, gości: 1