(TSQLConnection)为什么Left和Top属性仅在.dfm文件中可用?

时间:2013-05-29 06:06:01

标签: delphi runtime components

我很好奇为什么你可以在表单上删除TSQLConnection,它会将LeftTop属性添加到.dfm

object Form1: TForm1
  ...
  object SQLConnection1: TSQLConnection
    Left = 8
    Top = 8
  end
end

但是当您在代码中创建它时,LeftTop属性不是TSQLConnection类的成员:

interface

type
  TForm1 = class(TForm)
    SQLConnection1: TSQLConnection;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    FSQLCon: TSQLConnection;
  public
    { Public declarations }
  end;

implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
  FSQLCon := TSQLConnection.Create(Self);
  FSQLCon.Left := 280;
  FSQLCon.Top := 200;
end;

编译:

[DCC Error] Unit1.pas(30): E2003 Undeclared identifier: 'Left'
[DCC Error] Unit1.pas(31): E2003 Undeclared identifier: 'Top'

为什么某些属性仅可用于.dfm中的分配?您是否应该能够在表单(.pas)中设置的代码(.dfm)中分配所有属性?

仅供参考 - 使用Delphi XE2(更新3)

1 个答案:

答案 0 :(得分:5)

TComponent的属性LeftTop确实不存在。在ReadPropertyWriteProperties使用的DefineProperties中为设计器设置。

看看classes.pas。