2014-10-02 105 views
0

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

示例数据:

 
Tables 
type  subtype 
vehicle car 
vehicle truck 
vehicle 4-wheeler 
boat  v-hull 
boat  flat-bottom 

之前住绑定你可以过滤和第二的弹出事件之前或在密切刷新的第二数据查找(亚型)或先更改组合框的事件。当我尝试使用活动绑定时,它没有效果。我也尝试使用Bindlist.Notify方法,但没有成功。

+0

你能告诉我们你尝试过什么到目前为止一些代码? – 0x1gene 2014-10-02 23:52:04

+0

只需启动livebindings,并通过代码自行完成。更新数据有很多错误,恕我直言,LB只是一些小例子,但不适用于应用程序中的实际使用。 – 2014-10-03 09:08:21

+0

@SirRufo我会对你的意见进行一些讨论。有没有什么文章可以引用支持,或者相反? – 2014-10-03 10:11:57

回答

1

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

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

感谢您的意见和帮助

韦德

0

这是我今天工作的一个项目的一个片段。 '字母'为'类型','模板'为'子类型'

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

这不是一个livebindings例子。使用Livebindings我猜测对PopulateTemplatePaths的调用将不是必需的,但它所做的是清除子类型组合框并重新填充。 (而是按照Rufo爵士的建议,我认为)。