Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.04.01;
Скачать: [xml.tar.bz2];

Вниз

свойство типа 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.004 c
3-39
ЛенаК
2002-03-06 09:36
2002.04.01
deadlock violation при удалении записей


6-265
Malder
2002-01-19 13:39
2002.04.01
Перехват Socket соединения


6-259
SemFLY
2002-01-18 21:05
2002.04.01
Передача файлов через Socket.


3-52
urii
2002-03-07 19:09
2002.04.01
переносимость


6-256
Yuraz
2002-01-17 18:30
2002.04.01
Есть кусок HTML кода, хотелось бы хоть примитивно преобразовать его в наглядную страницу





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