が私のコードです:互換性のないタイプ:ここに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.
私はForm2
のFormClose
OnClose
にイベントを割り当てるしようとすると、私は次のようなエラーメッセージを得た:
[DCC32エラー] Unit1.pas(40):E2010互換性のないタイプ: 'TCloseEvent' と 'プロシージャ' 私はそれを変更
:
Form2.OnClose := FormClose;
それが正常に動作しますが、それはSelf.FormClose
、ないTForm2.FormClose
手順のようなものです。
TForm2.FormClose
にForm2.Onclose
を割り当てるにはどうすればよいですか?
私は同じユニットに二つの形式を持つことさえ可能だった気づいていなかった...明らかに、2つのクラスが正常です。しかし、これらの両方のフォームも同じDFMを共有していますか?それはどのように働くでしょうか? –
@Jerry the dfmは、1つのフォームのプロパティのみを定義します。もう1つはdfmがないため、CreateNewを使用します。 –