【发布时间】:2011-02-09 19:52:18
【问题描述】:
我创建了自己的组件: TPage ,其中包含子组件 TPaper (TPanel)。 问题是,当我将 TMemo 或 TButton 等控件放在 TPaper 上(几乎填满整个区域)时,这些控件根本不会加载。见下面的例子
TPaper = class(TPanel)
protected
constructor Create(AOwner: TComponent);override;
destructor Destroy;override;
public
procedure Paint; override;
end;
TPage = class(TCustomControl)
private
FPaper:TPaper;
protected
procedure CreateParams(var Params:TCreateParams); override;
public
constructor Create(AOwner: TComponent);override;
destructor Destroy;override;
published
property Paper: TPaper read FPaper write FPaper;
end;
constructor TPage.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
PaperOrientation:=poPortrait;
PaperSize:=psA4;
PaperBrush:=TBrush.Create;
PaperBrush.Color:=clWhite;
PDFDocument:=Nil;
FPaper:=TPaper.Create(Self);
FPaper.Parent:=Self;
FPaper.SetSubComponent(True);
end;
... Memo1 在设计时是 TPaper (TPanel) 的父级,但在 按“运行”它不存在。
procedure TForm1.btn1Click(Sender: TObject);
begin
if not Assigned(Memo1) then ShowMessage('I do not exist'); //Memo1 is nil
end;
你知道出了什么问题吗?
非常感谢
PS 德尔福 7
当我将 TMemo 放入 TPaper 并保存单元 (Unit1) 后,在检查关联的 dfm 文件后,没有 TMemo 组件的痕迹。 (这就是它无法加载到应用程序的原因。)
【问题讨论】:
标签: delphi