Если вы получаете такое поведение, ваша форма настроена неправильно.
Ниже приведен фрагмент из примера проекта, который «самодостаточен», поскольку он создает свои данные и ищет данные вкод в событии FormCreate формы.Он работает полностью корректно - когда я щелкаю в списке DBLookUpcombo, значение из выбранной записи списка немедленно появляется в поле Value
ClientDataSet1
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;