![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DataSnap: "взаимоотношения" RDM между собой
d_oleg © (2007-07-13 09:27:00)Подскажие пожалуйста, чего-то я видимо недопонимаю...
Есть проект 3х звенка на DataSnap. Сервер представляет собой набор объектов TRemoteDataModule, клиент коннектится к главному, с помощью TSharedConnection имеет доступ к остальным remotedataмодулям. Тут все вполне стандартно и понятно TSharedConnection обращается к свойству главного модуля, оный модуль отдает интерфейс созданного объекта.
Так вот, про взаимодействие объектов внутри сервера - в главном модуле лежит компонент-подключение к БД, в остальных - dataset'ы доступа к данным. В дизайн-тайме в cвойства Database DataSet'ов очень замечательно проставляется компонент, находящийся в главном модуле.
Т.е.
TMainRDM = class(TRemoteDataModule, IMainRDM)
Database: TpFIBDatabase;
......
end;
MainRDM: IMainRDM
TChildRDM = class(TRemoteDataModule, IChildRDM)
Dataset: TpFIBDataSet;
.......
end;
DFM: object tele_data: TpFIBDataSet
Database = MainRDM.Database
end;
Внимание вопрос: как это происходит? Ведь MainRDM - это интерфейс, как он может фигурировать в DFM? К тому же нет у него свойства Database.
Спрашиваю для того, чтобы понять, как можно подобное присвоение сделать в коде в run-time.
d_oleg (2007-07-13 11:08:00) [21]
> Эту переменную ты создал "ручками" ?
нет, автоматом в _TLB файле.
Сергей М. (2007-07-13 09:58:00) [22]
> MainRDM: IMainRDM
Эту переменную ты создал "ручками" ?
Что-то не припоминаю я, чтобы эксперт создавал в RDM-юните глоб.переменную интерфейсного типа.