![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
component [D5]
race1 © (2002-12-27 15:40:00)я пишу компонент и мне при его создании нужно ещё один компонент скреатить (лабел). делаю так:
constructor TTextShape.Create(AOwner: TComponent);
begin
lbl:=TLabel.Create(AOwner);
lbl.Parent:=Parent;
lbl.Left:=Left;
lbl.Top:=Top;
lbl.Caption:="qwer";
inherited Create(AOwner)
end;
а почему-то qwer не вижу на компоненте
race1 (2002-12-28 07:27:00) [1]всем спасибо, перекрыл setparent.
а как передвигать лэйбл во время передвижения шейпа в десигн тайм?
>MBo
я думаю мне удобнее и проще будет приделать нелепый лэйбл, чем заниматься гемороем с рисованием на канве...
Skier (2002-12-27 16:13:00) [2]>MBo
> А вообще, IMHO, нелепо на TGraphicControl Label привешивать.
> Добавить строковое свойство да и рисовать этот текст в Paint.
Полностью согласен...и без извращений...
MBo (2002-12-27 16:08:00) [3]>TTextShape = class(TShape)
Тогда Self Parent-ом быть не может - нужен WinControl.
Если SetParent перекрывать, то это будет AParent.
А вообще, IMHO, нелепо на TGraphicControl Label привешивать. Добавить строковое свойство да и рисовать этот текст в Paint.
Skier (2002-12-27 15:48:00) [4]>MBo
TTextShape = class(TShape)
Насколько я помню...
Skier (2002-12-27 15:46:00) [5]>race1
А потому что lbl.Parent:=Parent;это на самом деле lbl.Parent:=nil; т.к. в конструкторе родителя ещё нет (=nil)
перекрой метод SetParent у TTextShape и там устанавливай родителя
для lbl...
Roma (2002-12-27 15:46:00) [6]race1 © (27.12.02 15:40)
А потому что его там нет...
Конструктор предка (inherited Create) нужно вызывать в первой строке, а не в последней... И не inherited Create(AOwner), а inherited Create( Self)... И Parent := Self... Лэйбл же должен принадлежать твоему компоненту и лежать на твоем компоненте, а не где-то еще...
MBo (2002-12-27 15:44:00) [7]inherited Create(AOwner);
lbl:=TLabel.Create(Self);
lbl.Parent:=Self???;//чей наследник TTextShape?????
lbl.Left:=0;
lbl.Top:=0;