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

Вниз

экземпляры различных классов в одной коллекции   Найти похожие ветки 

 
Maybe   (2002-03-20 15:58) [0]

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


 
yaJohn   (2002-03-20 16:02) [1]

А как вы собираетесь эти элементы в коллекцию вставлять?


 
Alx2   (2002-03-20 16:07) [2]

Посмотри вопрос в этом форуме про "массив объектов". Там что-то подобное обсуждается, но для массива.


 
Maybe   (2002-03-20 16:13) [3]

Я имела в виду чтобы это все были TControl"ы, и приводить их потом к другим классам TButton, TLabel TEdit, так можно ????


 
Digitman   (2002-03-20 16:20) [4]

Если под "коллекцией" подразумевается TCollection, то элементами такой коллекции могут быть ТОЛЬКО экз-ры класса (либо экз-ры наследников класса), указанного параметром в конструкторе коллекции.


 
Alx2   (2002-03-20 16:24) [5]

>...все были TControl"ы, и приводить их потом
>к другим классам TButton, TLabel TEdit, так можно ????

Да. Если они на самом деле являются TButton, TLabel TEdit


 
Внук   (2002-03-20 16:27) [6]

Не совсем ответ на вопрос, но все-таки...
Не надо здесь злоупотреблять коллекциями IMHO, так как они создаются обычно, чтобы хранить объекты с данными, определенными программистом (User Data). Если требуется хранить стандартные объекты, лучше использовать TList.
Насчет коллекции - при ее создании указывается тип хранящихся в ней объектов. Этот тип должен наследоваться (или быть равным TCollectionItem). Отсюда мораль - можно хранить разнотипные объекты, если только они все наследники TCollectionItem, а потом приводит каждый из них к нужному (настоящему) типу. Кажется, так ... если не извращаться :)


 
Юрий Зотов   (2002-03-20 16:33) [7]

Если речь идет о внешних компонентах, то можно ввести в элемент коллекции published-ссылку на компонент - см. http://delphi.mastak.com/cgi-bin/forum.pl?look=1&id=1016607958&n=0

Если же о внутренних, то в элементе надо задавать класс компонента, чтобы он мог этот компонент создать.


 
Maybe   (2002-03-20 21:37) [8]

Как же можно задать класс компонента, в коллекции же должны быть экземпляры одного класса, может быть нужно как-то через приведение классов через As?


 
Юрий Зотов   (2002-03-21 13:36) [9]

> Как же можно задать класс компонента...

Ввести в элемент коллекции свойство типа TClass и задавать через него.


 
Alx2   (2002-03-21 13:48) [10]

>Как же можно задать класс компонента
Имя класса уже сидит в методе ClassName.
Если имя то, что надо, то используем "приведение классов через As? "

Есть более быстрый метод через ClassType


 
Юрий Зотов   (2002-03-21 14:05) [11]

Чтобы использовать ClassName или ClassType, надо иметь уже готовую ссылку либо на экземпляр компонента, либо на его класс.

Вопрос - как получить любую из этих ссылок, если класс компонента еще неизвестен и создать компонент еще нельзя?

Ответ - никак. Поэтому элементу коллекциии и нужно задавать класс внутреннего компонента вручную (или в коде). Только после этого компонент может быть правильно создан.


 
Alx2   (2002-03-21 14:14) [12]

>Юрий Зотов © (21.03.02 14:05)
Сорри. Почему-то решил, что надо хранить уже готовые объекты.

С другой стороны, этот механизм в Delphi уже реализован одновременно с "визуальным программированием".



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

Форум: "Основная";
Текущий архив: 2002.04.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
1-185
JibSkeart
2002-03-17 16:28
2002.04.01
Как Узнать программно и можноли что у Файла досовская (Рус) кодировка ??


14-305
Lord Vader
2002-02-20 04:59
2002.04.01
RUNDLL32.EXE - Перезагрузить компьютер в режиме MS-DOS


1-131
vampire
2002-03-20 21:33
2002.04.01
~CGI~


4-358
Serg001
2002-02-01 16:35
2002.04.01
Дайте, пожалуйста, кто нибудь ссылочку на описание создания клав. ловушек.


1-246
SlavaLamer
2002-03-19 14:48
2002.04.01
Webbrouser





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