Я использую Delphi 2010 для создания приложения Win32 GUI, работающего в Windows XP / Vista и Windows 7.
По сути, Application.MainForm является свойством только для чтения и может ' t можно изменить во время выполнения, как только первая форма будет создана через Application.CreateForm:
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
В приведенном выше примере Form1 будет главной формой приложения. Он будет отображаться в миниатюре панели задач Windows 7.
Установка Application.MainFormOnTaskBar на true во время выполнения позволяет нам пользоваться функциями темы Windows aero.
Мне нужно переключить приложение ' основная форма во время выполнения. Например, установите Form2 как главную форму. Я использую следующий код, чтобы заставить его работать:
procedure SetAsMainForm(aForm:TForm);
var
P:Pointer;
begin
Application.MainFormOnTaskBar := False;
try
P := @Application.Mainform;
Pointer(P^) := aForm;
aForm.Show;
finally
Application.MainFormOnTaskBar := True;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SetAsMainForm(Form2);
end;
Execute Button1.Click сделает Form2 главной формой и обновит предварительный просмотр эскизов панели задач Windows. Однако панель задач может мерцать при переключении.
Мои вопросы: