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

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

Разработка компонента [D4, D5, Win95/98, Win2k]


Yarmak_Sergey ©   (2003-02-08 13:10:00) 

Уважаемые мастера!!!
Пишу компонент, кот. в себе инкапсулирует несколько визуальных контролов, в том числе TRadioGroup. Предположим назовем этот компонент TTestComponent = class(TCustomControl).

В конструкторе TTestComponent я пишу следующее

constructor TTestComponent.Create(AOwner: TComponent);
begin

FRadioGroup := TRadioGroup.Create(Self);
FRadioGroup.Parent := Selft;
FRadioGroup.Items.Add("First Item");
FRadioGroup.Items.Add("Second Item");
end;

Так вот вопрос, почему когда я перетягиваю контрол с палитры ком понент на форму возникает ошибка с сообщением
"Control has no parent window" ?


Юрий Зотов   (2003-02-09 10:18:00) [1]

Ошибка возникает из-за строк:
FRadioGroup.Items.Add("First Item");
FRadioGroup.Items.Add("Second Item");

Причина - в конструкторе у FRadioGroup еще нет окна.

Заместите метод CreateWnd и перенесите эти строки в него, строго ПОСЛЕ вызова inherited.


Style   (2003-02-08 23:17:00) [2]

Зачем использовать TRadioGroup юзай TPanel и кучу RadioButton
а в TRadioGroup глюк
в модуле ExtCtrls
в процедуре ArrangeButtons

строчка DeferWindow если ее удалить то все работает :))


Anatoly Podgoretsky   (2003-02-08 15:16:00) [3]

Это ты их должен писать :-)


Yarmak_Sergey   (2003-02-08 15:10:00) [4]

Palladin ©

А что на уровне конструктора не определен Parent?
Тогда, когда же определяется Parent для TTestComponent?
И почему если не пишешь строки
FRadioGroup.Items.Add("First Item");
FRadioGroup.Items.Add("Second Item");

то все корректно?


Palladin   (2003-02-08 13:16:00) [5]

ИМХО

inherited Create(AOwner)
self.parent:=AOwner

в конструкторе попоробуй написать


Романов Р.В.   (2003-02-08 13:15:00) [6]


> FRadioGroup.Parent := Selft;

Наверно не Self, а Self.Parent. Хотя вы лучше должны знать как он должен работать.


Наверх

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