Le problème est: comment masquer un formulaire supplémentaire lorsque l'application est réduite car, une fois l'application restaurée, le formulaire supplémentaire ne peut pas être fermé. Le code joint montre le comportement. D'abord, j'ouvre un formulaire supplémentaire en appuyant sur le bouton. Il a défini le style de formulaire défini sur fsStayOnTop. Puis j'appuie sur le bouton de la minuterie et minimise la forme principale. Une fois la minuterie rétablie, la clé supplémentaire ne peut pas être fermée.Delphi XE2: restauration d'application réduite en ouvrant un fichier dans 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.
Je crains que vous ne nous fournissiez pas suffisamment d'informations pour vous aider à résoudre votre problème. L'information la plus importante que vous avez laissée de côté est le code qui s'exécute après que vous ayez double-cliqué sur le fichier que vous avez ouvert. Je devine que le problème pourrait se situer dans ce code. – SilverWarior
Fournir un [mcve] –
Je peux maintenant reproduire le problème que vous décrivez avec le code présenté. Je comprends que c'est juste imiter la situation réelle. Donc s'il vous plaît expliquer quelle action du monde réel le 'form8.Close;' dans l'événement 'OnTimer' est en cours de réplication. Si cette ligne est sortie, il n'y a pas de problème. –