Как выбрать значение из компонента TcxDBLookupComboBox? - PullRequest
0 голосов
/ 17 февраля 2019

Я использую библиотеку Delphi 10.3 Rio и DevExpress 18.1.6.

Внутри моего проекта есть компонент TcxDBLookupComboBox.

Я заполняю это поле со списком, как вы видите здесь

Populated Combo Box

Но когда я выбираю одно из значений и нажимаю на него, ничего не происходит.

Я проверяю свойства этого компонента, но могуне могу найти ничего, что могло бы мне помочь.

Есть идеи, как мне этого добиться?

1 Ответ

0 голосов
/ 18 февраля 2019

Если вы получаете такое поведение, ваша форма настроена неправильно.

Ниже приведен фрагмент из примера проекта, который «самодостаточен», поскольку он создает свои данные и ищет данные вкод в событии 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...