问题描述
是否可以使用多个值填充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属性指定的字段。