我有一个带有DBGrid的mainForm,我有一个带有CheckListBox的第二个表单,它显示了所有DBGrid列供用户选择。我需要在Form2中引用我在MainForm中的DBGrid。 我希望第二种形式处理连接到dbdgrid列的所有过程,以便我可以轻松地重用它。 这是个主意,但我找不到传递DBGrid引用的方法。 有可能吗?
答案 0 :(得分:2)
在Form2上回答您提出的问题,定义属性
TForm2
[...]
private
FGrid : TDBGrid
public
property Grid : TDBGrid read FGrid write FGrid;
然后,在您创建了TForm2的实例后,只需执行
Form2.Grid := MainForm.DBGrid1;
然后,在Form2上,您可以执行任何有效的更改Grid
,并且将对MainForm.DBGrid1进行更改。
答案 1 :(得分:1)
有可能吗?
问题应该是 有没有更好的方法来实现我想要的目标?
Form2
基本上使用不同形式的控件,它是否可以维护?如果其他表格还需要保留对其他表格中组件的引用,该怎么办?回答这些问题可以帮助您寻找不同的方法。
您应该考虑separate UI and business logic。 TDBGrid
似乎是将数据从数据库中提取到应用程序中的便捷方式,但它违反了单一责任原则,因为它同时加载和显示数据。不要将其用作应用程序内的基本数据提供程序。从更深入的UI独立软件层执行SQL查询。将结果存储在容器中,并以不同形式的所有方式显示它们。