Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Автоматическое создание класса.


Paladin ©   (2003-01-30 18:32:00) 

Условия:
Каждый класс представляет собой некую сущность предметной области.
Иногда возникает ситуация, когда на форме или другом контейнере должно быть несколько сущностей, и каждая сущность должна иметь свои отличные или дополнительные методы и свойства.
Выход: создать компонентов(классов) столько, сколько нужно различных типов сущностей, и накидать их экземпляров в нужный контейнер.
Если эта задача, встречается так же часто, как и задача создать TEdit, то такой подход слишком не удобен, это не гибко и хочется автоматизировать, так же как это сделано с TEdit.
Стандартный механизм:
При помещении компонента на форму происходит добавление к форме еще одного свойства.
Например помещая компонент TEdit, на форму добавляется свойство Edit1 :TEdit.
Хочется получить:
Кроме описанных событий, хочется чтобы, рядом с самой формой создавался пустой класс, например,
TEdit1 = class(TEdit) и соответственно на форму добавлялось свойство Edit1 :TEdit1.
Вопрос:
Можно ли средствами Delphi такого добиться и если можно, то как?
Пример задачи:
Имеются таблицы базы данных, рассматриваемый компонент представляет собой одну строку таблицы базы данных, т.е. сущность определенной структуры, соответствующую структуре таблицы.
Т.к. это у нас объектно-ориентированная модель, то хочется воспользоваться ее преимуществами и к каждому классу, представляющему строку, прилепить свойственные ей методы обработки.
Такое можно делать во многих серьезных системах, например Axapta.


Юрий Зотов   (2003-01-31 20:34:00) [1]

> Кроме описанных событий, хочется чтобы, рядом с самой формой
> создавался пустой класс, например, TEdit1 = class(TEdit) и
> соответственно на форму добавлялось свойство Edit1 :TEdit1.

> Можно ли средствами Delphi такого добиться и если можно, то как?

Можно. Для этого нужно написать свой эксперт IDE.

См. все по теме OTAPI. Начните с исходников в папке ..\ToolsAPI и со статьи на "Королевстве Delphi".


ZeroDivide   (2003-01-31 15:41:00) [2]

Вопрос очень интересный правда я его все равно наверное не так понял. Уважаемый Paladin прочитайте про термины Object Pascal... Вместо такого количества текста можно было бы просто написать наверное:

"Можно ли управлять добавлением текста в PAS,DFM при помещении на форму нового компонента ?"

Вы это имели в виду?

Мастер форм: Пользователь отвечает на нек. вопросы и в соответствии с ответами генерятся и открываются файлы. И что тут не понятно?

Вопрос 2 если пас уже открыт. Если вы попытаетесь заменить пас на onCreate компонента, то IDE скажет что файл изменился и предложит его перегрузить. Если вас так устроит то пожалуйста...


Paladin   (2003-01-31 11:58:00) [3]

Привет.
Да, со своим интерпретатором можно, но довольно сложно, т.к. по хорошему, для этого нужно среду писать.
Но я имел в виду создание класса при помощи Delphi IDE.
Можно ли переопределить процесс добавления компонента на форму,
т.е. кроме добавления свойства в форму, еще и создвавлся заголовок класса в том же модуле.
Есть же в Delphi всякие мастера форм, редакторы свойств и т.д.
Мне кажется, ничего революционного, просто если это возможно, то я не знаю как это сделать.



gsu   (2003-01-30 18:37:00) [4]

>> Имеются таблицы базы данных, рассматриваемый компонент представляет собой >> одну строку таблицы базы данных
1. описываешь класс, компонент и его св-ва в бд
2. создаешь объекты в своем интерпретаторе
3. работаешь

Так ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо