2011-03-30 88 views
13

你如何讓表單出現在Delphi的任務欄上?例如,在Firefox中,當您在新窗口中打開頁面時,它會在任務欄上創建另一個窗口,而不會創建新的過程。目前我的Delphi應用程序在單擊按鈕時會打開一個新表單,但任務欄上仍然只有一個東西,因此您無法在主窗體和按鈕之間創建的窗體之間進行Alt-Tab點擊。如何更改它,以便新窗體出現一個新的任務欄按鈕?我當前的代碼如下所示:如何獲取不是主窗體的窗體的任務欄按鈕?

procedure Form1ButtonClick(Sender: TObject); 
begin 
    Form2.Show; 
end; 

我一直在瞎搞與CreateWindowEx,但我非常希望找一個比直接使用Windows API簡單的解決方案。

回答

25

如果我知道你想什麼正確的,你可以通過重寫它的CreateParams程序,如Minimize child forms independent of the main form delphi.about.com文章解釋說,像這樣的顯示任務欄上的輔助形式:

interface 

type 
    TMyForm = class(TForm) 
    ... 
    protected 
    procedure CreateParams(var Params: TCreateParams) ; override; 
    ... 

implementation 

procedure TMyForm.CreateParams(var Params: TCreateParams) ; 
begin 
    inherited; 
    Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW; 
    Params.WndParent := 0; 
end; 
+0

這是完美的。謝謝! – 2011-03-31 00:04:00

+11

About.com文章錯誤有關如何設置WndParent。舊的新事物解釋了爲什麼[使桌面成爲應用程序窗口的父項是錯誤的](http://blogs.msdn.com/b/oldnewthing/archive/2004/02/24/79212.aspx)。我在這裏修復了代碼。 – 2011-03-31 00:06:36

+0

感謝您更正@Rob和@David。 :) – jachguate 2011-03-31 15:34:20

1

如果不使用這條線是更好的形式順序:

Params.WndParent := 0; 
相關問題