如何从另一个表单引用 DBGrid
How to refence a DBGrid from another form
我有一个带有 DBGrid 的主窗体,还有一个带有 CheckListBox 的第二个窗体,它显示所有 DBGrid 列供用户选择。我需要在 Form2 中引用 MainForm 中的 DBGrid。
我希望这第二种形式能够处理连接到 dbdgrid 列的所有过程,以便我可以轻松地重用它。
那是个主意,但我没有找到传递 DBGrid 引用的方法。
可能吗?
Is it possible?
问题应该是有没有更好的方法来实现我想要的?
- 如果
Form2
基本上使用不同形式的控件,是否可以维护?如果其他表单也需要保存对其他表单上的组件的引用怎么办?
- 如果在不同的窗体上使用控件,一年内发现错误会有多难?
- 这样的解决方案是否与 SOLID principles 匹配?
回答这些问题应该有助于您寻找不同的方法。
你应该考虑separate UI and business logic。 TDBGrid
似乎是一种从数据库中获取数据到您的应用程序的便捷方式,但它违反了 单一职责原则 ,因为它同时加载和显示数据。不要将其用作应用程序内的基本数据提供者。从更深的 UI 软件独立层执行 SQL 查询。将结果存储在容器中,并以您想要的所有方式以不同的形式显示它们。
回答您提出的问题,在您的 Form2 上定义一个 属性
TForm2
[...]
private
FGrid : TDBGrid
public
property Grid : TDBGrid read FGrid write FGrid;
然后,在创建 TForm2 实例后,只需执行
Form2.Grid := MainForm.DBGrid1;
然后,在 Form2 上,您可以做任何您喜欢的有效更改 Grid
,并且更改将对 MainForm.DBGrid1 进行。
我有一个带有 DBGrid 的主窗体,还有一个带有 CheckListBox 的第二个窗体,它显示所有 DBGrid 列供用户选择。我需要在 Form2 中引用 MainForm 中的 DBGrid。 我希望这第二种形式能够处理连接到 dbdgrid 列的所有过程,以便我可以轻松地重用它。 那是个主意,但我没有找到传递 DBGrid 引用的方法。 可能吗?
Is it possible?
问题应该是有没有更好的方法来实现我想要的?
- 如果
Form2
基本上使用不同形式的控件,是否可以维护?如果其他表单也需要保存对其他表单上的组件的引用怎么办? - 如果在不同的窗体上使用控件,一年内发现错误会有多难?
- 这样的解决方案是否与 SOLID principles 匹配?
回答这些问题应该有助于您寻找不同的方法。
你应该考虑separate UI and business logic。 TDBGrid
似乎是一种从数据库中获取数据到您的应用程序的便捷方式,但它违反了 单一职责原则 ,因为它同时加载和显示数据。不要将其用作应用程序内的基本数据提供者。从更深的 UI 软件独立层执行 SQL 查询。将结果存储在容器中,并以您想要的所有方式以不同的形式显示它们。
回答您提出的问题,在您的 Form2 上定义一个 属性
TForm2
[...]
private
FGrid : TDBGrid
public
property Grid : TDBGrid read FGrid write FGrid;
然后,在创建 TForm2 实例后,只需执行
Form2.Grid := MainForm.DBGrid1;
然后,在 Form2 上,您可以做任何您喜欢的有效更改 Grid
,并且更改将对 MainForm.DBGrid1 进行。