2

ComboBoxFMX フォームにがあります。id次の方法で、データソース (-integer フィールドと -varcharフィールドを持つテーブルspeciality) にバインドされます。

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(から) の値にアクセスするのは簡単ですが、追加の SQL 要求なしで選択した項目ComboBox1.Selected.Textの値にアクセスする方法が見つかりません。idTComboBox またはその ListBox のどこに保存されますか? どこにSelectedValue保存され、どのように取得するのですか (整数として)?

4

4 に答える 4

3

tm。コンボの SelectedValue と他のコントロールとの間に livebinding リンクを設定する必要があります。バインディング エディターのスクリーンショットを添付しました。ラベルに 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

現在、問題を解決するために次の方法を使用しています。次のようにイベントを処理し、 ItemsOnFillingListItemに ID 番号を格納します。実際には良くないのですが、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 をフェッチします。これにより、信頼できる ID が得られます。

于 2015-11-11T18:16:17.750 に答える