![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
свойство типа TCollection [D6]
Алена © (2002-03-20 10:05:00)Пожалуйста подскажите как в собственную компоненту добавить свойство типа TCollection и чтобы элементы коллекции были другими компонентами на форме (TControl и выше). По сути надо просто реализовать список компонент и возможность добаления их на форму из этого списка, но только с помощью введения свойста - коллекции. Заранее огромное спасибо.
Юрий Зотов (2002-03-20 16:09:00) [1]Введите в элемент коллекции приватное поле FControl и published-свойство Control - ссылку на TControl.
Еще нужно будет добавить механизм уведомлений об удалении. Для этого в элемент коллекции введите метод доступа SetControl, примерно такой:
procedure ...SetControl(const Value: TControl);
begin
if Value <> FControl then
with TComponent(Collection.Owner) do
begin
if FControl <> nil then RemoveFreeNotification(FControl);
FControl := Value;
if FControl <> nil then FreeNotification(FControl);
end
end;
И, наконец, в компоненте заместите метод Notification. В него надо добавить очистку полей FControl в элементах при удалении контролов.
yaJohn (2002-03-20 16:01:00) [2]Напрамую - нельзя.
Посмотри еще TOwnedCollection, как свойство компонента надo использовать ее.
Можно создать коллекцию обьектов имеющих единственное паблик свойство типа TControl. Думаю это оптимальный подход.
Алена (2002-03-20 15:18:00) [3]Спасибо, я все поняла, только с объектами одного класса все в порядке, а вот как сделать чтобы внутри коллекции были обычные визуальные делфийские компоненты, т.е. наследники TControl,
можно ли как-то приводить TControl к ним, но где это надо делать - в реализации методов коллекции или уже при реализации самой программы, испрользуя все-таки элементы коллекции как объекты NControl?
MBo (2002-03-20 10:08:00) [4]http://delphi.vitpc.com/helloworld/tcollection.htm