Форум: "Компоненты";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
ВнизСоздание ComboBox а для компонента Найти похожие ветки
← →
AZ © (2004-11-02 17:18) [0]Прошу прощения за детский вопрос, просто с этим никогда не сталкивался.
...
cbSelector:=TComboBox.Create(Self);
cbSelector.Parent:=Self;
// Тут координаты cbSelector"a
cbSelector.Items.Add(S); //В этом месте возникает сбой
-------------------^^^
Сообщение - "компонент не имеет родителя (parent)".
Insert дает тот же результат.
Закомментировав строку, получаю комбобокс без Items"ов, что естественно.
Но это также и показывает, что предыдущий код работает.
← →
MBo © (2004-11-02 17:24) [1]Перенеси этот код в перекрытый метод CreateWnd
← →
AZ © (2004-11-02 17:28) [2]"Он любил выражаться коротко и непонятно" (с) не мое.
Можно в чуть более развернутом виде?
← →
MBo © (2004-11-02 17:39) [3]В конструкторе компонента еще не создано окно, а многие операции с Combobox требуют наличия действительного дескриптора окна.
Нужно в объявлении класса:
procedure CreateWnd; override;
а в реализации
procedure TSuperComponent.CreateWnd;
begin
inherited CreateWnd;
cbSelector:=TComboBox.Create(Self);//эти строки можно в принципе
cbSelector.Parent:=Self;//и в конструкторе оставить
cbSelector.Items.Add(S);
end;
← →
Юрий Зотов © (2004-11-02 18:37) [4]Только я бы еще добавил проверку cbSelector на nil. Потому что иначе этот код будет отрабатывать при каждом RecreateWnd.
← →
AZ © (2004-11-02 20:10) [5]О!
Сразу два ответа!
Большое спасибо*2^10!
Страницы: 1 вся ветка
Форум: "Компоненты";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.01 c