Форум: "Компоненты";
Текущий архив: 2007.04.08;
Скачать: [xml.tar.bz2];
ВнизTObj = class(TGraphicControl) Найти похожие ветки
← →
Isaak (2006-06-22 15:18) [0]Создаю компонент. Идея компонента - объединение в себе TLabel, TEdit и др.
Проблема. При проектировании формы вытаскиваю это компонент на форму. Создаются два - первый Obj1 там, где щелкнул мышкой и второй TLabel в левом верхнем углу формы с пустым свойством Name. Что я неправильно сделал и как сделать так, чтобы TLabel появлялся внутри Obj1?
TObj = class(TGraphicControl)
private
FLabel: TLabel;
public
constructor Create(AOwner: TComponent); override;
end;
constructor TObj.Create(AOwner: TComponent);
begin
inherited;
FLabel := TCustomLabel.Create(AOwner);
FLabel.Parent := TWinControl(AOwner);
end;
← →
StriderMan © (2006-06-22 15:23) [1]вот здесь
FLabel.Parent := TWinControl(AOwner);
явно указывается что FLabel должен рисоваться на родителе Obj1
A родителем Obj1 является форма или что-то на чем он лежит. Вот лэйбл на форме и рисуется.
По поводу Name. Он автоматически не заполняется.
← →
Isaak (2006-06-22 15:34) [2]Я неправильно выбрал родительский класс. Нужно TGraphicControl заменить на TWinControl. А в конструкторе написать
FLabel.Parent := TWinControl(self);
← →
Isaak (2006-06-22 15:35) [3]
> StriderMa
Спасибо, что навели на мысль
← →
StriderMan © (2006-06-23 15:25) [4]
> FLabel.Parent := TWinControl(self);
в случае если
> TGraphicControl заменить на TWinControl
можно просто Self;
но TWinControl не имеет свойства Canvas. Приедтся прикурчивать его ручками. Можно посмотреть как в TGraphicControl сделано.
Страницы: 1 вся ветка
Форум: "Компоненты";
Текущий архив: 2007.04.08;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.043 c