2011-04-14 46 views
1

我有一個調用form2的主窗體(form1),它是一個隱藏窗體。 form2調用一個模式形式(form3),這也是一個逗號形式。當form3模態窗體調用colordialog時,顏色對話框在form3後面打開。Delphi TColorDialog在stayOnTop形式後面打開

要在form3前面設置打開顏色對話框的內容?

我使用D2009

感謝

+0

您是否安裝了Delphi 2009的Update 3?如果是,仍然不行,那麼將'Application.ModalPopupMode'設置爲'pmAuto'或'pmExplicit'。 – 2011-04-14 17:41:15

回答

1

德爾福(約D2007)推出了重載Execute方法都接受一個父窗口句柄作爲參數的標準對話框。更改您的來電顯示對話框:在這種情況下

if ColorDialog1.Execute(Handle) then 
begin 
    // Do whatever 
end; 

Handle將是最佳狀態停留多數民衆贊成顯示TColorDialog的窗口句柄。如果您從另一個窗口執行對話框,則需要將頂端窗體的句柄傳遞給對話框。

該文檔是here(XE版本,但它仍然適用於D2009)。

+1

如果應用程序的「ModalPopupMode」爲'pmNone',則ParentWnd參數*被忽略。即使它不是'pmNone',如果您將活動窗體的句柄以外的其他東西傳遞給它,設置它真的很有意義,IOW如果您將對話框放在非活動窗體之前的窗體前面。因爲,如您所指的鏈接所示,如果沒有提供ParentWnd,它已經是使用的活動表單的句柄。因此,這不會有助於OP的問題。 – 2011-04-15 06:39:01