1

我有一个 QuantumGrid,它有两个级别(让我们说,lvCountries 和 lvCities)和两个视图(分别是 tvCountries 和 tvCities)。两个视图中的所有属性都已正确设置,并且网格显示应为:

  • 法国
    • 巴黎
    • 马赛
    • 里昂
  • 德国
    • 德累斯顿
    • 汉堡

等等

到目前为止,一切都很好。

但我也有一个编辑表单(由带有主从网格的表单上的按钮激活)。我想在此表单上显示一个新网格,其中包含来自当前详细信息的数据。如果在主窗体中选择了法国,则编辑窗体应在其网格中仅显示法国城市:

  • 巴黎
  • 马赛
  • 里昂

我附加了相同的数据源来编辑表单的网格,就像我在主表单中用于详细视图一样,但它显示了来自所有国家的所有城市。

  • 巴黎
  • 马赛
  • 里昂
  • 德累斯顿
  • 汉堡

据我了解,这是因为详细数据不是在他们的数据源中过滤,而是在他们的视图中过滤,并且数据源显示其数据集中的所有值(顺便说一下,我使用 ADODatasets)。

有没有办法仅在当前主记录的另一个表单上显示详细数据?

4

1 回答 1

2

将属性添加到设置为所选记录的键值的详细信息表单。例如

TFormDetail= Class(TForm)
..
Public
  Property CountryID : String Read FCountryID Write FCountryID;
End;

在 FormShow 中

Procedure TFormDetail.FormShow(Sender : TObject);
Begin
// Add your filter/where clause to CountryID
  End;

当您调用 FormDetail 时:-

    lFrm := TFormDetail.Create(Nil);
    Try
      lFrm.CountryID := // whatever
      lFrm.ShowModal;
    Finally
      FreeAndNil(lFrm);
    End;
于 2013-08-06T13:28:23.287 回答