2014-01-30 4 views
1

Я использую Delphi xe4 и пытается создать 2-ю форму и установить его в качестве фона в то время как первая форма прозрачна (AlphaBlend = истина; AlphaBlendValue = 220)Почему SendToBack не работает с Delphi xe4

uses Unit2; 

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

Коды выше работают с Delphi 7, но не с Delphi XE4 (Form2 все еще на Form1). Может ли кто-нибудь сказать мне, почему коды не работают с XE4? И как заставить его работать?

Заранее спасибо.

ответ

2

Проверьте установку свойства Form2 PopupMode. Вероятно, он установлен таким образом, чтобы окно Form1 стало родителем окна Form2, что помешало Form2 перемещаться позади Form1. Свойство PopupModePopupParent) не было в D7, оно было введено в более поздней версии для исправления ошибок z-order, которые VCL страдал из более ранних версий.

Прочитайте следующую блоб статью для более подробной информации:

PopupMode and PopupParent

+0

Form2.PopoupParent свойство равно нулю (пусто) по умолчанию, и я не имею изменили. – user3251423

+0

Если я установил Form1.PopupParent в Form2, то SendToBack работает (Form2 отправляет обратно Form1), но когда я закрываю приложение, возникает ошибка. использует Unit2; процедура TForm1.Button1Click (отправитель: TObject); начало Form2.Show; PopupParent: = Form2; Form2.SendToBack; конец; Я попытался установить PopupParent в NIL onClose событие Form1, но ошибка все еще происходит. процедура TForm1.FormClose (отправитель: TObject; var Действие: TCloseAction); начало PopupParent: = nil; конец; – user3251423

+0

Извините, я имел в виду PopupMode, а не PopupParent (хотя они и связаны). Не устанавливайте Form2 как PopupParent Form1. Попробуйте установить PopupMode Form2 в явном виде, а PopupParent - на ноль. Если оставить значения по умолчанию, VCL может решить, какой PopupParent использовать, когда отображается Form2, и обычно это активная форма (Form1 в этом случае). –

Смежные вопросы