我有一个没有任何组件的Delphi表单。然后,我创建了一个包含多个类的单元。我一直在尝试实例化该类并在表单中创建对象,但是它会报错说该类未声明。以下是错误信息:“E2003 未声明的标识符:TUser”。
以下是该项目:
program Testing;
uses
Forms,
Home in 'Home.pas' {Form1},
uUser in 'uUser.pas';
{$R *.res}
begin
ReportMemoryLeaksOnShutdown := DebugHook <> 0;
Application.Initialize;
Application.Run;
end.
这是我的空表格:
unit Home;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uUser;
type
TForm1 = class(TForm)
private
{ Private declarations }
protected
public
{ Public declarations }
u : TUser; //It's complaining about TUser. I can right click on
TUser, and it will take me to the class declaration.
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
end.
这是我创建的类:
unit uUser;
interface
uses
classes,SysUtils,Dialogs;
implementation
type
TAddress = class
private
FStreetAddress : string;
FCity : string ;
FState : string;
FZipCode : string;
procedure setStreetAddress(const Value : string);
procedure setCity(const Value : string);
procedure setState(const Value : string);
procedure setZipCode(const Value : string);
protected
public
property StreetAddress : string read FStreetAddress write setStreetAddress;
property City : string read FCity write setCity;
property State : string read FState write setState;
property ZipCode : string read FZipCode write setZipCode;
end;
type
TPermanentAdddress = class (TAddress)
private
FStartDate : string;
FEndDate : string;
procedure setStartDate(const Value : string);
procedure setEndDate(const Value : string);
protected
public
property StartDate : string read FStartDate write setStartDate;
property EndDate : string read FEndDate write setEndDate ;
end;
type
TUser = class(TComponent)
private
FFirstName : string;
FAddress : TPermanentAdddress;
procedure setFirstName(const Value : string);
procedure setAddress(const Value : TPermanentAdddress);
protected
public
constructor Create(); reintroduce; overload;
destructor Destroy(); override;
property FirstName : string read FFirstName write setFirstName;
property Address : TPermanentAdddress read FAddress write setAddress;
end;
procedure TAddress.setStreetAddress(const Value : string);
begin
FStreetAddress := value;
end;
procedure TAddress.setCity(const Value : string);
begin
FCity := Value;
end;
procedure TAddress.setState(const Value : string);
begin
FState := Value;
end;
procedure TAddress.setZipCode(const Value : string);
begin
FZipCode := Value;
end;
//Permanent Address
procedure TPermanentAdddress.setStartDate(const Value : string);
begin
FStartDate := value;
end;
procedure TPermanentAdddress.setEndDate(const Value : string);
begin
FEndDate := Value;
end;
//tvxpatient
procedure TUser.setFirstName(const Value : string);
begin
FFirstName := Value;
end;
procedure TUser.setAddress(const Value : TPermanentAdddress);
begin
FAddress := Value;
end;
constructor TUser.Create();
begin
FAddress := TPermanentAdddress.Create;
end;
destructor TUser.Destroy();
begin
//FAddress.Free;
end;
end.