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

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

Окна редактирования записей таблиц(справочников)


Страницы:   1 2

StriderMan ©   (2007-07-31 11:07:00) 

не знаю в тему или нет, перенесите если что

Т.к. таблиц двольно много, и как правило операции с ними одинаковые, сделали что-то типа справочников в 1С, т.е. есть некий базовый класс от датамодуля, он умеет выполнять типовые действия (редактирование, удаление, вставка и т.д.), в том числе показывать визуальные формы редактирования элемента и списка. В наследниках только определяются наборы данных и конкретные формы для редактирования (у которых тоже есть базовый класс) . Однако некоторые моменты еще требуют доработки.

Мастера, расскажите как у вас организовано редактирование элементов таблиц(справочников). Это просто формы или какая-то иерархия форм? А может автоматические построители форм? как со списками дела обстоят?
Как вообще организовано управление таблицами (удаление, вставка, редактирование): для каждой таблицы свой код или какие-то базовые классы есть?

или ткните что почитать на эту тему, плз.


MsGuns   (2007-08-06 09:48:00) [1]

Универсализация интерфейса работы со всем многообразием "справочников" средствами чисто Делфи суть опасная блажь, со временем аукнется большими проблемами


clickmaker   (2007-08-03 14:30:00) [2]


>  а форма элемента?

кстати, делал и такую. Динамическое создание полей ввода соответственно типам полей. Строка - Edit, Дата - DTPicker, Bool - флажок и т.д. Все на скроллбоксе на всякий случай.
Делал также вариант, когда имя-значение отображались в одном списке в виде гиперссылок. При щелчке открывался маленький диалог с соотв. полем ввода.


StriderMan   (2007-08-03 12:10:00) [3]


> да. Description можно задать и при визуальном проектировании таблицы

В FB похоже тоже есть. По крайней мере из системной таблицы можно вытащить RDB$RELATIONS.RDB$DESCRIPTION


clickmaker   (2007-08-03 12:02:00) [4]


> это форма списка. а форма элемента? или их нет?

ну для тех справочников, которые я делал, прямо в гриде редактирование


> где эти названия хранятся реально? Это встроенная фича MSSQL?

да. Description можно задать и при визуальном проектировании таблицы


StriderMan   (2007-08-03 12:00:00) [5]


> Одна универсальная форма с гридом и кнопками

это форма списка. а форма элемента? или их нет?


> Русские заголовки таблиц и полей добавляются через sp_addextendedproperty
> 'MS_Description', читаются через
> sp_getextendedproperty

недопонял. где эти названия хранятся реально? Это встроенная фича MSSQL?


clickmaker   (2007-08-03 11:41:00) [6]


> Мастера, расскажите как у вас организовано редактирование
> элементов таблиц(справочников).

несколько таблиц-справочников. Русские заголовки таблиц и полей добавляются через sp_addextendedproperty 'MS_Description', читаются через
sp_getextendedproperty.
Одна универсальная форма с гридом и кнопками + 1 query + UpdateSQL, скрипты для которого составляются динамически по списку полей.


StriderMan   (2007-08-03 11:30:00) [7]


> Игорь Шевченко ©   (02.08.07 18:44) [15]

Как все похоже :) кстати тоже интерфейсы использую.


> На этот случай написан генератор кода

вот этого еще нет


> У дураков мысли сходятся ? :)
> Или одного и того же Фаулера читали ?

Видимо первое :) Фаулера не читал.


Игорь Шевченко   (2007-08-03 10:05:00) [8]

Gadenysh   (02.08.07 19:44) [17]


> прям мануал к моей системе)
> и генератор тоже есть))


У дураков мысли сходятся ? :)
Или одного и того же Фаулера читали ?


Gadenysh   (2007-08-02 19:44:00) [9]


> Игорь Шевченко ©   (02.08.07 18:44) [15]


прям мануал к моей системе)
и генератор тоже есть))


Игорь Шевченко   (2007-08-02 18:46:00) [10]


