Интересный вариант, спасибо.
Только когда уже Form1 восстанавливаем из панели задач, то при нажатии на кнопку сворачивания на форме, она сворачивается в левый нижний угол экрана (над кнопкой пуск). [это понятно, ведь Form2 мы не убили, а она - главная форма при таком коде Project1! ]
И еще один баг - это мерцание кнопки приложения на панели задач при закрытии Form2 (она пропадает на долю секунды и появляется заново).
Вот вродебы мне удалось создать полностью рабочий код, тоже с определением Application.onRestore.
Project1
Код:
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.ShowMainForm:=False;
Application.CreateForm(TForm2, Form2);
Form2.Show();
Application.Run;
end.
Unit1
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure onRestore(Sender:tobject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.onRestore(Sender:TObject);
begin
Form1.Visible:=True;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnRestore:=onRestore;
end;
end.
Unit2
Код:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
procedure FormClose(Sender: TObject; var Action: TCloseAction);
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
uses
Unit1;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=caNone;
DestroyWindow(handle);
Application.Minimize;
end;
end.
Тут я использую функцию DestroyWindow, чтобы закрытие Form2 не удаляло значок приложения из панели задач, как это случалось в случае если просто сделать close().
И приходится при Appication.onRestore, самому сделать Form1 видимой.
Способ дурацкий, наверно можно проще как-то, если WinApi получше знать.
И еще один баг остался: Form2 пока она еще открыта, сворачивается не вместе с приложением, а в левый нижний угол экрана.
Но мне это не важно.
В принципе вопрос решён. Всем спасибо. Но если у кого будут другие варианты буду рад увидеть.