Re[2]: Как наити связаные компоненти ???
От: Diouzshev Россия  
Дата: 04.12.03 10:27
Оценка: 1 (1)
Hello, !
You wrote on Thu, 04 Dec 2003 08:54:44 GMT:

> Здравствуйте, Janex, Вы писали:


J>> Вот токое дело — сделал компонент у которого имеется один Property

J>> токого же типа как он сам. Тоесть ложиш на форму два компонента и у
J>> делаеш что первии указывает на другого.
J>> Ну типо как кладёш один dataset и 4 datasources, и всем datasource-м
J>> указываеш один dataset.
J>> Вот немогу понять как в коде самого компонента можно реализовать
J>> токое, чтоб я из етого главного мог наити ети все которие указывает
J>> на его ...
J>> Как ето сделать ???

> Например кусок обработчика формы. А саму форму можно получить через

> свойство Parent или лучше Owner.

>
 > for I := 0 to (ComponentCount - 1) do begin   if (Component[I] is
 > TMyComponent) then   begin     //
 >   end;
 > end;
 >

Так, возможно, не пойдет, т.к. автор не сказал как будут использоваться компоненты(а если верить Рею Конопке, то ни один автор компонентов не может этого предположить %) ):
1. Owner = nil и/или Parent = nil;
2. Компоненты на разных формах.

Как вариант сделать у компонента скрытое свойство — "прилинкованные объекты" типа TList и при создании линка добавлять ссылку в этот список (ведь класс-то один, а значит есть доступ к private полям), соответственно при смене линка или разрушении объекта — удалять
Возможно для этого придется создать предка какого нибудь с виртуальными методами AddLink(AMyComponent : TMyComponent) и RemoveLink(AMyComponent : TMyComponent) если все не заработает так.

А еще лучше посмотреть реализацию TDataSource, ведь он же вычисляет как-то наличие DataSet %).

PS Автору топика: научись, пожалуйста, пользоваться спелчекером, а то читать трудно.

With best regards, Alexander Diouzshev-Maltsev.
Posted via RSDN NNTP Server 1.8 beta
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.