Почему неработает Runtime создание обработчика для TcxComboBoxProperties.

Страдалецъ
Дата: 20.11.2007 00:53:40
Вот собственно такой код:
type
  TForm1 = class(TForm)
    cxVerticalGrid1: TcxVerticalGrid;
    procedure FormCreate(Sender: TObject);
    procedure ObjectComboBoxOnChange(Sender: TObject);
  private
    ObjectComboBox: TcxEditorRow;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.ObjectComboBoxOnChange(Sender: TObject);
begin
 ShowMessage(ObjectComboBox.Properties.Value);
end;

procedure TForm1.FormCreate(Sender: TObject);
Var A: TcxComboBoxProperties;
begin
 ObjectComboBox := cxVerticalGrid1.Add(TcxEditorRow) as TcxEditorRow;
 ObjectComboBox.Properties.Caption := 'Животины';
 ObjectComboBox.Properties.EditPropertiesClass := TcxComboBoxProperties;
 A := TcxComboBoxProperties(ObjectComboBox.Properties.EditProperties);
 A.Items.Add('Слон');
 A.Items.Add('Мышь');
 A.Items.Add('Кошка');
 A.Items.Add('Собака');
 A.OnChange := ObjectComboBoxOnChange;
end;
По идее ShowMessage(ObjectComboBox.Properties.Value) должно возвращать выбранное значение,а вот почему-то ObjectComboBox.Properties.Value там оказывается = null. Почему так?
Johnmen
Дата: 20.11.2007 10:35:09
1. По какой идее?
2. Где ShowMessage?
3. Где "выбор значения"?
Страдалецъ
Дата: 20.11.2007 20:42:53
Ну хоть кто-то что сказал. :)
В рантайме создается и заполняется значениями комбобокс. Создается свой обработчик ObjectComboBoxOnChange который срабатывает при выборе элемента из этого комбобокса.
Но! Вместо ожидаемого выбранного значения имеем null. Тот-же комбобокс с таким-же обработчиком созданный в дизайнмоде возвращает правильно выбранное значение.
Почему такое происходит?
Teo
Дата: 21.11.2007 10:15:49
Поищи здесь...
Johnmen
Дата: 21.11.2007 10:56:47
Страдалецъ
Но! Вместо ожидаемого выбранного значения имеем null. Тот-же комбобокс с таким-же обработчиком созданный в дизайнмоде возвращает правильно выбранное значение.

Как это было определено?
Страдалецъ
Дата: 21.11.2007 12:01:02
Johnmen
Страдалецъ
Но! Вместо ожидаемого выбранного значения имеем null. Тот-же комбобокс с таким-же обработчиком созданный в дизайнмоде возвращает правильно выбранное значение.

Как это было определено?

Злементарно, посмотрел что у меня попадает в ObjectComboBox.Properties.Value при вызове TForm1.ObjectComboBoxOnChange.
Страдалецъ
Дата: 23.11.2007 00:01:48
Похоже был слегка неправ. Изменение ObjectComboBox.Properties.Value происходит после смены фокуса, а не в момент вызова моего обработчика кая я считал ранее. Но тогда вообще непонятно в каком месте мне искать результат выбора комбобокса. Значение на экране меняется, а вот где оно в ObjectComboBox заныкано непонятно.