具有多列的TcxComboBox

问题描述

是否可以使用多个值填充TcxComboBox?

ID  NAME    DESCRIPTION
1   Audi    Audi desc
2   Bmw     Bmw desc

然后在按钮上单击获取ID或名称?

解决方法

您可以使用TcxLookUpComboBox进行此操作。这很简单,但是需要您定义一个内存数据集来保存 您希望cxLookUpComboBox列出的记录,除非您已经有另一个数据集,其中包含要在其下拉列表中显示的记录,在这种情况下,您可以使用它。我将展示的示例使用了TClientDataSet,因此它是独立的。 在下面,CDS1是TClientDataSet,DS1是TDataSource,其数据集是CDS1:

uses cxLookUpDBGrid;

procedure TForm1.FormCreate(Sender: TObject);
var
  i : Integer;
  Field : TField;
  Column : TcxLookUpDBGridColumn; // needs cxLookUpDBGrid in Uses clause
begin
  Field := TIntegerField.Create(Self);
  Field.FieldName := 'ID';
  Field.DataSet := CDS1;

  Field := TStringField.Create(Self);
  Field.FieldName := 'Name';
  Field.DataSet := CDS1;

  CDS1.CreateDataSet;

  CDS1.IndexFieldNames := 'ID';

  //  Next,populate the CDS with a few records
  CDS1.InsertRecord([1,'Apple']);
  CDS1.InsertRecord([2,'Pear']);
  CDS1.InsertRecord([3,'Banana']);

  CDS1.First;

  cxLookUpComboBox1.Properties.KeyFieldNames := 'ID';
  cxLookUpComboBox1.Properties.ListFieldNames := 'ID;Name';
  cxLookUpComboBox1.Properties.ListSource := DS1;
  cxLookUpComboBox1.Properties.ListFieldIndex := 2;  // returns Name value
  cxLookUpComboBox1.Properties.KeyFieldNames := 'ID';

  //  Next,add 2 columns to cxLookUpComboBox1 drop-down list

  Column := cxLookUpComboBox1.Properties.ListColumns.Add;
  Column.FieldName := 'ID';

  Column := cxLookUpComboBox1.Properties.ListColumns.Add;
  Column.FieldName := 'Name';

end;

如果愿意,您可以在 对象检查器,可以在其属性属性下的ListColumns中找到。当你 将在OI中看到,它是高度可配置的。

请注意,当下拉菜单关闭时,返回的值是由ListFieldIndex属性指定的字段。

enter image description here

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...