|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.11.2013, 05:12 | #1 |
Форумчанин
Регистрация: 04.03.2008
Сообщений: 176
|
Создание обьекта
Здравствуйте, уважаемые форумчане!
Я не знаю как правильно искать то что мне нужно, надеюсь вы меня поймете по описанию. предположим у нас есть строка s:string; она хранит имя компонента s:='TButton'; как можно теперь создать этот обьект, по типу (s as TComponent).create; // и чтобы создалась кнопка. Возможно ли такое вообще? Заранее спасибо за ответы. |
09.11.2013, 09:00 | #2 |
Форумчанин
Регистрация: 16.03.2013
Сообщений: 599
|
Нет. Все объекты/переменные должны быть заранее объявлены.
Динамически создавать не объявленные объекты, насколько я знаю, невозможно. Можно хранить массив кнопок (объявленный, в том числе и динамический), и при вызове функции брать один элемент массива и его создавать. Прикрепил готовый проект, надеюсь разберешься. UPD: я что-то вообще не в ту степь пошел... Спать надо по ночам =/
alextrof94$gmail.com
Последний раз редактировалось alextrof94; 09.11.2013 в 09:19. |
09.11.2013, 09:12 | #3 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
приблизительно так
Код:
программа — запись алгоритма на языке понятном транслятору
|
09.11.2013, 14:11 | #4 |
Форумчанин
Регистрация: 04.03.2008
Сообщений: 176
|
alextrof94, спасибо, но это не то.
evg_m. попробоавал так, но у меня там obj:=cls.create(id); и на эту строчку компилятор матерится [dcc32 Error] DataUnit.pas(815): E2010 Incompatible types: 'TBaseModel' and 'TObject' скину пример всего кода чтобы было более понятно Код:
Код:
Последний раз редактировалось RealSHELS; 09.11.2013 в 14:31. |
11.11.2013, 05:58 | #5 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
При инстанцировании более низкого по иерархии класса в переменную более высокого класса, надо указывать каст/приведение (в данном случае тобжект пытаетесь записать в бейсмодел, чего дельфи не даст сделать, т.к они несовместимы для присвоения _бинарно_ ).
Код:
|
11.11.2013, 11:22 | #6 |
Форумчанин
Регистрация: 04.03.2008
Сообщений: 176
|
компилятор пишет:
[dcc32 Error] DataUnit.pas(816): E2010 Incompatible types: 'TPersistent' and 'TBaseModel' |
11.11.2013, 11:31 | #7 |
Участник клуба
Регистрация: 07.12.2011
Сообщений: 1,025
|
Чтобы GetClass надо RegisterClass
Не стесняемся, плюсуем!
|
11.11.2013, 13:00 | #8 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Кстати, да, забыл упомянуть, хоть когда пост писал, была мысль припомнить, про регистеркласс.
Вот даже вспомнил, что пример писал кому-то для этакой "рефлексии" http://www.cyberforum.ru/delphi/thread433417.html |
11.11.2013, 13:21 | #9 | |
Подтвердите свой е-майл
Регистрация: 29.08.2012
Сообщений: 4,011
|
Цитата:
|
|
11.11.2013, 13:33 | #10 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
TbaseModel должен быть наследником TPersistent
возможно не прямым а через цепочку TbaseModel-> TButton->..->Tcomponent-> Tpersistent 1. запрещенные варианты объявления базового класса Код:
Код:
Код:
Код:
1. c использование нашего(своего) типа TmodelClass Код:
2. c использованием базовых (ну скажем Tcomponent) Код:
3. и вроде все верно(по синтаксису), но в целом неверно (смотри в конце) Код:
здесь наш класс будет сконструирован неправильно. Будет вызван только TObject.Create; вместо TBaseModel.Create(...) или же вместо Tcomponent.Create(ower: TComponent);
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 11.11.2013 в 13:36. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Цикл. Создание обьекта и добовление в Tlist => Утечка памяти | Человек_Борща | Общие вопросы Delphi | 2 | 28.01.2012 16:08 |
создание обьекта в отдельном юните | tela | Компоненты Delphi | 2 | 08.12.2011 09:53 |
делфи создание обьекта | nyasha2013 | Помощь студентам | 6 | 17.05.2011 09:29 |
Создание иммитации движения обьекта | grebljmax | Фриланс | 5 | 10.01.2011 00:25 |
C# получить явное создание обьекта формы | Geddar | Помощь студентам | 3 | 20.05.2010 13:37 |