这里是我的代码:不兼容的类型:“TCloseEvent”和“过程”
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.
当我尝试分配FormClose
到OnClose
事件Form2
的,我得到了以下错误消息:
[Dcc32错误] Unit1.pas(40):E2010不兼容的类型: 'TCloseEvent' 和 '过程'
当我将其更改为:
Form2.OnClose := FormClose;
它工作正常,但就是喜欢Self.FormClose
,而不是TForm2.FormClose
程序。
如何将TForm2.FormClose
指定为Form2.Onclose
?
我没有意识到这是甚至有可能在同一个单位两种形式......显然,两个班都正常。但是,这两种形式是否也共享相同的DFM?那将如何工作? –
@Jerry dfm仅定义一个表单的属性。另一个没有dfm,因此使用了CreateNew。 –