unit uDAClientDataModuleDataTableWizardForm; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, CheckLst, Buttons, uDAClientDataModule, DesignIntf; type TDAClientDataModuleDataTableWizardForm = class(TForm) BitBtn2: TBitBtn; BitBtn1: TBitBtn; lbl_ServerUrl1: TLabel; lbl_ServerUrl2: TLabel; lb_DataSets: TCheckListBox; private fModule:TDAClientDataModule; procedure FillDataSets; public class function Execute(aOwner: TComponent; aModule:TDAClientDataModule; aDesigner:IDesigner):boolean; end; var DAClientDataModuleDataTableWizardForm: TDAClientDataModuleDataTableWizardForm; implementation uses uROClasses, uDAIDERes, uRODL, uRORemoteService, uDADataAbstractEditors, uDAMemDataTable, uDAClasses, uDAPleaseWaitForm; {$R *.dfm} { TDAClientDataModuleDataTableWizardForm } class function TDAClientDataModuleDataTableWizardForm.Execute(aOwner: TComponent; aModule: TDAClientDataModule; aDesigner:IDesigner): boolean; var i:integer; 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]); FillDataSets(); result := ShowModal() = idOk; if result then begin for i := 0 to lb_DataSets.Items.Count-1 do begin if lb_DataSets.Checked[i] then begin CreateDataTable(aDesigner, aModule, TDAMemDataTable, lb_DataSets.Items[i], false); end; end; end; finally Free(); end; end; procedure TDAClientDataModuleDataTableWizardForm.FillDataSets; var i: integer; lSchema: TDASchema; lDataSets: TStringList; begin lDataSets := TStringList.Create(); try lDataSets.Duplicates := dupIgnore; lDataSets.Sorted := true; lSchema := nil; with CreatePleaseWaitForm(self,'Retrieving Schema...') do begin fModule.GetSchema(lSchema,true); Hide; end; try for i := 0 to lSchema.Datasets.Count-1 do begin lDataSets.Add(lSchema.Datasets[i].Name); end; { for } finally lSchema.Free(); end; lb_DataSets.Items.Assign(lDataSets); for i := 0 to lb_Datasets.Items.Count-1 do begin lb_DataSets.Checked[i] := true; end; { for } finally FreeAndNil(lDataSets); end; {lLibrary := fModule.RemoteService.GetRODLLibrary(); if not Assigned (lLibrary) then RaiseError('Library could not retrieved from server'); try lDataSets := fModule.RemoteService.GetServiceMethods(); for i := 0 to lDataSets.Count-1 do begin p := Pos('_',lDataSets[i]); if p > 0 then lb_DataSets.Checked[lb_DataSets.Items.Add(Copy(lDataSets[i],p+1,Length(lDataSets[i])-p))] := true; end; finally lLibrary.Free(); end; } end; end.