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

procedure TForml.ClientDataSetReconcileError(DataSet: TCustomClientDataSet;
E: EReconcileError;
UpdateKind: TUpdateKind;
var Action: TReconcileAction) ;
begin
Action := HandleReconcileError(DataSet, UpdateKind, E) ;
end;

Пример "тонкого" клиента

Пример клиентского приложения является частью группы проектов SimpleR.emote.bpg и предназначен для взаимодействия с сервером приложений 5гтр1еАррз^г (рис. 22.5), процесс создания которого подробно рассматривался в гл. 21.

Программирование в Delphi 7

Рис. 22.5. Окно клиентского приложения Simple Client

Проект клиента Simple Client состоит из двух файлов.

□ Компоненты, обеспечивающие соединение с удаленным сервером приложения и работу с наборами данных, сосредоточены в модуле данных DataModule (файл uDataModule.pas). Обратите внимание, что это "обычный" модуль данных, используемый в приложениях баз данных (см. гл. 11).

О Главная форма клиентского приложения finMain (файл uMain.pas), содержащая визуальные компоненты пользовательского интерфейса.

[Листинг 22.1. Секция implementation модуля данных ]ffate^odule*;."f!p'' l^^^p implementation

uses uMain, Variants, Dialogs; {SR *.dfm}

procedure TDM.SrvrConAfterConnect(Sender: TObject);
var i: Integer;

begin for i := 0 to SrvrCon.DataSetCount - 1 do

SrvrCon.DataSets[i].Open;
cdsVendors. Open;
end ;
procedure TDM.SrvrConBeforeDisconnect(Sender: TObject);
var i: Integer;

begin for i := 0 to SrvrCon.DataSetCount - 1 do

SrvrCon.DataSets[i].Close;
cdsVendors.Close;
end ;
procedure TDM.cdsVendorsAfterScroll(DataSet: TDataSet);
begin
fmMain.edCostSum.Text := VarToStr(cdsParts.Aggregates[0].Value);
fmMain.edPriceSum.Text := VarToStr(cdsParts.Aggregates[1].Value);
end;

procedure TDM.cdsPartsReconcileError(DataSet: TCustomClientDataSet; E:

EReconcileError;
UpdateKind: TUpdateKind;
var Action: TReconcileAction);
begin
cdsParts.CancelUpdates;
MessageDlg(E.Message, mtErrorr [rribOK], 0) ;
end ;

end.

Соединение клиента с сервером приложения

Для соединения клиентского приложения с сервером в локальной сети использован компонент srvrCon класса TDCOMConnection. Данный тип соединения выбран как наиболее простой и требующий лишь наличия локальной сети или даже не требующий ничего - в демонстрационном приложении можно использовать сервер приложения, установленный на этом же компьютере.

Для настройки соединения компонента SrvrCon в свойстве ComputerName было указано имя компьютера сервера. После этого в списке свойства ServerName можно выбрать один из доступных зарегистрированных серверов. В нашем случае это сервер simpleAppSrvr. simpleRDM, имя которого состоит из имени приложения сервера и имени главного удаленного модуля данных.

Обратите внимание, что в этом же списке имеется и дочерний модуль Secondary. Однако для получения доступа к наборам данных дочернего модуля данных мы не будем создавать еще одно соединение, а воспользуемся компонентом TSharedconnection, т. к. он специально предназначен для подобных случаев. Для его настройки достаточно указать в свойстве Parentconnection компонент соединения. В нашем случае - это SrvrCon.


⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в Delphi 7



Новости за месяц

  • Август
    2017
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс