具有多列的 TcxComboBox
TcxComboBox with multiple column
是否可以使用多个值填充 TcxComboBox,例如
ID NAME DESCRIPTION
1 Audi Audi desc
2 Bmw Bmw desc
然后点击按钮获取 ID 或 NAME?
您可以使用 TcxLookUpComboBox 执行此操作。做起来非常简单,但需要您定义一个 in-memory 数据集来保存
您希望 cxLookUpComboBox 列出的记录,除非您已经有另一个数据集包含您想要在其 drop-down 列表中显示的记录,在这种情况下您可以使用它。我要展示的示例使用 TClientDataSet,因此它是 self-contained。
下面CDS1是TClientDataSet,DS1是数据集是CDS1的TDataSource:
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中看到,是高度可配置的。
注意当drop-down关闭时,返回的值是ListFieldIndex指定的字段属性。
是否可以使用多个值填充 TcxComboBox,例如
ID NAME DESCRIPTION
1 Audi Audi desc
2 Bmw Bmw desc
然后点击按钮获取 ID 或 NAME?
您可以使用 TcxLookUpComboBox 执行此操作。做起来非常简单,但需要您定义一个 in-memory 数据集来保存 您希望 cxLookUpComboBox 列出的记录,除非您已经有另一个数据集包含您想要在其 drop-down 列表中显示的记录,在这种情况下您可以使用它。我要展示的示例使用 TClientDataSet,因此它是 self-contained。 下面CDS1是TClientDataSet,DS1是数据集是CDS1的TDataSource:
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中看到,是高度可配置的。
注意当drop-down关闭时,返回的值是ListFieldIndex指定的字段属性。