Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Компонент ориентированное программирование
|
|||
|---|---|---|---|
|
#18+
Имеем иерархию компонента TADODataSet: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Т.е. как говориться каждый потомок обретает всё новые и новые свойства, но общие свойства находятся в одном месте. Почему тогда вместо того, чтобы создать компонент T MyApplicationTable DataSet у которого установлены свойства CommandText, Перечислены все поля Fields производного Table все DisplayLabel и DisplaySize, а затем добавить его в палитру компонентов Delphi и уже потом использовать при необходимости везде где это надо в приложении, я вынужден кидать пустой TADODataSet и заполнять, его свойства при необходимости??? Если уже никто так не делает... пожалуйста объясните как вы это делаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2003, 12:24 |
|
||
|
Компонент ориентированное программирование
|
|||
|---|---|---|---|
|
#18+
Main menu->Component->Create Component Template... + Help ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2003, 12:43 |
|
||
|
Компонент ориентированное программирование
|
|||
|---|---|---|---|
|
#18+
Можно сделать и так. А затем, когда будет нужно изменить структуру базы, перекомпилировать пакет и не забыть перетранслировать все использующие модули, нет забыв удалить участки кода, использующие удалённые поля - не во всех же модулях Вы используете все поля таблицы/представления/процедуры. И если проект средней величины - то наборов таких будет штук 100-200. Просто дать имена компонентам и потом (месяца через 3) их не перепутать -это уже задача. Возможно, лучше выделить сущности из предметной области, и оформлять в виде компонентов уже их - вместе с их поведением. Хотя для малых проектов - трудностей при изменениях тоже будет достаточно. Резюме - не стоит доводить до абсурда идеологию компонентов, предлагаемую инструментом. Каждой возможности - своё место. Дельфи предлагает способ быстрой разработки приложений, и именно для этого его лучше и использовать - быстро получить работающую программулину. Для других задач - другая и снасть. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2003, 12:49 |
|
||
|
Компонент ориентированное программирование
|
|||
|---|---|---|---|
|
#18+
вынеси DataSet в датамодуль и включай его где надо ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2003, 15:44 |
|
||
|
Компонент ориентированное программирование
|
|||
|---|---|---|---|
|
#18+
to alr: Тогда мы получим копию компонента, а не сам компонент. Когда нужна точная копия можно просто скопировать и вставить компонент, туда куда нужно. Что мы получаем имея много копий одного с одинаковыми функциями (причем с разным названием) - изменилась структура таблицы, нужно отыскать все копии и заменить свойство CommandText, добавилось поле, нужно во всех копиях добавить поле, его DisplayName и т.д. Т.е. однозначно проблема остаётся открытой. to Oleg_Martynov: Запутаться в компонентах, будет не легче, чем в базе данных из 100-200 таблиц. Более того, число компонентов можно сократить. К примеру информация о банках храниться в трёх таблицах (формы_банка, детали_банка, города ), компонент будет один TБанки. Согласен, что вся детализация по банку в списке банков не нужна, возможно придётся добавить компонент TБанкиСписок. to Andrey В приложении MDI такой подход может вызвать много проблем. Попробуй использовать один DataSet и DataModule в двух MDIChildForm формах имеющих только DBEdit и DBNavBar. Двигая DBNavBar в одной форме, получим движение и в другой, а пользователь этого, ой как не ждёт .... Спасибо за сомнения.... но всё же пока не могу найти минусов, чтобы отказаться от такого подхода 8) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2003, 03:13 |
|
||
|
Компонент ориентированное программирование
|
|||
|---|---|---|---|
|
#18+
А кто Вас вынуждает так делать? Напишите еще одного наследника, определите в нем все что Вам необходимо и используйте. Я лично так не делаю, т.к. использую одни и те же компоненты для разных целей или в рантайме создаю... Тут больше вопрос удобства и скорости разработки, хотя в любом случае компонент не стоит делать... реинсталить+отсутствие на других машинах.... Просто юнит с наследником - вполне достаточно мне кажется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2003, 07:47 |
|
||
|
Компонент ориентированное программирование
|
|||
|---|---|---|---|
|
#18+
to SiDen: Сдерживает только не знание как это делать :) Вам как человеку не видящему сложности вопроса будет легче прояснить можно ли сделать из компонента TADODataSet который я бросил на форму, установил на нём все свойства, Fields и так далее, свой компонент? Чтобы всё было в почти автоматически. К сведению, уже умею делать модуль, содержащий требуемый компонент в процедуре Create которого устанавливаю CommandText, но как быть с полями? Если создавать их в run-time, тогда будет сложности с создание Master-detail или Lookup полей в design-time. ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2003, 10:47 |
|
||
|
Компонент ориентированное программирование
|
|||
|---|---|---|---|
|
#18+
2 just4fun Что мы получаем имея много копий одного с одинаковыми функциями (причем с разным названием) - изменилась структура таблицы, нужно отыскать все копии и заменить свойство CommandText, добавилось поле, нужно во всех копиях добавить поле, его DisplayName и т.д. Т.е. однозначно проблема остаётся открытой. А зачем CommandText менять? А в грид все-равно добавлять, так что одним датасетом не обойдешься. Да и вообще очень странный подход. И геморройный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2003, 10:57 |
|
||
|
Компонент ориентированное программирование
|
|||
|---|---|---|---|
|
#18+
to tygra: А что вы пишите commandtext в виде 'select * from bbbb', а поля задаёте в гриде? а lookup полями пользуетесь? Если мне не изменяет память, тогда нужно поле добавить в DataSet, а уж если одно тогда и все остальные. а затем ещё и в гриде. Мне милее поля оформлять в DataSet, a grid только отображает, без настроек.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2003, 12:00 |
|
||
|
Компонент ориентированное программирование
|
|||
|---|---|---|---|
|
#18+
А как ты скроешь в таком случае поля из грида? И я пишу не 'select * from bbbb' , а Код: plaintext И поля, которые нужно выводить, задаю в процедуре. Это есть хороший стиль программирования ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2003, 12:35 |
|
||
|
Компонент ориентированное программирование
|
|||
|---|---|---|---|
|
#18+
Когда прописываешь поля в датасете, устанавливаешь свойство visible=false и их в гриде не будет, хотя работать с ними можно как обычно.... А стиль программирования действительно красивый и правильный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2003, 02:43 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32087369&tid=2119347]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
69ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 272ms |
| total: | 420ms |

| 0 / 0 |
