将DBGrid绑定到自定义组件

时间:2016-05-30 21:35:44

标签: delphi dbgrid

我在Delphi 10 Seattle制作了一个组件。 我的组件是一个面板,包含一个TDBGrid(来自TCustomDBGrid)和一个TEdit 控制。 当我将我的组件放入表单时,如果我不更改网格列,一切都很好。 但当我更改有界DBGrid列时,运行时发生错误消息:“读取TColumn.MyGrid.Expanded时出错:属性MyGrid.Expanded dos不存在....” 对于找到的错误,我打开表单作为文本并查看此代码:

MyGrid.Columns = <
  item
    MyGrid.Expanded = False
    MyGrid.FieldName = 'Sid'
    MyGrid.Visible = True
  end
  item
    MyGrid.Expanded = False
    MyGrid.FieldName = 'UserName'
    MyGrid.Visible = True
  end>
FilterDataSource = DataSource1

因此,我的组件无法正常工作。

1 个答案:

答案 0 :(得分:0)

我编写了自己的组件,在TPanel中嵌入了TDBGrid,并测试了一个项目。当网格包含持久化的TColumns时,我尝试重新加载项目时遇到了同样的错误。

所以,我在这里发布了自己的q

How to correctly stream a TCollection property of a subcomponent, e.g. the Columns property of an embedded TDBGrid

并得到了Delphi MVP Uwe Raabe的回答,基本上说原因是TDBGridColumns的VCL流媒体代码存在问题,并建议我向EMBA的质量门户提交问题报告。所以我认为在EMBA修复之前,可以对这个问题做很多事情。