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

Вниз

Изменение св-ва Parent   Найти похожие ветки 

 
anbezr   (2003-04-04 10:35) [0]

Привет!
мой компонент может быть дочерним только к компоненту определенного типа. Например, сомпонент TMyClass может иметь родителем исключительно TCustomForm. В рантайме мне ничего не стоит всем объектам TMyClass присвоить родителем объект TCustomForm. А как это сделать в DesignTime, ведь свойство Parent компонента еще не определено.


 
Skier ©   (2003-04-04 10:37) [1]

TControl.SetParent(...) ?


 
anbezr   (2003-04-04 10:45) [2]

эти строки эквивалентны:
SetParent(Form1);
Parent := Form1;
пробелема не в этом. проблема в том, как заставить дельфю поместить вновь создаваемый экземпляр моего объекта прописать в дочерние именно формы.


 
Skier ©   (2003-04-04 10:47) [3]

>anbezr
бррррр...
Какие дочерние именно формы ???
Скажи по-русски что нужно.


 
anbezr   (2003-04-04 11:07) [4]

:} сейчас попытаюсь.
я написал компонент, который требует выполнения двух условий:
1) компонент не может иметь дочерних компонентов того же типа.
2) компонент, в свойстве Parent, должен иметь только MainForm.
в рантайме у меня не возникает проблем с тем, чтобы обеспечить выполниния обоих условий.
но в дезайнтайме, когда пользователь может мышкой поместить один мой компонент на другой, возникают проблемы - целая уйма.
Так вот, могу ли я заставить дельфю помещать этот мой компонент всегда на форму, а ни на какой другой объект.


 
Skier ©   (2003-04-04 11:16) [5]

>anbezr
Ну дык...перекрой ( override :) ) метод SetParent у своего копонента. Что-то типа этого :
TYourComponent.SetParent(AParent: TWinControl);
begin
if csDesigning in ComponentState then begin
if not (AParent is TMainForm) then begin
//генери exception...;
end; //if
end; //if
inherited SetParent(AParent);
end;


 
anbezr   (2003-04-04 11:25) [6]

Skier, Спасибо!
if AParent is TMyComponent then AParent := AParent.Parent;
inherited SetParent(AParent);
работает прекрасно!



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

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

Наверх




Память: 0.47 MB
Время: 0.012 c
7-54908
[Bio]z
2003-02-26 00:57
2003.04.17
Как установить системную дату?


3-54407
Saska
2003-04-01 13:13
2003.04.17
Cнова TADOQuery


14-54820
FLIZ
2003-03-28 20:00
2003.04.17
Аксесс-97 после переустановки не запускается :-((


3-54399
Shtock
2003-03-27 08:14
2003.04.17
Работа с вычисляемыми полями


9-54387
JB
2002-11-15 09:14
2003.04.17
Спрайты для игр