Вставка Delphi Firemonkey ComboBox в AdoTable
Итак, я использовал LiveBindings между двумя таблицами в комбинированном ящике, чтобы получить Id и Description внешнего ключа (со свойствами Item.LookupData и Item.text) и назначить ключ полю в другой таблице с помощью свойства SelectedValue., Я думаю, это работает нормально, но я использую пользовательские элементы управления dbnavigator, чтобы создать "регистрационную форму". Я использую такие методы, чтобы сделать вставки: adotablealuno.FieldValues['Nome']:=editnomeAluno.Text;
Но я не могу найти, как использовать комбинированный список таким образом, я уже пробовал свойства ItemIndex и Selected, но ничего из этого не работает (я, кстати, использую Access DB). Как я могу использовать мой внешний ключ в ComboBox для этого?
1 ответ
На самом деле я уже задавал этот вопрос, и долгое время не было хорошего ответа. Я нашел выход, который сейчас использую. По крайней мере, я знаю, что получу достоверные данные. Вы должны справиться OnFillingListItem
событие LinkFillControlToField
ссылка аналогичным образом и хранить идентификационный номер в ComboBox
Предметы. я использую Tag
свойство для этой цели, хотя это на самом деле не хорошо.
procedure TForm1.LinkFillControlToField1FillingListItem(Sender: TObject;
const AEditor: IBindListEditorItem);
begin
(AEditor.CurrentObject as TListBoxItem).Tag :=
YourLookuptable.FieldByName('id').AsInteger;
end;
А затем получить идентификатор элемента из ListBox1.Selected.Tag. Доступ к текстовому значению можно получить через ComboBox1.Selected.Text
,
Добавив.
Вы делаете так LinkFillControlToField
ссылка на сайт.
Затем вы выбираете эту ссылку и создаете OnFillingListItem
обработчик события для ссылки (выберите вкладку событий в Инспекторе объектов и дважды щелкните OnFillingListItem
Поле со списком). Появится обработчик события (пустая процедура). Будет дано имя как TForm1.LinkFillControlToField1FillingListItem(...
Затем вы пишете код, устанавливающий свойство id для тегов элементов.