Текущий архив: 2004.10.24;
Скачать: CL | DM;
ВнизВопрос про TDataModule Найти похожие ветки
← →
eugene32 (2004-09-25 19:08) [0]Объясните пожалуйста, для чего нужен модуль данных(Data Module) и как им пользоваться. Пытался найти - не нашел.
Какое преимущество от того, что я перемещю все Query и Datasourse"ы программы на отдельный датамодуль?
Заранее благодарен.
← →
Sergey_Masloff (2004-09-25 19:10) [1]Да особо не для чего. Для удобства. Ну и компонентами с датамодуля обычно пользуется много форм одновременно. А так все равно.
← →
eugene32 (2004-09-25 19:21) [2]Подробнее про удобство можно?
← →
eugene32 (2004-09-25 19:23) [3]Да, и что должно писаться в этом новом юните? Обработка каких событий? Ну не зря же его (Датамодуль) придумали.
← →
eugene32 (2004-09-25 19:24) [4]Можно даже примерчик из программы...
← →
Anatoly Podgoretsky © (2004-09-25 20:10) [5]Это особый вид формы, контейнер для невизуальных компонент.
← →
eugene32 (2004-09-25 20:18) [6]Это я усвоил. Как им пользоваться? в чём преимущества?
← →
Vlad © (2004-09-25 20:47) [7]
> eugene32 (25.09.04 20:18) [6]
> Это я усвоил. Как им пользоваться? в чём преимущества?
Пользоваться так же как любым объектом, так же как формой (отличие в том, что визуализировать нельзя).
Преимущества неочевидны. Скажем если у тебя в проекте несколько форм работают с одними и теми же DB-компонентами (TQuery, TDataBase и т.п.), то чтобы не разбрасывать их по разным формам, можно их вынести в отдельный DataModule, для простоты и ясности.
А иногда наоборот, удобнее бывает компоненты держать не все скопом, а на каждой форме - свои.
Так же DataModule бывает удобен для передачи в DLL.
Скажем, тебе нужно передать TDataBase и штук 5 разных TQuery в некую библиотечную функцию в кач-ве параметров. Так вот, можно сделать 5 параметров соотв. типов, а можно один - TDataModule. ИМХО, гораздо удобнее.
← →
eugene32 (2004-09-25 20:53) [8]И передать в библиотечную функцию ДатаМодуль?
← →
Vlad © (2004-09-25 20:58) [9]
> eugene32 (25.09.04 20:53) [8]
> И передать в библиотечную функцию ДатаМодуль?
Ну да. В DLL делаешь экспортируемую функцию, что-нибудь вродеfunction CalculatePayment(DM: TDataModule): Double;
begin
// Тут обращаемся к объектам переданного датамодуля как обычно
DM.Query1.FieldByName(....).AsFloat
и т.д.
end;
← →
eugene32 (2004-09-25 20:59) [10]Vlad, спасибо за помощь. Немного прояснил обстановку ;)
← →
kaif © (2004-09-26 04:24) [11]Самое полезное в DataModule - размещать на них компоненты ImageList с картинками. А запросы я лично предпочитаю раскладывать по формам. В модуле данных у меня обычно только компонент базы данных лежит и одной глобальной readonly транзакции для разных часто требующихся читающих запросов.
Чтобы модуль данных был виден (доступен) в форме, нужно его просто в uses модуля формы указать.
← →
eugene32 (2004-09-26 10:24) [12]kaif, Благодарю.
← →
msguns (2004-09-27 10:03) [13]Еще о пользе TDataModule
Если в проекте используется базовая форма, с которой наследуются рабочие формы (самый простой пример - со справочниками), при этом все формы-предки, ессно, не автосоздаваемые, то централизация описания некоторых методов и свойств объектов БД (и не только) ооочень удобно выносить в некий объект (ы), во-первых, автосоздаваемый и всегда существующий при выполнении приложения, во-вторых, "видимый" всеми остальными.
Кроме того, удобно централизовать основную часть логики в отдельно вынесенном блоке кода. (Я, в частности, реализую в датамодулях все пересортировки, модификации ВСЕХ таблиц, разнообразные AfterScroll и т.д., т.е. то, что по каким-то причинам не "влезло" в бизнес-логику на сервере)
← →
msguns (2004-09-27 10:04) [14]при этом все формы-предки
Пардон, потомки, конюшно ;)))
← →
eugene32 (2004-09-27 14:43) [15]msguns, thanks for help ;)
Страницы: 1 вся ветка
Текущий архив: 2004.10.24;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.045 c