Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.29;
Скачать: CL | DM;

Вниз

новый класс на базе чекбокса   Найти похожие ветки 

 
malamba   (2002-07-16 09:28) [0]

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

Создал новый класс на основе 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);

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


 
Kaban ©   (2002-07-16 09:33) [1]

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


 
olookin ©   (2002-07-16 09:36) [2]

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

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

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


 
Eugene Lachinov ©   (2002-07-16 09:41) [3]

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

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


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

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

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



Страницы: 1 вся ветка

Текущий архив: 2002.07.29;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
7-95577
KUAW
2002-05-13 16:35
2002.07.29
Как БЫСТРО повернуть область Canvas-a заданную TRect на 90 град.


1-95398
ZEE
2002-07-16 02:41
2002.07.29
ListView - не изменять ширину колонок


3-95235
User_OKA
2002-07-04 07:52
2002.07.29
Деревья SQL


14-95510
Svge
2002-07-02 12:09
2002.07.29
ISA ограничение трафика для юзверя


3-95210
Martyn
2002-07-06 16:19
2002.07.29
HELP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!