dbctrlgrid 在运行时删除和填充条目
dbctrlgrid delete and populate entries at runtime
我想在运行时(从数据库)加载 dbctrlgrid 的内容。所以我遇到了几个挑战:
- 如何检测 dbctrlgrid 是否为空and/or如何清除它。
- 如何在面板上放置Tlabel和Tdbtext。主要问题好像是找对了parent。 dbctrlgrid 不起作用。有一个名为 Tdbctrlpanel 的 object 应该可以使用,但我不知道如何访问它。我在 Tdbctrlgrid 的属性或方法中找不到它。
欢迎任何代码片段
回答1)
你不查询TDBCtrlGrid,你查询底层数据集;如果它 .IsEmpty
网格是空的。
当人们开始使用数据感知(网格)组件时,他们倾向于将其视为可以查询和修改的 'data container',但事实并非如此。使用一些修改该数据的内置编辑器将其视为您的基础数据的视图。然后 'same rules' 适用于这些编辑器:更新基础数据集。
要将控件添加到 TDBCtrlGrid
,您必须将控件父级设置为 TDBCtrlGrid
的 Panel
属性。问题是这个 属性 是受保护的。有几种方法可以克服此限制。一个显示在 Delphi 关于:Accessing protected members of a component
这是 Delphi 程序员称为 'protected hack' 的常用技术。
我想在运行时(从数据库)加载 dbctrlgrid 的内容。所以我遇到了几个挑战:
- 如何检测 dbctrlgrid 是否为空and/or如何清除它。
- 如何在面板上放置Tlabel和Tdbtext。主要问题好像是找对了parent。 dbctrlgrid 不起作用。有一个名为 Tdbctrlpanel 的 object 应该可以使用,但我不知道如何访问它。我在 Tdbctrlgrid 的属性或方法中找不到它。
欢迎任何代码片段
回答1)
你不查询TDBCtrlGrid,你查询底层数据集;如果它 .IsEmpty
网格是空的。
当人们开始使用数据感知(网格)组件时,他们倾向于将其视为可以查询和修改的 'data container',但事实并非如此。使用一些修改该数据的内置编辑器将其视为您的基础数据的视图。然后 'same rules' 适用于这些编辑器:更新基础数据集。
要将控件添加到 TDBCtrlGrid
,您必须将控件父级设置为 TDBCtrlGrid
的 Panel
属性。问题是这个 属性 是受保护的。有几种方法可以克服此限制。一个显示在 Delphi 关于:Accessing protected members of a component
这是 Delphi 程序员称为 'protected hack' 的常用技术。