Voici mon code:types incompatibles: 'TCloseEvent' et 'procédure'
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
TForm2 = class(TForm)
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Déclarations privées }
public
{ Déclarations publiques }
// I try to put it here but the same problem
//procedure FormClose(Sender: TObject; var Action: TCloseAction);
end;
var
Form1: TForm1;
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2 := TForm2.CreateNew(Application);
Form2.Parent := Self;
Form2.OnClose := TForm2.FormClose;
Form2.Show;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ShowMessage('Form1Close');
end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ShowMessage('Form2Close');
end;
end.
Lorsque je tente d'assigner FormClose
à l'événement OnClose
du Form2
, je suis l'erreur suivante Msg:
[erreur dcc32] unit1.pas (40): E2010 types incompatibles: 'TCloseEvent' et 'procédure'
Quand je change à:
Form2.OnClose := FormClose;
Il fonctionne très bien, mais qui est comme Self.FormClose
, pas la procédure TForm2.FormClose
.
Comment attribuer TForm2.FormClose
à Form2.Onclose
?
Je ne savais pas qu'il était même possible d'avoir deux formes dans la même unité ... De toute évidence, deux classes sont normales. Mais ces deux formes partagent-elles le même DFM? Comment cela fonctionnerait-il? –
@Jerry la dfm ne définit que les propriétés d'une forme. L'autre n'a pas de dfm, d'où l'utilisation de CreateNew. –