Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Компонент ориентированное программирование / 11 сообщений из 11, страница 1 из 1
08.01.2003, 12:24
    #32087346
just4fun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компонент ориентированное программирование
Имеем иерархию компонента TADODataSet:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
TObject
|
TPersistent
|
TComponent
|
TDataSet
|
TCustomADODataSet
|
TADODataSet


Т.е. как говориться каждый потомок обретает всё новые и новые свойства, но общие свойства находятся в одном месте.
Почему тогда вместо того, чтобы создать компонент
T MyApplicationTable DataSet у которого установлены свойства CommandText, Перечислены все поля Fields производного Table все DisplayLabel и DisplaySize, а затем добавить его в палитру компонентов Delphi и уже потом использовать при необходимости везде где это надо в приложении, я вынужден кидать пустой TADODataSet и заполнять, его свойства при необходимости???
Если уже никто так не делает... пожалуйста объясните как вы это делаете?
...
Рейтинг: 0 / 0
08.01.2003, 12:43
    #32087362
alr
alr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компонент ориентированное программирование
Main menu->Component->Create Component Template... + Help
...
Рейтинг: 0 / 0
08.01.2003, 12:49
    #32087369
Oleg_Martynov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компонент ориентированное программирование
Можно сделать и так.
А затем, когда будет нужно изменить структуру базы, перекомпилировать пакет и не забыть перетранслировать все использующие модули, нет забыв удалить участки кода, использующие удалённые поля - не во всех же модулях Вы используете все поля таблицы/представления/процедуры.
И если проект средней величины - то наборов таких будет штук 100-200. Просто дать имена компонентам и потом (месяца через 3) их не перепутать -это уже задача.
Возможно, лучше выделить сущности из предметной области, и оформлять в виде компонентов уже их - вместе с их поведением. Хотя для малых проектов - трудностей при изменениях тоже будет достаточно.
Резюме - не стоит доводить до абсурда идеологию компонентов, предлагаемую инструментом. Каждой возможности - своё место. Дельфи предлагает способ быстрой разработки приложений, и именно для этого его лучше и использовать - быстро получить работающую программулину. Для других задач - другая и снасть.
Удачи!
...
Рейтинг: 0 / 0
08.01.2003, 15:44
    #32087576
Andrey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компонент ориентированное программирование
вынеси DataSet в датамодуль и включай его где надо ...
...
Рейтинг: 0 / 0
09.01.2003, 03:13
    #32087850
just4fun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компонент ориентированное программирование
to alr: Тогда мы получим копию компонента, а не сам компонент. Когда нужна точная копия можно просто скопировать и вставить компонент, туда куда нужно.
Что мы получаем имея много копий одного с одинаковыми функциями (причем с разным названием) - изменилась структура таблицы, нужно отыскать все копии и заменить свойство CommandText, добавилось поле, нужно во всех копиях добавить поле, его DisplayName и т.д. Т.е. однозначно проблема остаётся открытой.

to Oleg_Martynov: Запутаться в компонентах, будет не легче, чем в базе данных из 100-200 таблиц. Более того, число компонентов можно сократить. К примеру информация о банках храниться в трёх таблицах (формы_банка, детали_банка, города ), компонент будет один TБанки.
Согласен, что вся детализация по банку в списке банков не нужна, возможно придётся добавить компонент TБанкиСписок.

to Andrey В приложении MDI такой подход может вызвать много проблем. Попробуй использовать один DataSet и DataModule в двух MDIChildForm формах имеющих только DBEdit и DBNavBar. Двигая DBNavBar в одной форме, получим движение и в другой, а пользователь этого, ой как не ждёт

....
Спасибо за сомнения.... но всё же пока не могу найти минусов, чтобы отказаться от такого подхода 8)
...
Рейтинг: 0 / 0
09.01.2003, 07:47
    #32087863
SiDen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компонент ориентированное программирование
А кто Вас вынуждает так делать? Напишите еще одного наследника, определите в нем все что Вам необходимо и используйте. Я лично так не делаю, т.к. использую одни и те же компоненты для разных целей или в рантайме создаю... Тут больше вопрос удобства и скорости разработки, хотя в любом случае компонент не стоит делать... реинсталить+отсутствие на других машинах.... Просто юнит с наследником - вполне достаточно мне кажется
...
Рейтинг: 0 / 0
09.01.2003, 10:47
    #32087924
just4fun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компонент ориентированное программирование
to SiDen: Сдерживает только не знание как это делать :)
Вам как человеку не видящему сложности вопроса будет легче прояснить можно ли сделать из компонента TADODataSet который я бросил на форму, установил на нём все свойства, Fields и так далее, свой компонент? Чтобы всё было в почти автоматически.

К сведению, уже умею делать модуль, содержащий требуемый компонент в процедуре Create которого устанавливаю CommandText, но как быть с полями?
Если создавать их в run-time, тогда будет сложности с создание Master-detail или Lookup полей в design-time.

???
...
Рейтинг: 0 / 0
09.01.2003, 10:57
    #32087932
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компонент ориентированное программирование
2 just4fun
Что мы получаем имея много копий одного с одинаковыми функциями (причем с разным названием) - изменилась структура таблицы, нужно отыскать все копии и заменить свойство CommandText, добавилось поле, нужно во всех копиях добавить поле, его DisplayName и т.д. Т.е. однозначно проблема остаётся открытой.

А зачем CommandText менять?
А в грид все-равно добавлять, так что одним датасетом не обойдешься.

Да и вообще очень странный подход. И геморройный
...
Рейтинг: 0 / 0
09.01.2003, 12:00
    #32088007
just4fun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компонент ориентированное программирование
to tygra:
А что вы пишите commandtext в виде 'select * from bbbb', а поля задаёте в гриде?
а lookup полями пользуетесь? Если мне не изменяет память, тогда нужно поле добавить в DataSet, а уж если одно тогда и все остальные. а затем ещё и в гриде.
Мне милее поля оформлять в DataSet, a grid только отображает, без настроек..
...
Рейтинг: 0 / 0
09.01.2003, 12:35
    #32088056
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компонент ориентированное программирование
А как ты скроешь в таком случае поля из грида?
И я пишу не 'select * from bbbb' , а
Код: plaintext
exec MyProcedure @param1 = :param1 ......


И поля, которые нужно выводить, задаю в процедуре. Это есть хороший стиль программирования
...
Рейтинг: 0 / 0
10.01.2003, 02:43
    #32088547
just4fun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компонент ориентированное программирование
Когда прописываешь поля в датасете, устанавливаешь свойство visible=false и их в гриде не будет, хотя работать с ними можно как обычно....
А стиль программирования действительно красивый и правильный
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Компонент ориентированное программирование / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]