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

Вниз

свойство типа TCollection   Найти похожие ветки 

 
Алена   (2002-03-20 10:05) [0]

Пожалуйста подскажите как в собственную компоненту добавить свойство типа TCollection и чтобы элементы коллекции были другими компонентами на форме (TControl и выше). По сути надо просто реализовать список компонент и возможность добаления их на форму из этого списка, но только с помощью введения свойста - коллекции. Заранее огромное спасибо.


 
MBo ©   (2002-03-20 10:08) [1]

http://delphi.vitpc.com/helloworld/tcollection.htm


 
Алена   (2002-03-20 15:18) [2]

Спасибо, я все поняла, только с объектами одного класса все в порядке, а вот как сделать чтобы внутри коллекции были обычные визуальные делфийские компоненты, т.е. наследники TControl,
можно ли как-то приводить TControl к ним, но где это надо делать - в реализации методов коллекции или уже при реализации самой программы, испрользуя все-таки элементы коллекции как объекты NControl?


 
yaJohn ©   (2002-03-20 16:01) [3]

Напрамую - нельзя.
Посмотри еще TOwnedCollection, как свойство компонента надo использовать ее.
Можно создать коллекцию обьектов имеющих единственное паблик свойство типа TControl. Думаю это оптимальный подход.


 
Юрий Зотов ©   (2002-03-20 16:09) [4]

Введите в элемент коллекции приватное поле 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 в элементах при удалении контролов.



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

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

Наверх




Память: 0.47 MB
Время: 0.013 c
3-60
ak
2002-03-06 15:41
2002.04.01
Счётчик в DBGrid


3-32
Bill
2002-03-06 10:51
2002.04.01
Как программно отсортировать базу данных


1-221
greenrul
2002-03-19 21:24
2002.04.01
Как строковое значение клавиши перегнать в её VirtualKeyCode значение (integer)


1-167
VCL
2002-03-18 22:12
2002.04.01
Помогите разобраться с RichEdit.


14-292
Василий
2002-02-16 00:24
2002.04.01
Хороший водитель может и не знать о том как устроен движек, но классным гонщиком при таком подходе он ни когла не станет!!!