문제는 응용 프로그램을 복원 한 후에 추가 양식을 닫을 수 없기 때문에 응용 프로그램이 최소화 될 때 추가 양식을 숨기는 방법입니다. 첨부 된 코드는 동작을 보여줍니다. 먼저 버튼을 눌러 추가 양식을 엽니 다. 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; '가 복제하는 실제 작업에 대해 설명해주십시오. 그 라인에 문제가 없다면 문제가 없습니다. –