2013-01-11 8 views
7

Utrzymuję aplikację oryginalnie napisaną w Delphi 7 i przeniesioną do Delphi XE.Okno aplikacji Delphi z zamówieniem i właściwość MainFormOnTaskBar

W systemie Windows 7 wystąpiły pewne problemy, takie jak okna modalne pojawiające się pod głównym oknem i ewentualna niemożność interakcji z programem, ponieważ użytkownik powinien wejść w interakcję z formą modalną i jest to niemożliwe, ponieważ znajduje się pod głównym oknem .

Aby uniknąć tego problemu, zmieniłem właściwość projektu na MainFormOnTaskBar na True (starsze projekty nie mają tej właściwości) i teraz kontynuuję pracę z tym samym projektem. Czytając dokumentację znalazłem nową właściwość formularza PopupParent. Czy użycie tej właściwości jest obowiązkowe, jeśli ustawię MainFormOnTaskBar na True? Czy istnieje inne rozwiązanie tego problemu?

Odpowiedz

5

Tak, dla form modalnych, że „pop-under”, trzeba ustalić kolejności z wykorzystaniem PopupParent lub PopupMode, jak wyjaśnił Allen Bauer w swoim blogu PopupMode and PopupParent.

MainFormOnTaskBar dokumentacja mówi, że ma niewiele wspólnego z pop-under: to jest do wyboru, gdy informacja Tytuł/ikony na pasku zadań uzyskuje Od (Application lub MainForm).

Jednak, MainFormOnTaskBar := True robi więcej i this article by Steve Trefethen (ex członek zespołu Delphi) wyjaśnia więcej szczegółów.

Ten "więcej" ma konsekwencje z rzędu Z. Niektórzy mogą chcesz więcej, a może mniej, więc oto kilka przykładów:

uwaga, że ​​zwalczanie problemów wprowadzone z Vistą były niemałym wyczynem do rozwiązania, ponieważ Microsoft wprowadził o wiele więcej funkcjonalności, ale także zabrał niektóre aplikacje, które kiedyś miały wolność. Przeczytaj these dwa articles autorstwa Nathanial Woolls, aby uzyskać lepsze wrażenie na nich.

+4

Niestety, 'MainFormOnTaskBar' urósł z biegiem lat, aby zrobić więcej niż tylko zdecydować, który HWND pojawi się na pasku zadań. Zasadniczo jest używany do włączania/wyłączania wielu funkcji Vista + w VCL (zamiast tworzenia nowych właściwości w celu zarządzania nimi). I ** TO ** odgrywają rolę w wyborze HWND używanego do obsługi z-order, gdy 'PopupParent' jest zerowy. –

+0

Czas dla @ allen-bauer na zamieszczenie nowego wpisu w blogu (: –

+0

Czy istnieje dokumentacja dotycząca sposobu, w jaki 'MainFormOnTaskBar' wpływa na okno z-zamówienia? Zaleca się pozostawienie' true' dla standardowej aplikacji vcl? – ventiseis

Powiązane problemy