【问题标题】:delphi live bindings filter a combo boxdelphi live bindings 过滤组合框
【发布时间】:2014-10-02 23:44:56
【问题描述】:

我有 2 个组合框链接到在类型和子类型表中查找值的表。当用户选择第一个时,我需要在第二个中过滤数据。

示例数据:

表 类型子类型 车辆 车 车辆卡车 车辆四轮车 V型船体 船用平底

在实时绑定之前,您可以在第二个弹出事件之前或第一个组合框的关闭或更改事件上过滤和刷新第二个数据查找(子类型)。当我使用实时绑定尝试此操作时,它没有效果。我也尝试使用Bindlist.Notify 方法,但没有成功。

【问题讨论】:

  • 你能告诉我们一些你迄今为止尝试过的代码吗?
  • 只需启动实时绑定并在代码中自行完成。更新数据有很多错误,恕我直言 LB 仅用于一些小示例,而不是在应用程序中实际使用。
  • @SirRufo 我有兴趣讨论您的意见。您是否可以引用任何文章来支持或相反?
  • @HughJones 我刚刚发布了一个小型 LB 示例 here也许我做错了......但如果没有,LB 还没有准备好发货。项目可以下载here

标签: delphi combobox refresh controls livebindings


【解决方案1】:

我在主表和子类型表之间设置了主从关系。选择类型后,它会在主表上设置值并过滤子类型。我切换了 LinkFillControlToField 上的 Active 属性,它刷新了列表。

procedure TframeEquipmentEdit.cbbSubtypeClassEnter(Sender: TObject);
var i : integer;
begin
LinkFillControlToField10.Active := False;
LinkFillControlToField10.Active := True;
end;

感谢您的 cmets 和帮助

韦德

【讨论】:

    【解决方案2】:

    这是我今天正在进行的一个项目的片段。对于“字母”读取“类型”,对于“模板”读取“子类型”

    procedure TdlgNewTemplate.LetterTypesComboChange(Sender: TObject);
    begin
      FTemplatesDs.Filter := Format('TYPE=%d',[LetterType()]);
      FTemplatesDs.Filtered := True;
      PopulateTemplatePaths();
    end;
    

    这不是一个活绑定的例子。使用 Livebindings,我猜不需要调用 PopulateTemplatePaths,但它所做的只是清除子类型组合框并重新填充。 (我认为,就像上面 Rufo 爵士建议的那样)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-01
      • 1970-01-01
      • 2022-09-23
      • 2013-04-25
      • 1970-01-01
      • 2012-11-16
      • 2012-01-26
      • 1970-01-01
      相关资源
      最近更新 更多