> но если будет 100 сущностей? будет и 100 датамодулей и 100
> TEditFormов?


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


Игорь Шевченко   (2007-08-02 18:44:00) [11]

как делаю я -
есть Template для формы редактирования с кнопками Ok и Cancel и с методами DisplayObject и FillObject

есть Template для формы списка, натурально с гридом по вкусу, DataSource и с Actions Add, Update, Delete, Aggregate, Filter, Print, Excel.
Эта форма может вызываться как модальная и как не модальная. В первом случае еще две кнопки Ok и Cancel.
есть Template для датамодуля, реализующего два интерфейса - один для получения DataSet для того самого списка, а второй для загрузки объекта по ключевым полям и сохранения объекта (с указанием новый или существующий).

И есть объекты, собственно предметной области.

Все формы работают с методами интерфейсов, не зная, кто их реализует, все формы редактирования работают с объектами, а не с полями в записях.

Вот так.


StriderMan   (2007-08-02 16:52:00) [12]


> Jeer ©   (02.08.07 14:42) [13]
> Для этого есть репозиторий.

та я ж не для себя хочу. у меня тоже в репозитории есть.
Сделать компоненты, выложить на torry.


Jeer   (2007-08-02 14:42:00) [13]


> есть даже некоторое желание оформить все это в виде готовых
> компонентов


?
Для этого есть репозиторий.
Пример такой формы:
http://slil.ru/24694370


StriderMan   (2007-08-02 13:13:00) [14]


> Petr V. Abramov ©   (02.08.07 12:22) [11]

это вселяет оптимизм :))

есть даже некоторое желание оформить все это в виде готовых компонентов, пусть народ пользуется :)

типа "подключи БД за 5 минут" :))


Petr V. Abramov   (2007-08-02 12:22:00) [15]

> StriderMan ©   (31.07.07 11:52) [8]
тоже самое


StriderMan   (2007-07-31 12:35:00) [16]


> но если будет 100 сущностей? будет и 100
> датамодулей и 100 TEditFormов?
> а если проект динамичный, и множество разработчиков? тады
> задолбаетесь новые формочки клепать...

именно так сейчас дела и обстоят :)))


> можно канечно на пакеты разбить:

до этого пока не дожили :)


SlymRO   (2007-07-31 12:02:00) [17]

конечно крут :) но если будет 100 сущностей? будет и 100 датамодулей и 100 TEditFormов?
а если проект динамичный, и множество разработчиков? тады задолбаетесь новые формочки клепать...
можно канечно на пакеты разбить: в пакетах формы для сущьностей...
в пакете RegisterEditor('PapaEdit',TPapaEdit)
CreateEditor(const EditName)
if FindEditor(EditName,Editor) then
 return Editor
else return DefaultEditor;
и один DefaultEditForm с динамическим клепанием контролов для заглушки


StriderMan   (2007-07-31 11:52:00) [18]


> SlymRO ©   (31.07.07 11:41) [6]
> придется динамически контролы клепать...

я немного другим путем пошел - базовый класс формы (TCustomEditForm) с кнопкми ОК и ОТМЕНА и с логикой в коде. а в наследниках добрасываю контролов на форму и прописываю связи с полями и все.
Базовый класс датамодуля имеет абстрактный метод типа
function GetEditForm: TCustomEditForm; virtual; abstract;
а наследники-датамодули уже возвращают неабстрактные формы в этом методе


SlymRO   (2007-07-31 11:45:00) [19]

http://www.delphimaster.ru/articles/bdform/index.html


SlymRO   (2007-07-31 11:41:00) [20]

StriderMan ©   (31.07.07 11:28) [3]
придется динамически контролы клепать... но ето не проблема: бежим по полям и делаем контролы нужного типа...

или форма с контейнером (фрейм например) и динамически загружать в него содержимое из базы. недостаток: придется для каждого обекта в дизайнере таки ручками прототип делать...
но если скрестить оба метода должно ниплохо получиться


Страницы:   1 2

Наверх

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