Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.04 c
2-1168554549
Infinityx93
2007-01-12 01:29
2007.02.04
Динамический массив


2-1168862299
Barma
2007-01-15 14:58
2007.02.04
DrawGrid


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


15-1168718021
Руслан
2007-01-13 22:53
2007.02.04
NMIndexStoreSvr.exe


2-1169127279
Кевларвестов Семен
2007-01-18 16:34
2007.02.04
TReader не читает из TMemoryStream





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский