Componentes.Terceros.RemObj.../official/5.0.23.613/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleEditorForm.pas

149 lines
4.2 KiB
ObjectPascal
Raw Permalink Normal View History

unit uDAClientDataModuleEditorForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uDAClientDataModule, StdCtrls, Buttons, DesignIntf;
type
TDAClientDataModuleEditorForm = class(TForm)
btn_CreateTables: TBitBtn;
BitBtn2: TBitBtn;
lbl_ServerUrl1: TLabel;
ed_ServerUrl: TEdit;
lbl_ServerUrl2: TLabel;
lbl_ServerUrl3: TLabel;
Label4: TLabel;
Label5: TLabel;
cb_Services: TComboBox;
BitBtn1: TBitBtn;
procedure ed_ServerUrlChange(Sender: TObject);
procedure cb_ServicesEnter(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure btn_CreateTablesClick(Sender: TObject);
procedure cb_ServicesChange(Sender: TObject);
private
fServerUrlChanged: boolean;
fRestoreServerUrl: string;
fModule:TDAClientDataModule;
fCreateDataTables: boolean;
procedure FillServiceCombo;
public
class function Execute(aOwner: TCOmponent; aModule:TDAClientDataModule; aDesigner:IDesigner):boolean;
end;
var
DAClientDataModuleEditorForm: TDAClientDataModuleEditorForm;
implementation
uses
uROClasses, TypInfo, uDAIDERes, uDAPleaseWaitForm,
uDAClientDataModuleDataTableWizardForm;
{$R *.dfm}
{ TDAClientDataModuleEditorForm }
class function TDAClientDataModuleEditorForm.Execute(aOwner: TCOmponent; aModule: TDAClientDataModule; aDesigner:IDesigner): boolean;
begin
if not Assigned(aModule.RemoteService) then RaiseError(err_AssignRemoteService);
if not Assigned(aModule.RemoteService.Channel) then RaiseError(err_AssignRemoteServiceChannel);
if not Assigned(aModule.RemoteService.Message) then RaiseError(err_AssignRemoteServiceMessage);
with self.Create(aOwner) do try
fModule := aModule;
Caption := Format(Caption,[fModule.Name]);
try
fRestoreServerUrl := GetStrProp(fModule.RemoteService.Channel,'TargetURL');
ed_ServerUrl.Text := fRestoreServerUrl;
fServerUrlChanged := false;
except
ed_ServerUrl.Enabled := false;
lbl_ServerUrl1.Enabled := false;
lbl_ServerUrl2.Enabled := false;
lbl_ServerUrl3.Enabled := false;
end;
FillServiceCombo();
cb_Services.ItemIndex := cb_Services.Items.IndexOf(fModule.RemoteService.ServiceName);
cb_ServicesChange(nil);
result := ShowModal() = idOk;
if result then begin
if ed_ServerUrl.Enabled then SetStrProp(fModule.RemoteService.Channel,'TargetURL',ed_ServerUrl.Text);
fModule.RemoteService.ServiceName := cb_Services.Text;
if fCreateDataTables then begin
TDAClientDataModuleDataTableWizardForm.Execute(aOwner, fModule, aDesigner);
end;
end;
finally
Free();
end;
end;
procedure TDAClientDataModuleEditorForm.ed_ServerUrlChange(
Sender: TObject);
begin
fServerUrlChanged := true;
end;
procedure TDAClientDataModuleEditorForm.FillServiceCombo;
var
lServiceNames: IROStrings;
i:integer;
begin
Screen.Cursor := crHourGlass;
try
cb_Services.Items.Clear();
lServiceNames := fModule.RemoteService.GetServiceNames();
if Assigned(lServiceNames) then begin
for i := 0 to (lServiceNames.Count-1) do
cb_Services.Items.Add(lServiceNames[i]);
end
else begin
cb_Services.Text := '<could not retrieve RODL>';
end;
cb_ServicesChange(nil);
finally
Screen.Cursor := crDefault;
end;
end;
procedure TDAClientDataModuleEditorForm.cb_ServicesEnter(Sender: TObject);
begin
if fServerUrlChanged then begin
if ed_ServerUrl.Enabled then begin
SetStrProp(fModule.RemoteService.Channel,'TargetURL',ed_ServerUrl.Text);
FillServiceCombo();
end;
fServerUrlChanged := true;
end
end;
procedure TDAClientDataModuleEditorForm.BitBtn2Click(Sender: TObject);
begin
if ed_ServerUrl.Enabled then
SetStrProp(fModule.RemoteService.Channel,'TargetURL',fRestoreServerUrl);
end;
procedure TDAClientDataModuleEditorForm.btn_CreateTablesClick(Sender: TObject);
begin
fCreateDataTables := true;
end;
procedure TDAClientDataModuleEditorForm.cb_ServicesChange(Sender: TObject);
begin
btn_CreateTables.Enabled := cb_Services.Text <> '';
end;
end.