program Greeting;
uses
  Forms, Unit1 in 'Unit1.pas',Unit2 in 'Unit2.pas';
{$R *.res}
 begin
 Application.Initialize;
 Application.CreateForm(TForm1,Form1);
 Application.CreateForm(TForm2,Form2);
 Application.Run;
end.unit Unit1;
 interface
 uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs,StdCtrls;
type
TForm1 = class(TForm)
  Button1:TButton;
  procedure Button1Click(Sender:TObject);
end;Var
Form1: TForm1;implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2.ShowModal;
end;
end.unit Unit2;interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs,StdCtrls;
  type
  TForm2=class(TForm)
    Label1:TLabel;
    CancelButton:TButton;
    procedure CancelButtonClick(sender:TObject);
    procedure FormClose(Sender: TObject;var Action:TCloseAction);
  end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm2.CancelButtonClick(sender: TObject);
begin
  Form2.Close;
end;
end.1个工程,2个单元
编译的时候,报两处错
[DCC Error] Unit2.pas(12): E2065 Unsatisfied forward or external declaration: 'TForm2.FormClose'
----Unit2的procedure FormClose(Sender: TObject;var Action:TCloseAction);[DCC Fatal Error] Project1.dpr(3): F2063 Could not compile used unit 'Unit1.pas'
----project1的uses
  Forms, Unit1 in 'Unit1.pas',Unit2 in 'Unit2.pas';

解决方案 »

  1.   


    unit Unit2;interface
    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
      Dialogs,StdCtrls;
      type
      TForm2=class(TForm)
        Label1:TLabel;
        CancelButton:TButton;
        procedure CancelButtonClick(sender:TObject);
        //procedure FormClose(Sender: TObject;var Action:TCloseAction);  //把这一句注释掉试试
      end;
    var
    Form2: TForm2;
    implementation
    uses Unit1;
    {$R *.dfm}
    procedure TForm2.CancelButtonClick(sender: TObject);
    begin
      Form2.Close;
    end;
    end.
      

  2.   

    Unit1中引用Unit2時不要放在implementation部分,要放在interface部分。
      

  3.   

    procedure FormClose(Sender: TObject;var Action:TCloseAction);
    的函数体呢
    Form2.Close;==》Close试试