2015-11-11 43 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

是的,我已经得到了,但是,你做了一个很好的补充=) –