2016-08-12 38 views
3

我注册了一个框架作为组件。之后,我暴露了一个内部控制属性(在这种情况下为TListView.Columns)。将框架的内部控件作为属性公开,但未注册更改。我忘了注册什么?

但是,更改没有存储在dfm中,导致程序忽略在设计时创建的任何列。

我甚至暴露了整个列表视图。但仍然没有任何东西被保存在dfm中。

TFme_CustomAssociatedFiles = class(TFrame) 
    ... 
    Lsv_Files: TListView; 
    ... 
    published 
    property InternalListView: TListview read Lsv_Files; 
    ... 
    end; 

回答

3

想了一会之后,我想起了一个名为TLabeledEdit的组件。我将它的源代码与我的源代码进行了比较,结果是需要将控件/组件标记为子组件,调用TComponent.SetSubComponent()

因此,在框架的构造,我不得不包括:

constructor TFme_CustomAssociatedFiles.Create(AOwner: TComponent); 
begin 
    ... 
    Lsv_Files.SetSubComponent(true); 
    ... 
end; 

而且所有的工作就像一个魅力。