2014-10-02 60 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爵士的建議,我認爲)。