Пример "тонкого" клиента
Соединение клиента с сервером приложения
Для соединения клиентского приложения с сервером в локальной сети использован компонент srvrCon класса TDCOMConnection. Данный тип соединения выбран как наиболее простой и требующий лишь наличия локальной сети или даже не требующий ничего – в демонстрационном приложении можно использовать сервер приложения, установленный на этом же компьютере.
Для настройки соединения компонента SrvrCon в свойстве ComputerName было указано имя компьютера сервера. После этого в списке свойства ServerName можно выбрать один из доступных зарегистрированных серверов. В нашем случае это сервер simpieAppSrvr.simpieRDM, имя которого состоит из имени приложения сервера и имени главного удаленного модуля данных.
Обратите внимание, что в этом же списке имеется и дочерний модуль Secondary. Однако для получения доступа к наборам данных дочернего модуля данных мы не будем создавать еще одно соединение, а воспользуемся компонентом TSharedConnection, т. к. он специально предназначен для подобных случаев. Для его настройки достаточно указать в свойстве Parentconnection компонент соединения. В нашем случае – это srvrCon.
Для компонента srvrCon предусмотрены два метода-обработчика (см. листинг 22.1) – после подключения и перед отключением соединения. В них открываются и закрываются все наборы данных клиентского приложения.
Теперь в клиентском приложении доступны наборы данных обоих удаленных модулей данных сервера приложений.
Непосредственно подключение к серверу осуществляется кнопкой Соединение. При ее нажатии выполняется следующий простой код:
procedure TfmMain.tbConnectClick(Sender: TObject); begin try DM.SrvrCon.Close; DM.SrvrCon.ComputerName: = edServerName.Text; DM.SrvrCon.Open; except on E: Exception do MessageDlg(E.Message, mtError, [mbOK], O); end; SetCTRLState; end;
Соединение закрывается, задается новое имя компьютера сервера, соединение открывается. Специально созданный метод формы setctristate управляет доступностью кнопок формы, анализируя текущее состояние наборов данных.