Как получить Item.LookupData и SelectedValue (как целое число) FMX TComboBox во время выполнения?
E сть ComboBox
в форме FMX. Он связан с источником данных (таблица, которая имеет id
-целое и speciality
- поля Varchar) следующим образом-
object LinkFillControlToField1: TLinkFillControlToField
Category = 'Quick Bindings'
Control = ComboBox1
Track = True
FillDataSource = BindSourceDB1
FillValueFieldName = 'id'
FillDisplayFieldName = 'speciality'
AutoFill = True
BufferCount = -1
AutoBufferCount = False
FillExpressions = <>
FillHeaderExpressions = <>
FillBreakGroups = <>
end
Получить доступ к значению выбранного просто speciality
(от ComboBox1.Selected.Text
) но я не могу найти способ получить доступ к id
значение выбранного элемента без дополнительных запросов SQL. Где он хранится в TComboBox или его ListBox? Где SelectedValue
и как его получить (как целое число)?
4 ответа
В настоящее время я использую следующий способ решения проблемы. Я справляюсь OnFillingListItem
событие следующим образом и сохранить номер идентификатора в ComboBox
Предметы. я использую Tag
собственность, хотя это на самом деле не хорошо.
procedure TForm1.LinkFillControlToField1FillingListItem(Sender: TObject;
const AEditor: IBindListEditorItem);
begin
(AEditor.CurrentObject as TListBoxItem).Tag :=
YourLookuptable.FieldByName('id').AsInteger;
end;
Позже я получаю идентификатор элемента из ListBox1.Selected.Tag. Это дает мне надежное удостоверение личности.
Вы можете получить доступ к id
Значение выбранного элемента по TLinkFillControl
который определяет привязку:
procedure TForm1.ComboBox1Change(Sender: TObject);
var
Id: Integer;
begin
if TryStrToInt(LinkFillControlToField1.BindList.GetSelectedValue.AsString, Id) then
ShowMessage(IntToStr(Id));
end;
Если Item.LookupData
связан, BindList.GetSelectedValue
доставляет соответствующие связанные данные. Если я правильно помню, Delphi хранит значение внутри словаря.
ComboBox1.ItemIndex - это все, что вам нужно.
Чтобы получить текст, связанный с выбранным элементом, вы можете сделать это: Text:= ComboBox1.Items[ComboBox1.ItemIndex];
См .: http://docwiki.embarcadero.com/Libraries/Sydney/en/FMX.ListBox.TCustomComboBox.ItemIndex