如何从另一个表单中反驳DBGrid

时间:2016-10-03 17:01:27

标签: delphi dbgrid

我有一个带有DBGrid的mainForm,我有一个带有CheckListBox的第二个表单,它显示了所有DBGrid列供用户选择。我需要在Form2中引用我在MainForm中的DBGrid。 我希望第二种形式处理连接到dbdgrid列的所有过程,以便我可以轻松地重用它。 这是个主意,但我找不到传递DBGrid引用的方法。 有可能吗?

2 个答案:

答案 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基本上使用不同形式的控件,它是否可以维护?如果其他表格还需要保留对其他表格中组件的引用,该怎么办?
  • 如果使用不同形式的控件,一年内找到错误会有多难?
  • 这样的解决方案是否与SOLID principles
  • 匹配

回答这些问题可以帮助您寻找不同的方法。

您应该考虑separate UI and business logicTDBGrid似乎是将数据从数据库中提取到应用程序中的便捷方式,但它违反了单一责任原则,因为它同时加载和显示数据。不要将其用作应用程序内的基本数据提供程序。从更深入的UI独立软件层执行SQL查询。将结果存储在容器中,并以不同形式的所有方式显示它们。