vcl-cxdropdownedit-dot-tcxcombobox-475772e2.md
Provides access to combo box settings.
property Properties: TcxComboBoxProperties read; write;
| Type | Description |
|---|---|
| TcxComboBoxProperties |
Stores combo box settings.
|
You can use the Properties property to access and customize image editor settings if the RepositoryItem property is unspecified. If a combo box repository item is assigned to the RepositoryItem property, all settings accessible through the Properties property have no effect on the combo box.
Note
You can use the ActiveProperties property to identify settings that currently affect the combo box editor.
You can set the Properties.Revertable property to True to allow users to click a combo box editor to cycle through its values. The Properties.DropDownListStyle property allows you to switch between three user input modes.
In addition, Properties.DropDownAutoWidth, Properties.DropDownListStyle Properties.DropDownRows, Properties.DropDownSizeable, and Properties.DropDownWidth properties allow you to customize a combo box drop-down window.
Refer to the TcxComboBoxProperties class description for detailed information on all available options.
The code example in this section does the following:
Tip
If you need to add a user input string as a new combo box item, handle the OnNewLookupDisplayText event.
How to Test this Code Example
Follow the steps below to test this code example in your RAD Studio IDE:
object cxGrid1: TcxGrid
Left = 72
Top = 80
Width = 545
Height = 200
TabOrder = 0
object cxGrid1DBTableView1: TcxGridDBTableView
Navigator.Buttons.CustomButtons = <>
ScrollbarAnnotations.CustomAnnotations = <>
DataController.DataSource = DataSource1
DataController.Summary.DefaultGroupSummaryItems = <>
DataController.Summary.FooterSummaryItems = <>
DataController.Summary.SummaryGroups = <>
object cxGrid1DBTableView1RecId: TcxGridDBColumn
DataBinding.FieldName = 'RecId'
Visible = False
end
object cxGrid1DBTableView1Groups: TcxGridDBColumn
DataBinding.FieldName = 'Groups'
end
object cxGrid1DBTableView1Names: TcxGridDBColumn
DataBinding.FieldName = 'Names'
end
object cxGrid1DBTableView1Values: TcxGridDBColumn
DataBinding.FieldName = 'Values'
Width = 54
end
end
object cxGrid1Level1: TcxGridLevel
GridView = cxGrid1DBTableView1
end
end
object dxMemData1: TdxMemData
Active = True
Indexes = <>
Persistent.Data = {
5665728FC2F5285C8FFE3F04000000140000000100070047726F757073001400
0000010006004E616D657300040000000300070056616C756573000400000009
000600446174657300010600000047726F75703101050000004E616D6531010A
000000017B000B00010600000047726F75703101050000004E616D6532011400
000001CF0E0B00010600000047726F75703201050000004E616D6533011E0000
00017A210B00010600000047726F75703201050000004E616D65340128000000
01892B0B00}
SortOptions = []
Left = 520
Top = 88
object dxMemData1Groups: TStringField
FieldName = 'Groups'
end
object dxMemData1Names: TStringField
FieldName = 'Names'
end
object dxMemData1Values: TIntegerField
FieldName = 'Values'
end
object dxMemData1Dates: TDateField
FieldName = 'Dates'
end
end
object DataSource1: TDataSource
DataSet = dxMemData1
Left = 472
Top = 176
end
uses
cxDropDownEdit; // Declares the TcxComboBoxProperties class
// ...
procedure TMyForm.FormCreate(Sender: TObject);
var
AProperties: TcxComboBoxProperties;
begin
// Assign a combo box as an in-place editor for the "Names" grid column
cxGrid1DBTableView1Names.PropertiesClass := TcxComboBoxProperties;
AProperties := cxGrid1DBTableView1Names.Properties as TcxComboBoxProperties;
AProperties.BeginUpdate; // Initiates the following batch operation
try
AProperties.Sorted := True; // Sorts prepopulated values
AProperties.DropDownListStyle := lsFixedList; // Limits user input to the prepoulated list
AProperties.DropDownAutoWidth := False; // Disables automatic menu width adjustment
AProperties.DropDownWidth := 105; // Sets a fixed drop-down menu width
// Populate the combo box editor's drop-down menu from the "Names" dataset field
dxMemData1.DisableControls;
try
dxMemData1.First;
while not dxMemData1.Eof do
begin
AProperties.Items.Add(dxMemData1.FieldByName('Names').AsString);
dxMemData1.Next;
end;
dxMemData1.First;
finally
dxMemData1.EnableControls;
end;
finally
AProperties.EndUpdate; // Calls EndUpdate regardless of the batch operation's success
end;
end;
#include "cxDropDownEdit.hpp" // Declares the TcxComboBoxProperties class
// Add the following linker directive to the corresponding CPP source file:
#pragma link "cxDropDownEdit" // Required to use cxDropDownEdit declarations
void __fastcall TMyForm::FormCreate(TObject *Sender)
{
TcxComboBoxProperties *AProperties;
// Assign a combo box as an in-place editor for the "Names" grid column
cxGrid1DBTableView1Names->PropertiesClass = __classid(TcxComboBoxProperties);
AProperties = dynamic_cast<TcxComboBoxProperties*>(cxGrid1DBTableView1Names->Properties);
AProperties->BeginUpdate(); // Initiates the following batch operation
try
{
AProperties->Sorted = true; // Sorts prepopulated values
AProperties->DropDownListStyle = lsFixedList; // Limits user input to the prepopulated list
AProperties->DropDownAutoWidth = false; // Disables automatic menu width adjustment
AProperties->DropDownWIdth = 105; // Sets a fixed drop-down menu width
// Populate the combo box editor's drop-down menu from the "Names" dataset field
dxMemData1->DisableControls();
try
{
dxMemData1->First;
do
{
AProperties->Items->Add(dxMemData1->FieldByName("Names")->AsString);
dxMemData1->Next();
} while(!dxMemData1->Eof);
}
__finally
{
dxMemData1->EnableControls();
}
}
__finally
{
AProperties->EndUpdate(); // Calls EndUpdate regardless of the batch operation's success
}
}
The code example in this section applies the following changes to an in-place combo box editor of the Names column in a data-aware Data Grid View:
How to Test this Code Example
Follow the steps below to test this code example in your RAD Studio IDE:
object cxGrid1: TcxGrid
Left = 72
Top = 80
Width = 545
Height = 200
TabOrder = 0
object cxGrid1DBTableView1: TcxGridDBTableView
Navigator.Buttons.CustomButtons = <>
ScrollbarAnnotations.CustomAnnotations = <>
DataController.DataSource = DataSource1
DataController.Summary.DefaultGroupSummaryItems = <>
DataController.Summary.FooterSummaryItems = <>
DataController.Summary.SummaryGroups = <>
object cxGrid1DBTableView1RecId: TcxGridDBColumn
DataBinding.FieldName = 'RecId'
Visible = False
end
object cxGrid1DBTableView1Groups: TcxGridDBColumn
DataBinding.FieldName = 'Groups'
end
object cxGrid1DBTableView1Names: TcxGridDBColumn
DataBinding.FieldName = 'Names'
PropertiesClassName = 'TcxComboBoxProperties'
Properties.Items.Strings = (
'Name1'
'Name2'
'Name3'
'Name4')
end
object cxGrid1DBTableView1Values: TcxGridDBColumn
DataBinding.FieldName = 'Values'
Width = 54
end
end
object cxGrid1Level1: TcxGridLevel
GridView = cxGrid1DBTableView1
end
end
object dxMemData1: TdxMemData
Active = True
Indexes = <>
Persistent.Data = {
5665728FC2F5285C8FFE3F04000000140000000100070047726F757073001400
0000010006004E616D657300040000000300070056616C756573000400000009
000600446174657300010600000047726F75703101050000004E616D6531010A
000000017B000B00010600000047726F75703101050000004E616D6532011400
000001CF0E0B00010600000047726F75703201050000004E616D6533011E0000
00017A210B00010600000047726F75703201050000004E616D65340128000000
01892B0B00}
SortOptions = []
Left = 520
Top = 88
object dxMemData1Groups: TStringField
FieldName = 'Groups'
end
object dxMemData1Names: TStringField
FieldName = 'Names'
end
object dxMemData1Values: TIntegerField
FieldName = 'Values'
end
object dxMemData1Dates: TDateField
FieldName = 'Dates'
end
end
object DataSource1: TDataSource
DataSet = dxMemData1
Left = 472
Top = 176
end
procedure TMyForm.ComboBox(
Sender: TObject; const AText: TCaption);
var
AProperties: TcxComboBoxProperties;
begin
AProperties := cxGrid1DBTableView1Names.Properties as TcxComboBoxProperties;
dxMemData1.DisableControls;
try
dxMemData1.Append;
AProperties.Items.Add(AText);
cxGrid1DBTableView1Names.DataBinding.Field.AsString := AText;
dxMemData1.Post;
finally
dxMemData1.EnableControls;
end;
end;
void __fastcall TMyForm::ComboBox(TObject *Sender, const TCaption &AText)
{
TcxComboBoxProperties *AProperties;
// ...
AProperties = dynamic_cast<TcxComboBoxProperties*>(cxGrid1DBTableView1Names->Properties);
dxMemData1->DisableControls();
try
{
dxMemData1->Append();
AProperties->Items->Add(AText);
cxGrid1DBTableView1Names->DataBinding->Field->AsString = AText;
dxMemData1->Post();
}
__finally
{
dxMemData1->EnableControls();
}
}
See Also
TcxComboBox.ActiveProperties Property