我需要生成一个用于输入销售文件(例如发票)的用户界面。我正在尝试使用“开发人员快递”的组件,特别是 QuantumGrid 组件(TcxGrid)。我在 devexpress 支持中心看到了主从组件和搜索的演示,但没有一个对我有帮助,因为它们都使用 2 个网格来处理主从关系,并一次编辑多条记录。
我只需要一次编辑一条记录(文档),并在标题中使用一对对象数据件组件(例如 TDBEdit)和一个网格来处理细节。
像这样的东西
我在哪里可以找到以这种方式使用这些组件的基本示例?
我需要生成一个用于输入销售文件(例如发票)的用户界面。我正在尝试使用“开发人员快递”的组件,特别是 QuantumGrid 组件(TcxGrid)。我在 devexpress 支持中心看到了主从组件和搜索的演示,但没有一个对我有帮助,因为它们都使用 2 个网格来处理主从关系,并一次编辑多条记录。
我只需要一次编辑一条记录(文档),并在标题中使用一对对象数据件组件(例如 TDBEdit)和一个网格来处理细节。
像这样的东西
我在哪里可以找到以这种方式使用这些组件的基本示例?
我认为您需要处理 ClientDataSource 组件中的主从关系。然后网格将遵循这种关系。
QuantumGrid 中的 Master/Child 属性主要用于在网格中嵌套多个项目。如果您在数据组件中设置关系,您只需将控件连接到正确的数据源,一切都会正常工作。
因此,如果您有两个数据集 Customer 和 Invoice。发票主数据源是客户数据源。然后在您的编辑控件上指向 Customer DataSource 并将 Grid 指向 Invoice DataSource。
如果您考虑一下 Master/Detail 关系在做什么,它实际上只是过滤 Detail DataSet 上的记录以匹配 Master DataSet 上的当前记录。各个编辑控件将始终显示它们所连接的数据集中的“当前”记录。网格将显示它们连接到的 DataSet 中的所有可见记录。
我倾向于不在您在此处显示的编辑表单中使用主/从关系。我假设在不同的屏幕上有某种方法可以选择要编辑的发票。我通常创建所需数据集的副本,其中仅包含此编辑所需的记录。如果我正在编辑现有发票,我会复制当前记录。如果是新发票,我可以从空记录集开始。这是更多的工作 - 我有一些通用库函数将复制数据集结构,然后将一条或多条记录复制到该数据集中。根据您的设置,您还可以重新查询数据库以获取您感兴趣的记录。显然,不应在所有情况下都这样做。这种方法的另一个问题是您需要一种方法来更新您可能使用此数据拥有的任何其他数据集 - 即您的主搜索屏幕。
然而,一旦我进入编辑屏幕,我发现它让事情变得更容易。现在我不需要担心顶层的主从关系。如果发票具有内部主/明细关系,您可以只处理这些关系,但您知道数据集只有这张发票的数据,而不是数据库中的所有数据。
对于您的表单,如果您限制 DataSets 中的数据,您可以直接连接所有内容,它应该可以按预期工作。您将在 Customer DataSet 中只有一条记录,并且发票将只有此 Invoice 的记录。
你为什么不在 support@devexpress.com 上问这个?
我订阅 vcl 的原因当然是除了组件的质量之外,因为他们确实有一个很棒的支持网站和员工?
在那里,您直接向编写这些内容的人询问,他们很可能很乐意为您提供示例程序(至少这些年来我收到了很多示例)。
无论组件如何,前提与任何其他主从关系相同。您需要在数据集级别设置主从细节来完成您想要的。