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

Вниз

Автоматическое создание класса.   Найти похожие ветки 

 
Paladin   (2003-01-30 18:32) [0]

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


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

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

Так ?


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

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




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

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

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

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

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

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


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

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

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

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

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



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

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

Наверх




Память: 0.46 MB
Время: 0.01 c
9-28580
Dmitriy Polskoy
2002-08-29 18:10
2003.02.10
DelphiX для D6


1-28920
SergeN
2003-01-29 10:45
2003.02.10
Компоненты


1-28881
Anatoly P
2003-01-30 16:26
2003.02.10
Перекомпиляция исходников


7-29123
Burjua
2002-12-06 11:41
2003.02.10
Как ловить синхроимпульсы от видеокарточкм


3-28674
shev
2003-01-24 13:53
2003.02.10
Package - Как выполнить процедуру из Package





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