問題は次のとおりです。アプリケーションの復元後に追加のフォームを閉じることができないため、アプリケーションを最小限に抑えるときに追加フォームを非表示にする方法。添付されたコードは動作を示します。まず、ボタンを押して追加のフォームを開きます。 Form Style set fsStayOnTopを設定しました。その後、タイマーボタンを押してメインフォームを最小化します。タイマーの復元後、追加のものを閉じることはできません。Delphi XE2:Windowsでファイルを開いてアプリケーションを最小限にする
program MINIBUG;
uses
Vcl.Forms,
MainForm in 'MainForm.pas' {Form7},
AddForm in 'AddForm.pas' {Form8};
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm7, Form7);
Application.CreateForm(TForm8, Form8);
Application.Run;
end.
unit AddForm;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs;
type
TForm8 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form8: TForm8;
implementation
{$R *.dfm}
end.
unit MainForm;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, AddForm, Vcl.ExtCtrls;
type
TForm7 = class(TForm)
btnAddForm: TButton;
tmr1: TTimer;
Button1: TButton;
procedure btnAddFormClick(Sender: TObject);
procedure tmr1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form7: TForm7;
implementation
{$R *.dfm}
procedure TForm7.btnAddFormClick(Sender: TObject);
begin
Form8.Show;
end;
procedure TForm7.Button1Click(Sender: TObject);
begin
tmr1.Enabled := True;
end;
procedure TForm7.tmr1Timer(Sender: TObject);
begin
tmr1.Enabled := False;
form8.Close;
Application.Restore;
end;
end.
私は、あなたの問題解決に必要な情報を十分に提供していないのではないかと心配しています。あなたが残した最も重要な情報は、アプリケーションが開くように設定されているファイルをダブルクリックした後に実行されるコードです。私はこの問題が実際にこのコードにあるかもしれないと推測しています。 – SilverWarior
[mcve] –
を入力してください。提示されたコードで説明した問題を再現できるようになりました。私はこれが実際の状況を模倣していることを理解しています。したがって、OnTimerイベントの 'form8.Close;'が複製している実際の動作を説明してください。もしその行がコメントアウトされていれば問題ありません。 –