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

Вниз

Control "Has no parent window"   Найти похожие ветки 

 
Ломов   (2007-01-15 15:07) [0]

Здравствуйте! Пытаюсь объеденить два компонента

Есть главный компонент от TScrollBox

type TMyClass = class(TScrollBox)
 private

 public
  Finder: TFinder ;
   constructor Create(AOwner: TComponent); override;
   destructor Destroy; override;
 end;


и

младший компонент от tpaintbox

type
 TFinder = class(TPaintBox)
 private
   protected
   procedure Paint; override;
   procedure Painter;
 public
   constructor Create(AOwner: TComponent); override;
   destructor Destroy; override;
 published
   end;


в создателе главного я пишу так

constructor TMyClass.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);
 Parent:=AOwner as TWinControl;
 Finder := TFinder .Create(Self);
 Finder .Parent:=self;
 Finder .Visible := True;
end;


Младшего так

constructor TFinder.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);
end;


Это прекрасно работает

procedure TFinder.Paint;
begin
 with inherited Canvas do
 begin
   Pen.Style := psDash;
   Brush.color := clwhite;
   Rectangle(0, 0, Width, Height);
 end;

end;


а вот при вызове этой процедуры возникает сабжевое сообщение

procedure TFinder.Painter;
begin
 with inherited Canvas do
 begin
   Pen.Style := psDash;
   Brush.color := clwhite;
   Rectangle(0, 0, Width, Height);
 end;

end;


знаю, в инициализации второго объекта напортачил, а как, не доходит. Поможите


 
ors_archangel ©   (2007-01-15 15:37) [1]

Можно банально

procedure TFinder.Painter;
begin
if HasParent then with inherited Canvas do  begin
  Pen.Style := psDash;
  Brush.color := clwhite;
  Rectangle(0, 0, Width, Height);
end;
end;


 
Ломов   (2007-01-16 05:54) [2]


> ors_archangel ©   (15.01.07 15:37) [1]

Не помогло (
Может есть еще варианты?


 
ors_archangel ©   (2007-01-16 06:06) [3]


>  Finder .Visible := True;

зачем?
Когда вызывается Painter?


 
Ломов   (2007-01-16 06:24) [4]


> ors_archangel ©

Спасибо за внимание. Вопрос снят. Это я сам затупил. Пытался вызвать Painter посредством другой процедуры из конструктора TFinder, предварительно не позаботившись о флагах


 
DimaBr   (2007-01-16 09:25) [5]

Перенесите присвоение парента вложенного компонента в перекрытие метода SetParent


 
Ega23 ©   (2007-01-16 11:36) [6]


> Перенесите присвоение парента вложенного компонента в перекрытие
> метода SetParent


Точно.



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

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

Наверх




Память: 0.48 MB
Время: 0.098 c
15-1169017524
vajo
2007-01-17 10:05
2007.02.04
подскажите настройку интернет экплоэра


15-1168767111
vasIzmax
2007-01-14 12:31
2007.02.04
Работа в Интернете?


2-1169113274
Beavercrazy
2007-01-18 12:41
2007.02.04
Как определить координаты ячейки в строке?


9-1142551393
Нет
2006-03-17 02:23
2007.02.04
Как развернуть цилиндр на плоскость?


4-1159092228
Psychedelic
2006-09-24 14:03
2007.02.04
Как отключить сервис ZoneAlarm?