2014-01-30 43 views
1

我使用的Delphi XE4和試圖創建第二形式,並將其設置爲背景而第一形式是透明的(的AlphaBlend = TRUE; AlphaBlendValue = 220)爲什麼SendToBack未用Delphi XE4工作

uses Unit2; 

    procedure TForm1.Button1Click(Sender: TObject); 
    begin 
     Form2.Show; 
     Form2.SendToBack; 
    end; 

上面的代碼與Delphi 7一起工作,但與Delphi XE4(Form1仍然在Form1上)不兼容。任何人都可以告訴我爲什麼代碼不適用於XE4?以及如何使它工作?

在此先感謝。

回答

2

檢查Form2的PopupMode屬性的設置。這很可能是因爲Form1的窗口成爲Form2窗口的父窗口,這會阻止Form2移到Form1後面。在D7中不存在PopupMode(和PopupParent)屬性,它是在較新版本中引入的,用於解決VCL在早期版本中遇到的z-order錯誤。

閱讀下面的文章BLOB更多細節:

PopupMode and PopupParent

+0

的Form2.PopoupParent屬性是零(空)默認情況下,我沒有改變它。 – user3251423

+0

如果我將Form1.PopupParent設置爲Form2,則SendToBack正在工作(Form2發送回Form1),但是當我關閉應用程序時發生錯誤。 使用Unit2; procedure TForm1.Button1Click(Sender:TObject); 開始 Form2.Show; PopupParent:= Form2; Form2.SendToBack; 結束; 我已經嘗試設置PopupParent爲NIL onClose事件的Form1但仍然發生錯誤。 procedure TForm1.FormClose(Sender:TObject; var Action:TCloseAction); begin PopupParent:= nil; 結束; – user3251423

+0

對不起,我的意思是PopupMode,而不是PopupParent(儘管它們是相關的)。不要將Form2設置爲Form1的PopupParent。嘗試將Form2的PopupMode設置爲顯式,並將其PopupParent設置爲零。保留默認值允許VCL決定在Form2顯示時使用哪個PopupParent,並且通常是活動窗體(在這種情況下爲Form1)。 –