2

FMX 表格上有一个ComboBox。它通过以下方式与数据源(具有id-integer 和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访问 selected (from )的值很简单,但如果没有额外的 SQL 请求,ComboBox1.Selected.Text我找不到访问所选项目值的方法。id它存储在 TComboBox 或其 ListBox 中的什么位置?存储在哪里SelectedValue以及如何获取它(作为整数)?

4

4 回答 4

3

Tm值。您必须在组合的 SelectedValue 与其他控件之间设置实时绑定链接。我附上了绑定编辑器的截图。标签将显示 id。 在此处输入图像描述

于 2015-07-22T17:03:13.603 回答
2

您可以通过定义绑定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 将值内部存储在字典中。

于 2016-04-08T09:39:21.027 回答
1

我目前正在使用以下方法来解决问题。我OnFillingListItem通过以下方式处理事件并将 ID 号存储在ComboBoxItems 中。我使用Tag属性虽然它实际上并不好。

procedure TForm1.LinkFillControlToField1FillingListItem(Sender: TObject;
  const AEditor: IBindListEditorItem);
begin
  (AEditor.CurrentObject as TListBoxItem).Tag :=
    YourLookuptable.FieldByName('id').AsInteger;
end;

稍后我从 ListBox1.Selected.Tag 中获取项目 ID。这给了我一个可靠的ID。

于 2015-11-11T18:16:17.750 回答
0

ComboBox1.ItemIndex是你所需要的全部。

要获取与所选项目关联的文本,您可以执行以下操作:

Text := ComboBox1.Items[ ComboBox1.ItemIndex ];

请参阅:http ://docwiki.embarcadero.com/Libraries/Sydney/en/FMX.ListBox.TCustomComboBox.ItemIndex

于 2021-05-28T05:17:09.957 回答