TMemo的子类,带有空行

3

我的TMemo子类有构造函数

constructor TMyMemo.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Lines.Clear;
end;

当我将TMyMemo放在窗体上时,出现错误“控件''没有父窗口。”为什么会这样?

2
如果您忽略它的设置,为什么首先要发布Lines呢?应该从TCustomMemo派生。 - David Heffernan
2
@David - 我希望在表单上放置“空”备忘录。通常/总是当我在表单上放置TMemo时,我会清除行。我非常懒 :) - Branko
4
你现在已经得到了一个很好的答案,但是这个问题也很好地说明了为什么你应该解释清楚你的潜在问题。 - David Heffernan
1
我喜欢没有标题的控件(tpanel,tmemo等)的想法。 - Gabriel
2个回答

17

新创建的备忘录没有内容。但是一旦组件自动获得名称(由设计师完成),内容就会被添加。如果要防止这种情况,请从ControlStyle中删除csSetCaption

constructor TMyMemo.Create(AOwner: TComponent); 
begin 
  inherited Create(AOwner); 
  ControlStyle := ControlStyle - [csSetCaption];
end; 

2
很好的答案。我想我也要创建一个MyPanel和MyEdit。:) 或者这是在设计器中可以切换的选项吗? - GolezTrol

0

将 Lines.Clear 移至覆盖的 CreateWnd 方法中。在 Create 执行期间,底层窗口控件(多行编辑)不存在


4
每当调用CreateWnd时,都会清除内容,这种情况比你想象的要多。 - NGLN

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接