FMX表格上有ComboBox
。它以下列方式与数据源(具有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
的位置以及如何获取(作为整数)?
答案 0 :(得分:2)
答案 1 :(得分:2)
您可以通过定义绑定的buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.0.0'
}
}
allprojects {
repositories {
jcenter()
}
}
访问所选项目的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
会传递相应的绑定数据。如果我没记错的话,Delphi会在内部将值存储在字典中。
答案 2 :(得分:0)
我目前正在使用以下方法解决此问题。
我按以下方式处理OnFillingListItem
事件,并在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中获取Item id。这给了我一个可靠的ID。
答案 3 :(得分:0)
ComboBox1.ItemIndex
就是您所需要的。
要获取与所选项目关联的文本,您可以执行以下操作:
Text := ComboBox1.Items[ ComboBox1.ItemIndex ];
见:http://docwiki.embarcadero.com/Libraries/Sydney/en/FMX.ListBox.TCustomComboBox.ItemIndex