Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание ComboBox'а для компонента [D6, WinXP]


AZ ©   (2004-11-02 17:18:00) 

Прошу прощения за детский вопрос, просто с этим никогда не сталкивался.

...
 cbSelector:=TComboBox.Create(Self);
 cbSelector.Parent:=Self;
// Тут координаты cbSelector'a
 cbSelector.Items.Add(S); //В этом месте возникает сбой
-------------------^^^


Сообщение - "компонент не имеет родителя (parent)".
Insert дает тот же результат.
Закомментировав строку, получаю комбобокс без Items'ов, что естественно.
Но это также и показывает, что предыдущий код работает.


AZ   (2004-11-02 20:10:00) [1]

О!
Сразу два ответа!
Большое спасибо*2^10!


Юрий Зотов   (2004-11-02 18:37:00) [2]

Только я бы еще добавил проверку cbSelector на nil. Потому что иначе этот код будет отрабатывать при каждом RecreateWnd.


MBo   (2004-11-02 17:39:00) [3]

В конструкторе компонента еще не создано окно, а многие операции с Combobox требуют наличия действительного дескриптора окна.
Нужно в объявлении класса:

procedure CreateWnd; override;

а в реализации

procedure TSuperComponent.CreateWnd;
begin
 inherited CreateWnd;
 cbSelector:=TComboBox.Create(Self);//эти строки можно в принципе
 cbSelector.Parent:=Self;//и в конструкторе оставить
 cbSelector.Items.Add(S);
end;


AZ   (2004-11-02 17:28:00) [4]

"Он любил выражаться коротко и непонятно" (с) не мое.
Можно в чуть более развернутом виде?


MBo   (2004-11-02 17:24:00) [5]

Перенеси этот код в перекрытый метод CreateWnd


Наверх

Титульная страница Поиск, карта сайта Написать письмо