{ ************************************************************** Package: XWB - Kernel RPCBroker Date Created: Sept 18, 1997 (Version 1.1) Site Name: Oakland, OI Field Office, Dept of Veteran Affairs Developers: Danila Manapsal, Don Craven, Joel Ivey Description: Property Editors for TRPCBroker component. Current Release: Version 1.1 Patch 40 (January 7, 2005)) *************************************************************** } unit RpcbEdtr; {$I IISBase.inc} interface uses {Delphi standard} Classes, Controls, Dialogs, {$IFDEF D6_OR_HIGHER} DesignIntf, DesignEditors, DesignMenus, {$ELSE} DsgnIntf, {$ENDIF} Forms, Graphics, Messages, SysUtils, WinProcs, WinTypes, Trpcb; //P14 -- pack split type {------ TRemoteProc property editor ------} {This property editor gets a list of remote procedures from the API file.} TRemoteProcProperty = class(TStringProperty) private { Private declarations } protected { Protected declarations } public { Public declarations } function GetAttributes: TPropertyAttributes; override; procedure GetValues(Proc: TGetStrProc); override; procedure SetValue(const Value: string); override; end; {------ TServerProperty property editor ------} {This property editor gets a list of servers from the C:\WINDOWS\HOSTS file} TServerProperty = class(TStringProperty) private { Private declarations } protected { Protected declarations } public { Public declarations } function GetAttributes: TPropertyAttributes; override; procedure GetValues(Proc: TGetStrProc); override; function GetValue: string; override; procedure SetValue(const Value: string); override; end; {------ TRpcVersion property editor ------} {This property editor checks to make sure that RpcVersion is not eimpty. If it is, it stuffs '0' (default).} TRpcVersionProperty = class(TStringProperty) private { Private declarations } protected { Protected declarations } public { Public declarations } procedure SetValue(const Value: string); override; end; procedure Register; implementation uses XWBut1, MFunStr, {TRPCB,} Hash, RpcbErr; //P14 -- pack split function TRemoteProcProperty.GetAttributes; begin Result := [paAutoUpdate,paValueList]; end; procedure TRemoteProcProperty.GetValues(Proc: TGetStrProc); var RpcbEdited, RPCBTemp: TRPCBroker; I: integer; begin RPCBTemp := nil; RpcbEdited := GetComponent(0) as TRPCBroker; try RPCBTemp := TRPCBroker.Create(RpcbEdited); with RpcbTemp do begin ShowErrorMsgs := RpcbEdited.ShowErrorMsgs; Server := RpcbEdited.Server; ListenerPort := RpcbEdited.ListenerPort; ClearParameters := True; ClearResults := True; RemoteProcedure := 'XWB RPC LIST'; Param[0].Value := GetValue; Param[0].PType := literal; Call; for I := 0 to Results.Count - 1 do Proc(Results[I]); end; finally RPCBTemp.Free; end; end; procedure TRemoteProcProperty.SetValue(const Value: string); begin SetStrValue(UpperCase(Piece(Value,' [',1))); {convert user entry all to upper case} end; function TServerProperty.GetAttributes; begin Result := [paAutoUpdate,paValueList]; end; function TServerProperty.GetValue: string; begin Result := Piece(GetStrValue,' [',1); {get just the name} end; procedure TServerProperty.GetValues(Proc: TGetStrProc); var ServerList: TStringList; I: integer; begin ServerList := TStringList.Create; GetHostList(ServerList); for I := 0 to ServerList.Count - 1 do Proc(ServerList[I]); ServerList.Free; end; procedure TServerProperty.SetValue(const Value: string); begin SetStrValue(Piece(Value,' [',1)); {get just the name} end; procedure TRpcVersionProperty.SetValue(const Value: string); begin { try if Value = '' then NetError('Configure',XWB_NullRpcVer) else SetStrValue(Value); except on E: EBrokerError do begin ShowBrokerError(E); SetStrValue('0'); end; end; } if Value <> '' then SetStrValue(Value) else begin ShowMessage('RPCVersion cannot be empty. Default is 0 (zero).'); SetStrValue('0'); end; end; procedure Register; begin RegisterPropertyEditor(TypeInfo(TRemoteProc),nil,'',TRemoteProcProperty); RegisterPropertyEditor(TypeInfo(TServer),nil,'',TServerProperty); RegisterPropertyEditor(TypeInfo(TRpcVersion),nil,'',TRpcVersionProperty); end; end.