unit fROServerClassForm; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons; type TROServerClassForm = class(TForm) rgClassType: TRadioGroup; GroupBox1: TPanel; lbDescription: TLabel; Image2: TImage; Bevel2: TBevel; Panel1: TPanel; btn_Ok: TBitBtn; Button2: TBitBtn; Bevel3: TBevel; lbl_Caption: TLabel; Label2: TLabel; procedure FormCreate(Sender: TObject); procedure rgClassTypeClick(Sender: TObject); private function GetServerClassName : string; function GetRequiredUnits: string; public property ServerClassName : string read GetServerClassName; property RequiredUnits : string read GetRequiredUnits; end; var ROServerClassForm: TROServerClassForm; function SelectROServerClassType(const ServiceName : string; out aServerClassname : string; out someRequiredUnits : string) : boolean; implementation uses uRODLGenTools, uROServer, uRORemoteDataModule; {$R *.dfm} function SelectROServerClassType(const ServiceName : string; out aServerClassname : string; out someRequiredUnits : string) : boolean; begin with TROServerClassForm.Create(NIL) do try Caption := Format(Caption, [ServiceName]); lbl_Caption.Caption := Format(lbl_Caption.Caption, [ServiceName]); result := (ShowModal=mrOK); aServerClassname := ServerClassName; someRequiredUnits := RequiredUnits; finally Free; end; end; procedure TROServerClassForm.FormCreate(Sender: TObject); var i : integer; s : string; begin rgClassType.Items.Clear; rgClassType.Items.Add('&Simple object'); for i := (GetRODataModuleClassCount-1) downto 0 do begin s := GetRODataModuleClass(i).Alias; //if (i=0) then s := s+' (Reccommended)'; if GetRODataModuleClass(i).ClassType = TRORemoteDataModule then s := s+' (recommended)'; rgClassType.Items.Add(s); end; rgClassType.ItemIndex := 1; { we've added one additional item } //Height := (225*(GetRODataModuleClassCount+1)) div 3 ClientHeight := 250 + (GetRODataModuleClassCount()*25); end; function TROServerClassForm.GetRequiredUnits: string; begin if (rgClassType.ItemIndex=0) then result := '' else result := GetRODataModuleClass(GetRODataModuleClassCount-rgClassType.ItemIndex).RequiredUnits end; function TROServerClassForm.GetServerClassName : string; begin if (rgClassType.ItemIndex=0) then result := TRORemotable.ClassName else result := GetRODataModuleClass(GetRODataModuleClassCount-rgClassType.ItemIndex).ClassType.ClassName end; procedure TROServerClassForm.rgClassTypeClick(Sender: TObject); begin if (rgClassType.ItemIndex=0) then lbDescription.Caption := 'Non-visual Delphi object. Recommended for services that do not require additional components '+ 'and don''t need to provide the design time features of a data module.' else lbDescription.Caption := GetRODataModuleClass(GetRODataModuleClassCount-rgClassType.ItemIndex).Description; end; end.