如何从TcxDBLookupComboBox组件中选择值?

时间:2019-02-17 20:54:52

标签: delphi devexpress

我正在使用Delphi 10.3 Rio和DevExpress 18.1.6库。

在我的项目中,我有TcxDBLookupComboBox组件。

我填充了该组合框,如您在此处看到的

Populated Combo Box

但是当我选择一个值并单击它时,什么也没有发生。

我检查了该组件的属性,但是找不到任何可以帮助我的东西。

关于如何实现该目标的任何想法?

1 个答案:

答案 0 :(得分:2)

如果您有这种行为,则表示您的表单配置不正确。

下面是一个示例项目的摘录,该项目是“自包含的” 它在Form的FormCreate事件中的代码中创建其数据和查找数据。 它完全可以正常工作-当我单击DBLookUpcombo列表时 所选列表条目中的值立即显示在ValueClientDataSet1

的字段
  procedure TForm1.FormCreate(Sender: TObject);
  var
    AField : TField;
  begin
    //  First create some dataset fields
    AField := TIntegerField.Create(Self);
    AField.FieldName := 'ID';
    AField.FieldKind := fkData;
    AField.DataSet := ClientDataSet1;

    AField := TStringField.Create(Self);
    AField.FieldName := 'Value';
    AField.FieldKind := fkData;
    AField.Size := 40;
    AField.DataSet := ClientDataSet1;

    ClientDataSet1.CreateDataSet;
    ClientDataSet1.InsertRecord([1, 'SomeValue']);

    AField := TStringField.Create(Self);
    AField.FieldName := 'luValue';
    AField.FieldKind := fkData;
    AField.Size := 40;
    AField.DataSet := cdsLU;

    cdsLU.CreateDataSet;
    cdsLU.InsertRecord(['One']);
    cdsLU.InsertRecord(['Two']);
    cdsLU.InsertRecord(['Three']);

    DBLookupComboBox1.DataSource := DataSource1;
    DBLookupComboBox1.DataField := 'Value';

    DBLookupComboBox1.KeyField := 'luValue';
    DBLookupComboBox1.ListField := 'luValue';
    DBLookupComboBox1.ListSource := DataSource2;

  end;

TForm1的其余部分:

  type
    TForm1 = class(TForm)
      DataSource1: TDataSource;
      DBGrid1: TDBGrid;
      DBNavigator1: TDBNavigator;
      ClientDataSet1: TClientDataSet;
      DBLookupComboBox1: TDBLookupComboBox;  // or TcxDBLookupComboBox
      cdsLU: TClientDataSet;
      DataSource2: TDataSource;
      procedure FormCreate(Sender: TObject);
    public
    end;