TCustomControl类的Create并没有指定Width和Height,
但你随便找一个TCustomControl的子类的Create来看看就知道,
Width和Height是在子类的Create中设置的,例(StdCtrls.pas):
constructor TCustomEdit.Create(AOwner: TComponent);
const
EditStyle = [csClickEvents, csSetCaption, csDoubleClicks, csFixedHeight];
begin
inherited Create(AOwner);
if NewStyleControls then
ControlStyle := EditStyle else
ControlStyle := EditStyle + [csFramed];
Width := 121;
Height := 25;
TabStop := True;
ParentColor := False;
FBorderStyle := bsSingle;
FAutoSize := True;
FAutoSelect := True;
FHideSelection := True;
AdjustHeight;
end;
至于Name属性,是由Delphi IDE在设计时创建了构件后再为其命名的,
不同版本的Delphi实现方式也不一样。这不属于构件作者需要关心的
范畴。如果你在运行时动态创建一个控件,你会发现它的Name属性为空。
另外控件的ClassName是由Delphi的RTTI机制构造的,在TObject类中实现。
例:
procedure TForm1.Button1Click(Sender: TObject);
var
MyEdit: TEdit;
begin
MyEdit:=TEdit.Create(Self);
ShowMessage(
Format('ClassName: %s'#13#10'Component Name: %s'#13#10'Control.Width: %d'#13#10'Control.Height %d',
[MyEdit.ClassName,MyEdit.Name,MyEdit.Width,MyEdit.Height]));
end;