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

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

новый класс на базе чекбокса [D6, Win2k]


malamba ©   (2002-07-16 09:28:00) 

Братья по разуму, помогите разобраться!

Создал новый класс на основе CheckBox-a (отличие - в нескольких доп. полях, в которых сохраняю свои данные). Экземпляры класса создаются в run-time. Даю им родителя, размеры, положение и свои данные.
В debug-time для проверки кладу на форму новый компонент и вижу все его новые свойства в Инспекторе объектов.
В run-time ничего не создается. Точнее создается, но поскольку владелец - TComponent, ничего не прорисовывается.
Пробовал указывать владельцем TWinControl - такое впечатление, что в новом классе только мои свойства, а от родительского ничего не передалось. Имя - от формы, на мои имена не реагирует.

Для наглядности - кусочки кода:


type
TCheckBoxGost = class(TCheckBox)
private
FKolStranic: Integer;

protected
procedure SetKolStranic(const Value: Integer);

published
constructor Create(AOwner: TWinControl);
destructor Destroy(AOwner: TWinControl);
property KolStranic: Integer read FKolStranic write SetKolStranic;

****************************************************************
constructor TCheckBoxGost.Create(AOwner: TWinControl);
begin
inherited Create(AOwner) ;
end;


****************************************************************
А вызываю я его так:

MyCheckBoxGost:= TCheckBoxGost.Create(Self);

Где-то явная лажа, но где - не хватает опыта понять...


malamba   (2002-07-16 17:28:00) [1]

Eugene Lachinov-у
знаю, что нужно override;, но у меня эта зараза сообщает, что неопознаваемое слово. Возможно что-то где-то не упомянулось. НО работает и без этого, тем более, что на стандартные методы CheckBoxa я не покушался.

Всем спасибо!
Главная бяка была вот в чем:
была строка
.Parent:=(фрейм, в котором создавались чекбоксы);
Вместо имени фрейма у меня стояла переменная, в которой хранилось это самое имя.
Когда ввел имя напрямую, все мои родненькие повылазили.


Eugene Lachinov   (2002-07-16 09:41:00) [2]

published
constructor Create(AOwner: TWinControl);
destructor Destroy(AOwner: TWinControl);

Это как-то неправильно, хотя в данной реализации несущественно, обычно
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;


olookin   (2002-07-16 09:36:00) [3]

Нужно поставить строку:

MyCheckBoxGost.Parent:=Form1 (или self);

После этого у меня все появилось.


Kaban   (2002-07-16 09:33:00) [4]

MyCheckBoxGost:= TCheckBoxGost.Create(Self);
MyCheckBoxGost.Parent:=Self;


Наверх

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