Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.5 MB
Время: 0.735 c
14-1096614062
Nikolay M.
2004-10-01 11:01
2004.10.24
Еще одно обращение к студентам...


3-1096381802
LamLam
2004-09-28 18:30
2004.10.24
FireBird embedded - ну никак не хочет...


1-1097165028
Cosinus
2004-10-07 20:03
2004.10.24
Возможно ли в одном StringGrid сделать множественное выделение?


6-1092286937
DenTolstoy
2004-08-12 09:02
2004.10.24
Как на ходу изменить IP адрес сетевой карты


1-1097497654
Jolik
2004-10-11 16:27
2004.10.24
Exception в конструкторе...