Showmodal dziwne losowe zachowanie

Showmodal dziwne losowe zachowanie
RD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 212
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.

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
MA
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
ModalForm.PopupMode := pmExplicit;
ModalForm.PopupParent := Self; //Self odnosi się do formy-parenta dla ModalForm
ModalForm.ShowModal; 
Opi
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1034
0

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

RD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 212
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ą:

Kopiuj
 raise Exception.Create('Error Message');

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

X0
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 24
0

nie rozumiem Twojego problemu:

Kopiuj
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

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
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.

X0
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 24
0

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

Opi
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1034
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.