因此,我一直在组合框中的两个表之间使用LiveBinding来获取外键的ID和描述(使用Item.LookupData和Item.text属性)并将键分配给另一个字段中的字段具有SelectedValue属性的表。我猜这很好,但是我使用自定义dbnavigator控件来制作一个"注册表单"。
我使用这样的方法来制作插页:adotablealuno.FieldValues['Nome']:=editnomeAluno.Text;
但我不知道如何以这种方式使用组合框,我已经尝试过ItemIndex和Selected属性,但这些都没有用(我使用的是Access DB顺便说一句)。我怎样才能在ComboBox中使用我的外键?
答案 0 :(得分: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
链接。
然后选择此链接并为链接创建OnFillingListItem
事件处理程序(在Object Inspector中选择事件选项卡,然后双击OnFillingListItem
ComboBox)。将出现事件处理程序(空过程)。它将被赋予类似TForm1.LinkFillControlToField1FillingListItem(...
的名称然后您将代码设置id属性设置为项目&#39;标签