![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 04.03.2008
Сообщений: 176
|
![]()
Здравствуйте, уважаемые форумчане!
Я не знаю как правильно искать то что мне нужно, надеюсь вы меня поймете по описанию. предположим у нас есть строка s:string; она хранит имя компонента s:='TButton'; как можно теперь создать этот обьект, по типу (s as TComponent).create; // и чтобы создалась кнопка. Возможно ли такое вообще? Заранее спасибо за ответы. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 16.03.2013
Сообщений: 599
|
![]()
Нет. Все объекты/переменные должны быть заранее объявлены.
Динамически создавать не объявленные объекты, насколько я знаю, невозможно. Можно хранить массив кнопок (объявленный, в том числе и динамический), и при вызове функции брать один элемент массива и его создавать. Прикрепил готовый проект, надеюсь разберешься. UPD: я что-то вообще не в ту степь пошел... Спать надо по ночам =/
alextrof94$gmail.com
Последний раз редактировалось alextrof94; 09.11.2013 в 09:19. |
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,543
|
![]()
приблизительно так
Код:
программа — запись алгоритма на языке понятном транслятору
|
![]() |
![]() |
![]() |
#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. |
![]() |
![]() |
![]() |
#5 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,899
|
![]()
При инстанцировании более низкого по иерархии класса в переменную более высокого класса, надо указывать каст/приведение (в данном случае тобжект пытаетесь записать в бейсмодел, чего дельфи не даст сделать, т.к они несовместимы для присвоения _бинарно_ ).
Код:
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 04.03.2008
Сообщений: 176
|
![]()
компилятор пишет:
[dcc32 Error] DataUnit.pas(816): E2010 Incompatible types: 'TPersistent' and 'TBaseModel' |
![]() |
![]() |
![]() |
#7 |
Участник клуба
Регистрация: 07.12.2011
Сообщений: 1,025
|
![]()
Чтобы GetClass надо RegisterClass
Не стесняемся, плюсуем!
![]() |
![]() |
![]() |
![]() |
#8 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,899
|
![]()
Кстати, да, забыл упомянуть, хоть когда пост писал, была мысль припомнить, про регистеркласс.
Вот даже вспомнил, что пример писал кому-то для этакой "рефлексии" http://www.cyberforum.ru/delphi/thread433417.html |
![]() |
![]() |
![]() |
#9 | |
Подтвердите свой е-майл
Регистрация: 29.08.2012
Сообщений: 4,011
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,543
|
![]()
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 |