2015-11-11 44 views
0

所以,我一直在組合框中使用兩個表之間的LiveBindings來獲取外鍵的ID和描述(使用Item.LookupData和Item.text屬性)並將鍵分配給另一個表中具有SelectedValue屬性的字段。這工作正常我猜,但我使用自定義的dbnavigator控件來作出「登記表」。 我正在使用這樣的方法來插入:adotablealuno.FieldValues['Nome']:=editnomeAluno.Text;
但我無法找到如何以這種方式使用組合框,我已經嘗試了ItemIndex和Selected屬性,但沒有任何這項工作(我' m使用Access DB btw)。如何在ComboBox中使用我的外鍵?Delphi Firemonkey組合框插入AdoTable

回答

2

其實我已經說過這個question,很長一段時間沒有好的答案。我找到了一種我目前正在使用的方法。至少我知道我會得到可靠的數據。 您需要以相似的方式處理OnFillingListItem事件的LinkFillControlToField鏈接,並在ComboBox項目中存儲ID號。我使用Tag屬性來達到這個目的,儘管它實際上並不好。

procedure TForm1.LinkFillControlToField1FillingListItem(Sender: TObject; 
    const AEditor: IBindListEditorItem); 
begin 
    (AEditor.CurrentObject as TListBoxItem).Tag := 
    YourLookuptable.FieldByName('id').AsInteger; 
end; 

然後從ListBox1.Selected.Tag中獲取物品ID。文本值可以通過ComboBox1.Selected.Text訪問。

附加。

您製作了類似LinkFillControlToField的鏈接。 enter image description here

然後選擇此鏈接並創建OnFillingListItem事件處理程序的鏈接(選擇Object Inspector中,雙擊OnFillingListItem組合框的事件選項卡)。事件處理程序(空程序)將出現。它會被命名爲TForm1.LinkFillControlToField1FillingListItem(...然後你寫代碼設置id屬性到項目的標籤。

+0

我會試試這個。我只是不知道這是從哪個控制。我把它放在組合框或綁定中? –

+0

@GuilhermeRaguzzoni我追加了我的答案,但是,我想你已經知道了。 –

+0

是的,我已經得到了,但是,你做了一個很好的補充=) –