Главная страница
    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.46 MB
Время: 0.047 c
2-1168982958
16alex
2007-01-17 00:29
2007.02.04
развертывание приложения с dbexpress


2-1168970687
malyar
2007-01-16 21:04
2007.02.04
opendialog & savedialog


2-1169025031
sergeyst
2007-01-17 12:10
2007.02.04
Показать не свой экран


15-1168702458
Footballer
2007-01-13 18:34
2007.02.04
Для тех, кто разбирается в cs 1.6


3-1163258294
Gulnaz
2006-11-11 18:18
2007.02.04
Как создать поиск





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский