| 1 | { **************************************************************
 | 
|---|
| 2 |         Package: XWB - Kernel RPCBroker
 | 
|---|
| 3 |         Date Created: Sept 18, 1997 (Version 1.1)
 | 
|---|
| 4 |         Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
 | 
|---|
| 5 |         Developers: Danila Manapsal, Don Craven, Joel Ivey
 | 
|---|
| 6 |         Description: Signon Form Configuration Dialog.
 | 
|---|
| 7 |         Current Release: Version 1.1 Patch 40 (January 7, 2005))
 | 
|---|
| 8 | *************************************************************** }
 | 
|---|
| 9 | 
 | 
|---|
| 10 | {**************************************************
 | 
|---|
| 11 | 1.1P31 - Modified to store signon configuration under
 | 
|---|
| 12 |          the HKCU key - this permits users on NT2000
 | 
|---|
| 13 |          machines who have USER access to set their
 | 
|---|
| 14 |          configuration.  Also, makes configuration specific
 | 
|---|
| 15 |          to users on machines which might be shared.
 | 
|---|
| 16 | 
 | 
|---|
| 17 |          Also make it so that configuration is only written
 | 
|---|
| 18 |          to the registry when the user indicates that it
 | 
|---|
| 19 |          should be saved (previously the default values
 | 
|---|
| 20 |          were written into the registry as well as applied
 | 
|---|
| 21 |          to the window if data was not in the registry).
 | 
|---|
| 22 |          The default values previously stored in the registry
 | 
|---|
| 23 |          would override any changes in the signon window
 | 
|---|
| 24 |          design via coding.  To overcome this, if the user
 | 
|---|
| 25 |          does not have saved configuration data, the window
 | 
|---|
| 26 |          generated on opening will be used as the default, and
 | 
|---|
| 27 |          the default data written into the registry as defaults.
 | 
|---|
| 28 |          This will permit the user to restore to the current
 | 
|---|
| 29 |          window defaults if desired, but will not overwrite
 | 
|---|
| 30 |          changes released for the window in later patches.
 | 
|---|
| 31 | ************************************************************}
 | 
|---|
| 32 | 
 | 
|---|
| 33 | unit Sgnoncnf;
 | 
|---|
| 34 | 
 | 
|---|
| 35 | interface
 | 
|---|
| 36 | 
 | 
|---|
| 37 | uses WinTypes, WinProcs, Classes, Graphics, Forms, Controls, Buttons,
 | 
|---|
| 38 |   StdCtrls, ExtCtrls, Dialogs, SysUtils, MFunStr, XWBut1;
 | 
|---|
| 39 | 
 | 
|---|
| 40 | type
 | 
|---|
| 41 |   TSignonValues = class(TObject)
 | 
|---|
| 42 |   private
 | 
|---|
| 43 |     FHeight: Integer;
 | 
|---|
| 44 |     FWidth: Integer;
 | 
|---|
| 45 |     FTextColor: LongInt;
 | 
|---|
| 46 |     FPosition: String;
 | 
|---|
| 47 |     FSize: String;
 | 
|---|
| 48 |     FIntroFont: String;
 | 
|---|
| 49 |     FIntroFontStyles: String;
 | 
|---|
| 50 |     FBackColor: LongInt;
 | 
|---|
| 51 |     FFont: TFont;
 | 
|---|
| 52 |     FFontStyles: TFontStyles;
 | 
|---|
| 53 |     FTop: Integer;
 | 
|---|
| 54 |     FLeft: Integer;
 | 
|---|
| 55 |     procedure SetSize(const Value: String);
 | 
|---|
| 56 |     procedure SetPosition(const Value: String);
 | 
|---|
| 57 |     procedure SetIntroFont(const Value: String);
 | 
|---|
| 58 |     procedure SetIntroFontStyles(const Value: String);
 | 
|---|
| 59 |     procedure SetFont(Value: TFont);
 | 
|---|
| 60 |     procedure SetTextColor(Value: LongInt);
 | 
|---|
| 61 |   public
 | 
|---|
| 62 |     procedure Clear; virtual;
 | 
|---|
| 63 |     constructor Create;
 | 
|---|
| 64 |     destructor Destroy; override;
 | 
|---|
| 65 |     procedure SetEqual(EqualToValue: TSignonValues);
 | 
|---|
| 66 |     property Height: Integer read FHeight write FHeight;
 | 
|---|
| 67 |     property Width: Integer read FWidth write FWidth;
 | 
|---|
| 68 |     property TextColor: LongInt read FTextColor write SetTextColor;
 | 
|---|
| 69 |     property Position: String read FPosition write SetPosition;
 | 
|---|
| 70 |     property Size: String read FSize write SetSize;
 | 
|---|
| 71 |     property IntroFont: String read FIntroFont write SetIntroFont;
 | 
|---|
| 72 |     property IntroFontStyles: String read FIntroFontStyles write SetIntroFontStyles;
 | 
|---|
| 73 |     property BackColor: LongInt read FBackColor write FBackColor;
 | 
|---|
| 74 |     property Font: TFont read FFont write SetFont;
 | 
|---|
| 75 |     property FontStyles: TFontStyles read FFontStyles write FFontStyles;
 | 
|---|
| 76 |     property Top: Integer read FTop write FTop;
 | 
|---|
| 77 |     property Left: Integer read FLeft write FLeft;
 | 
|---|
| 78 |   end;
 | 
|---|
| 79 | 
 | 
|---|
| 80 |   TSignonConfiguration = class;
 | 
|---|
| 81 | 
 | 
|---|
| 82 | {
 | 
|---|
| 83 |    This class is the form shown for configuration of the signon form
 | 
|---|
| 84 | }
 | 
|---|
| 85 |   TfrmSignonConfig = class(TForm)
 | 
|---|
| 86 |     OKBtn: TBitBtn;
 | 
|---|
| 87 |     CancelBtn: TBitBtn;
 | 
|---|
| 88 |     HelpBtn: TBitBtn;
 | 
|---|
| 89 |     Bevel1: TBevel;
 | 
|---|
| 90 |     rgrWindowPosition: TRadioGroup;
 | 
|---|
| 91 |     rgrWindowSize: TRadioGroup;
 | 
|---|
| 92 |     FontDialog1: TFontDialog;
 | 
|---|
| 93 |     GroupBox1: TGroupBox;
 | 
|---|
| 94 |     Button1: TButton;
 | 
|---|
| 95 |     btnDefaults: TBitBtn;
 | 
|---|
| 96 |     rgrIntroBackClr: TRadioGroup;
 | 
|---|
| 97 |     ColorDialog1: TColorDialog;
 | 
|---|
| 98 |     procedure Button1Click(Sender: TObject);
 | 
|---|
| 99 |     procedure OKBtnClick(Sender: TObject);
 | 
|---|
| 100 |     procedure FormShow(Sender: TObject);
 | 
|---|
| 101 |     procedure rgrIntroBackClrClick(Sender: TObject);
 | 
|---|
| 102 |   private
 | 
|---|
| 103 |     { Private declarations }
 | 
|---|
| 104 |     FController: TSignonConfiguration;
 | 
|---|
| 105 |   public
 | 
|---|
| 106 |     property Controller: TSignonConfiguration read FController write FController;
 | 
|---|
| 107 |     { Public declarations }
 | 
|---|
| 108 |   end;
 | 
|---|
| 109 | 
 | 
|---|
| 110 | {
 | 
|---|
| 111 |      This class handles the processing for signon configuration
 | 
|---|
| 112 | }
 | 
|---|
| 113 |   TSignonConfiguration = class(TObject)
 | 
|---|
| 114 |   private
 | 
|---|
| 115 |     OrigHelp: String;
 | 
|---|
| 116 |     FIntroBackColor: LongInt;
 | 
|---|
| 117 |     FIntroFontValue: String;
 | 
|---|
| 118 |     FIntroFontStyles: String;
 | 
|---|
| 119 |     FIntroTextColor: LongInt;
 | 
|---|
| 120 |     FPosition: String;
 | 
|---|
| 121 |     FSize: String;
 | 
|---|
| 122 |   protected
 | 
|---|
| 123 |     procedure ResetToDefaults; virtual;
 | 
|---|
| 124 |     procedure UserClickedOK; virtual;
 | 
|---|
| 125 |     procedure IntroBackColor; virtual;
 | 
|---|
| 126 |     procedure FontDialog; virtual;
 | 
|---|
| 127 |     procedure UpdateWindow;
 | 
|---|
| 128 |   public
 | 
|---|
| 129 |     function ShowModal: Integer; virtual;
 | 
|---|
| 130 |     procedure ReadRegistrySettings;
 | 
|---|
| 131 |     constructor Create;
 | 
|---|
| 132 |   end;
 | 
|---|
| 133 | 
 | 
|---|
| 134 | function StoreFontStyle(Values: TFontStyles): string;
 | 
|---|
| 135 | function RestoreFontStyles(Value: String): TFontStyles;
 | 
|---|
| 136 | 
 | 
|---|
| 137 | 
 | 
|---|
| 138 | var
 | 
|---|
| 139 |   frmSignonConfig: TfrmSignonConfig;
 | 
|---|
| 140 |   strPosition, strSize: string;
 | 
|---|
| 141 |   InitialValues: TSignonValues;
 | 
|---|
| 142 |   SignonDefaults: TSignonValues;
 | 
|---|
| 143 |   IsSharedBroker: Boolean;
 | 
|---|
| 144 | 
 | 
|---|
| 145 | {
 | 
|---|
| 146 | const
 | 
|---|
| 147 |   DfltWidth: integer = 794; // 631; // 611;  // 608;
 | 
|---|
| 148 |   DfltHeight: integer = 591;  // 467; // 300;
 | 
|---|
| 149 |   DfltIntroClr: longint = clWindow;
 | 
|---|
| 150 |   DfltPosition: string = '0';
 | 
|---|
| 151 |   DfltSize: string = '0';
 | 
|---|
| 152 |   DfltIntroFont: string = '';  //  'Fixedsys^8'; // 'Courier New^8';
 | 
|---|
| 153 |   DfltIntroFontStyle: TFontStyles = [fsBold];
 | 
|---|
| 154 |   DfltBackClr: integer = 0;
 | 
|---|
| 155 |   p:string = '[';
 | 
|---|
| 156 | }
 | 
|---|
| 157 | 
 | 
|---|
| 158 | implementation
 | 
|---|
| 159 | 
 | 
|---|
| 160 | {$R *.DFM}
 | 
|---|
| 161 | 
 | 
|---|
| 162 | uses LoginFrm, fSgnonDlg, Trpcb;
 | 
|---|
| 163 | 
 | 
|---|
| 164 | procedure TfrmSignonConfig.Button1Click(Sender: TObject);
 | 
|---|
| 165 | begin
 | 
|---|
| 166 | //  FontDialog1.Execute;
 | 
|---|
| 167 |   Controller.FontDialog;
 | 
|---|
| 168 | end;
 | 
|---|
| 169 | 
 | 
|---|
| 170 | procedure TfrmSignonConfig.OKBtnClick(Sender: TObject);
 | 
|---|
| 171 | begin
 | 
|---|
| 172 | 
 | 
|---|
| 173 | end;
 | 
|---|
| 174 | 
 | 
|---|
| 175 | {-------------- TSignonConfiguration.ReadRegistrySettings --------------
 | 
|---|
| 176 | Read Signon related settings from the Registry.  Substitute defaults
 | 
|---|
| 177 | for missing values.
 | 
|---|
| 178 | ------------------------------------------------------------------}
 | 
|---|
| 179 | procedure TSignonConfiguration.ReadRegistrySettings;
 | 
|---|
| 180 | var
 | 
|---|
| 181 |   strFontStyle: String;
 | 
|---|
| 182 |   strFontColor: String;
 | 
|---|
| 183 |   strFontSettings: String;
 | 
|---|
| 184 | begin
 | 
|---|
| 185 |   { Test handling of Defaults }
 | 
|---|
| 186 | //  ShowMessage
 | 
|---|
| 187 |   InitialValues.SetEqual(SignonDefaults);
 | 
|---|
| 188 |   InitialValues.Position := '0';
 | 
|---|
| 189 |   InitialValues.Size := '0';
 | 
|---|
| 190 |   InitialValues.BackColor := clWindow;
 | 
|---|
| 191 |   InitialValues.TextColor := clWindowText;
 | 
|---|
| 192 | 
 | 
|---|
| 193 |   {%%%%%%% Sign-on Window Position %%%%%%%}
 | 
|---|
| 194 |   strPosition := ReadRegDataDefault(HKCU, REG_SIGNON, 'SignonPos','');
 | 
|---|
| 195 |   if strPosition <> '' then
 | 
|---|
| 196 |     InitialValues.Position := strPosition;
 | 
|---|
| 197 | 
 | 
|---|
| 198 |   {%%%%%%% Sign-on Window Size %%%%%%%}
 | 
|---|
| 199 |   strSize := ReadRegDataDefault(HKCU, REG_SIGNON, 'SignonSiz', '');
 | 
|---|
| 200 |   if strSize <> '' then
 | 
|---|
| 201 |     InitialValues.Size := strSize;
 | 
|---|
| 202 | 
 | 
|---|
| 203 |   {%%%%%%% Intro Text Background Color %%%%%%%}
 | 
|---|
| 204 |   if ReadRegDataDefault(HKCU, REG_SIGNON, 'IntroBackClr', '') <> '' then
 | 
|---|
| 205 |     InitialValues.BackColor := StrToInt(ReadRegDataDefault(HKCU, REG_SIGNON, 'IntroBackClr', ''));
 | 
|---|
| 206 | 
 | 
|---|
| 207 |   {%%%%%%% Intro Text Font %%%%%%%}
 | 
|---|
| 208 |   strFontSettings := ReadRegDataDefault(HKCU, REG_SIGNON, 'IntroTextFont', '');
 | 
|---|
| 209 |   if strFontSettings <> '' then
 | 
|---|
| 210 |   begin
 | 
|---|
| 211 |     InitialValues.IntroFont := strFontSettings;
 | 
|---|
| 212 |     InitialValues.Font.Name := Piece(strFontSettings,U,1);
 | 
|---|
| 213 |     InitialValues.Font.Size := StrToInt(Piece(strFontSettings,U,2));
 | 
|---|
| 214 |   end;
 | 
|---|
| 215 |   
 | 
|---|
| 216 |   {%%%%%%% Intro Text Color %%%%%%%}
 | 
|---|
| 217 |   strFontColor := ReadRegDataDefault(HKCU, REG_SIGNON, 'IntroTextClr', '');
 | 
|---|
| 218 |   if strFontColor <> '' then
 | 
|---|
| 219 |   begin
 | 
|---|
| 220 |     InitialValues.TextColor := StrToInt(strFontColor);
 | 
|---|
| 221 |     InitialValues.Font.Color := InitialValues.TextColor;
 | 
|---|
| 222 |   end;
 | 
|---|
| 223 | 
 | 
|---|
| 224 |   {%%%%%%% Intro Text Font Styles %%%%%%%}
 | 
|---|
| 225 |   strFontStyle := ReadRegDataDefault(HKCU, REG_SIGNON, 'IntroTextStyle', '');
 | 
|---|
| 226 |   if strFontStyle <> '' then
 | 
|---|
| 227 |   begin
 | 
|---|
| 228 |     InitialValues.IntroFontStyles := strFontStyle;
 | 
|---|
| 229 |     InitialValues.Font.Style := RestoreFontStyles(strFontStyle)
 | 
|---|
| 230 |   end;
 | 
|---|
| 231 | end;
 | 
|---|
| 232 | 
 | 
|---|
| 233 | 
 | 
|---|
| 234 | function StoreFontStyle(Values: TFontStyles): String;
 | 
|---|
| 235 | begin
 | 
|---|
| 236 |   Result := '';
 | 
|---|
| 237 |   if fsBold in Values then
 | 
|---|
| 238 |     Result := Result + 'B';
 | 
|---|
| 239 |   if FsItalic in Values then
 | 
|---|
| 240 |     Result := Result + 'I';
 | 
|---|
| 241 |   if fsUnderline in Values then
 | 
|---|
| 242 |     Result := Result + 'U';
 | 
|---|
| 243 |   if fsStrikeout in Values then
 | 
|---|
| 244 |     Result := Result + 'S';
 | 
|---|
| 245 | end;
 | 
|---|
| 246 | 
 | 
|---|
| 247 | procedure TfrmSignonConfig.FormShow(Sender: TObject);
 | 
|---|
| 248 | begin
 | 
|---|
| 249 |   //
 | 
|---|
| 250 | end;
 | 
|---|
| 251 | 
 | 
|---|
| 252 | function RestoreFontStyles(Value: String): TFontStyles;
 | 
|---|
| 253 | begin
 | 
|---|
| 254 |   Result := [];
 | 
|---|
| 255 |   if pos('B',Value) > 0 then
 | 
|---|
| 256 |     Result := Result + [fsBold];
 | 
|---|
| 257 |   if pos('I',Value) > 0 then
 | 
|---|
| 258 |     Result := Result + [fsItalic];
 | 
|---|
| 259 |   if pos('U',Value) > 0 then
 | 
|---|
| 260 |     Result := Result + [fsUnderline];
 | 
|---|
| 261 |   if pos('S',Value) > 0 then
 | 
|---|
| 262 |     Result := Result + [fsStrikeout];
 | 
|---|
| 263 | end;
 | 
|---|
| 264 | 
 | 
|---|
| 265 | procedure TfrmSignonConfig.rgrIntroBackClrClick(Sender: TObject);
 | 
|---|
| 266 | begin
 | 
|---|
| 267 |   Controller.IntroBackColor;
 | 
|---|
| 268 | end;
 | 
|---|
| 269 | 
 | 
|---|
| 270 | function TSignonConfiguration.ShowModal: Integer;
 | 
|---|
| 271 | var
 | 
|---|
| 272 |   ModalValue: Integer;
 | 
|---|
| 273 | begin
 | 
|---|
| 274 |   ReadRegistrySettings;
 | 
|---|
| 275 |   if frmSignonConfig = nil then
 | 
|---|
| 276 |     frmSignonConfig := TfrmSignonConfig.Create(Application);
 | 
|---|
| 277 |   frmSignonConfig.Controller := Self;
 | 
|---|
| 278 |   OrigHelp := Application.HelpFile;             // Save original helpfile.
 | 
|---|
| 279 |   try
 | 
|---|
| 280 |     Application.HelpFile := ReadRegData(HKLM, REG_BROKER, 'BrokerDr') +
 | 
|---|
| 281 |                            '\clagent.hlp';      // Identify ConnectTo helpfile.
 | 
|---|
| 282 |     with frmSignonConfig do
 | 
|---|
| 283 |     begin
 | 
|---|
| 284 |       // set selections for entry to form
 | 
|---|
| 285 |       rgrIntroBackClr.ItemIndex := 0;   // Current Background
 | 
|---|
| 286 |       rgrWindowPosition.ItemIndex := StrToInt(Piece(InitialValues.Position,U,1));
 | 
|---|
| 287 |       rgrWindowSize.ItemIndex := StrToInt(Piece(InitialValues.Size,U,1));
 | 
|---|
| 288 |          // initialize font values to current settings
 | 
|---|
| 289 |       FIntroFontValue := InitialValues.IntroFont;
 | 
|---|
| 290 |       FIntroTextColor := InitialValues.TextColor;
 | 
|---|
| 291 |       FIntroFontStyles := InitialValues.IntroFontStyles;
 | 
|---|
| 292 | 
 | 
|---|
| 293 |       ShowApplicationAndFocusOK(Application);
 | 
|---|
| 294 |       ModalValue := frmSignonConfig.ShowModal;
 | 
|---|
| 295 |       if ModalValue = mrOK then  // establish changes for user
 | 
|---|
| 296 |       begin
 | 
|---|
| 297 |         UserClickedOK
 | 
|---|
| 298 |       end
 | 
|---|
| 299 |       else if ModalValue = mrIgnore then  // restore default values
 | 
|---|
| 300 |         ResetToDefaults;
 | 
|---|
| 301 |     end;    // with SignonForm
 | 
|---|
| 302 |     Result := ModalValue;
 | 
|---|
| 303 |   finally
 | 
|---|
| 304 |     frmSignonConfig.Free;   // Release;  jli 041104
 | 
|---|
| 305 |     Application.HelpFile := OrigHelp;  // Restore helpfile.
 | 
|---|
| 306 |   end;
 | 
|---|
| 307 | end;
 | 
|---|
| 308 | 
 | 
|---|
| 309 | {
 | 
|---|
| 310 |  called if user changes selection for Background Color
 | 
|---|
| 311 |    selection 0 is to current value
 | 
|---|
| 312 |    selection 1 is to select new color
 | 
|---|
| 313 | }
 | 
|---|
| 314 | procedure TSignonConfiguration.IntroBackColor;
 | 
|---|
| 315 | var
 | 
|---|
| 316 |   frmSignonDialog: TfrmSignonDialog;
 | 
|---|
| 317 |   OldHandle: THandle;
 | 
|---|
| 318 | begin
 | 
|---|
| 319 |   OldHandle := GetForegroundWindow;
 | 
|---|
| 320 |   if frmSignonConfig.rgrIntroBackClr.ItemIndex = 1 then
 | 
|---|
| 321 |   begin
 | 
|---|
| 322 |     frmSignonDialog := TfrmSignonDialog.Create(Application);
 | 
|---|
| 323 | //    ShowApplicationAndFocusOK(Application);
 | 
|---|
| 324 |       SetForegroundWindow(frmSignonDialog.Handle);
 | 
|---|
| 325 |     if frmSignonDialog.ShowModal = mrOK then
 | 
|---|
| 326 |       FIntroBackColor := clWindow
 | 
|---|
| 327 |     else
 | 
|---|
| 328 |     begin
 | 
|---|
| 329 |       ShowApplicationAndFocusOK(Application);
 | 
|---|
| 330 |       if IsSharedBroker then
 | 
|---|
| 331 |         frmSignonConfig.WindowState := wsMinimized;
 | 
|---|
| 332 |       if frmSignonConfig.ColorDialog1.Execute then
 | 
|---|
| 333 |         FIntroBackColor := frmSignonConfig.ColorDialog1.Color;
 | 
|---|
| 334 |       frmSignonConfig.WindowState := wsNormal;
 | 
|---|
| 335 |     end;
 | 
|---|
| 336 |   end
 | 
|---|
| 337 |   else
 | 
|---|
| 338 |     FIntroBackColor := InitialValues.BackColor;
 | 
|---|
| 339 |   SetForegroundWindow(OldHandle);
 | 
|---|
| 340 | end;
 | 
|---|
| 341 | 
 | 
|---|
| 342 | { called if user selects to change font for signon form }
 | 
|---|
| 343 | procedure TSignonConfiguration.FontDialog;
 | 
|---|
| 344 | var
 | 
|---|
| 345 |   frmSignonDialog: TfrmSignonDialog;
 | 
|---|
| 346 |   OldHandle: THandle;
 | 
|---|
| 347 |   FFontValue: TFont;
 | 
|---|
| 348 | begin
 | 
|---|
| 349 |   FFontValue := TFont.Create;
 | 
|---|
| 350 |   OldHandle := GetForegroundWindow;
 | 
|---|
| 351 |   try
 | 
|---|
| 352 |     FFontValue.Name := InitialValues.Font.Name;
 | 
|---|
| 353 |     FFontValue.Size := InitialValues.Font.Size;
 | 
|---|
| 354 |     FFontValue.Style := InitialValues.Font.Style;
 | 
|---|
| 355 |     FFontValue.Color := InitialValues.Font.Color;
 | 
|---|
| 356 |     frmSignonDialog := TfrmSignonDialog.Create(Application);
 | 
|---|
| 357 |     frmSignonDialog.Label1.Caption := 'Do you want to use the Default Font face and size?';
 | 
|---|
| 358 |   //  ShowApplicationAndFocusOK(Application);
 | 
|---|
| 359 | 
 | 
|---|
| 360 |     SetForegroundWindow(frmSignonDialog.Handle);
 | 
|---|
| 361 |     if frmSignonDialog.ShowModal = mrOK then
 | 
|---|
| 362 |       FFontValue := SignonDefaults.Font
 | 
|---|
| 363 |     else
 | 
|---|
| 364 |     begin
 | 
|---|
| 365 |       // initialize font to current values
 | 
|---|
| 366 |       frmSignonConfig.FontDialog1.Font.Color := InitialValues.Font.Color;
 | 
|---|
| 367 |       frmSignonConfig.FontDialog1.Font.Name := InitialValues.Font.Name;
 | 
|---|
| 368 |       frmSignonConfig.FontDialog1.Font.Size := InitialValues.Font.Size;
 | 
|---|
| 369 |       frmSignonConfig.FontDialog1.Font.Style := InitialValues.Font.Style;
 | 
|---|
| 370 |       ShowApplicationAndFocusOK(Application);
 | 
|---|
| 371 |       if IsSharedBroker then
 | 
|---|
| 372 |         frmSignonConfig.WindowState := wsMinimized;
 | 
|---|
| 373 |       if frmSignonConfig.FontDialog1.Execute then
 | 
|---|
| 374 |         FFontValue := frmSignonConfig.FontDialog1.Font;
 | 
|---|
| 375 |       frmSignonConfig.WindowState := wsNormal;
 | 
|---|
| 376 |     end;
 | 
|---|
| 377 |     FIntroFontValue := FFontValue.Name + U + IntToStr(FFontValue.Size);
 | 
|---|
| 378 |     FIntroFontStyles := StoreFontStyle(FFontValue.Style);
 | 
|---|
| 379 |     FIntroTextColor := FFontValue.Color;
 | 
|---|
| 380 |   finally
 | 
|---|
| 381 |     FFontValue.Free;
 | 
|---|
| 382 |     SetForegroundWindow(OldHandle);
 | 
|---|
| 383 |   end;
 | 
|---|
| 384 | end;
 | 
|---|
| 385 | 
 | 
|---|
| 386 | procedure TSignonConfiguration.ResetToDefaults;
 | 
|---|
| 387 | begin
 | 
|---|
| 388 |   if MessageDlg('Are you sure you want to reset all settings to their defaults?',
 | 
|---|
| 389 |                 mtWarning, [mbNo, mbYes], 0) = mrYes then
 | 
|---|
| 390 |   begin
 | 
|---|
| 391 |        // P31 remove setting of default values into registry -
 | 
|---|
| 392 |        //     remove entries from registry and use default window in app
 | 
|---|
| 393 |     DeleteRegData(HKCU, REG_SIGNON, 'SignonPos');
 | 
|---|
| 394 |     DeleteRegData(HKCU, REG_SIGNON, 'SignonSiz');
 | 
|---|
| 395 |     DeleteRegData(HKCU, REG_SIGNON, 'IntroBackClr');
 | 
|---|
| 396 |     DeleteRegData(HKCU, REG_SIGNON, 'IntroTextClr');
 | 
|---|
| 397 |     DeleteRegData(HKCU, REG_SIGNON, 'IntroTextFont');
 | 
|---|
| 398 |     DeleteRegData(HKCU, REG_SIGNON, 'IntroTextStyle');
 | 
|---|
| 399 |     strPosition := '0';
 | 
|---|
| 400 |     strSize := '0';
 | 
|---|
| 401 |     // Restore values to Defaults at Signon
 | 
|---|
| 402 |     InitialValues.SetEqual(SignonDefaults);
 | 
|---|
| 403 | 
 | 
|---|
| 404 |     UpdateWindow;
 | 
|---|
| 405 |   end;
 | 
|---|
| 406 | end;
 | 
|---|
| 407 | 
 | 
|---|
| 408 | procedure TSignonConfiguration.UserClickedOK;
 | 
|---|
| 409 | var
 | 
|---|
| 410 |   JPosition: Integer;
 | 
|---|
| 411 |   JSize: Integer;
 | 
|---|
| 412 | begin
 | 
|---|
| 413 |   JPosition := frmSignonConfig.rgrWindowPosition.ItemIndex;
 | 
|---|
| 414 |   JSize := frmSignonConfig.rgrWindowSize.ItemIndex;
 | 
|---|
| 415 | 
 | 
|---|
| 416 |   if JPosition = 0 then
 | 
|---|
| 417 |     FPosition := '0'
 | 
|---|
| 418 |   else
 | 
|---|
| 419 |     FPosition := IntToStr(JPosition)+U+IntToStr(frmSignon.Top)+U+IntToStr(frmSignon.Left);
 | 
|---|
| 420 |   strPosition := FPosition;
 | 
|---|
| 421 | 
 | 
|---|
| 422 |   if JSize = 0 then
 | 
|---|
| 423 |     FSize := '0'
 | 
|---|
| 424 |   else
 | 
|---|
| 425 |     FSize := IntToStr(JSize)+U+IntToStr(frmSignon.Width)+U+IntToStr(frmSignon.Height);
 | 
|---|
| 426 |   strSize := FSize;
 | 
|---|
| 427 | 
 | 
|---|
| 428 |   if FIntroBackColor <> InitialValues.BackColor then
 | 
|---|
| 429 |   begin
 | 
|---|
| 430 |     InitialValues.BackColor := FIntroBackColor;
 | 
|---|
| 431 |     if InitialValues.BackColor <> SignonDefaults.BackColor then
 | 
|---|
| 432 |       WriteRegData(HKCU, REG_SIGNON, 'IntroBackClr',IntToStr(FIntroBackColor))
 | 
|---|
| 433 |     else
 | 
|---|
| 434 |       DeleteRegData(HKCU, REG_SIGNON, 'IntroBackClr');
 | 
|---|
| 435 |   end;
 | 
|---|
| 436 | 
 | 
|---|
| 437 |   if FIntroTextColor <> InitialValues.TextColor then
 | 
|---|
| 438 |   begin
 | 
|---|
| 439 |     InitialValues.TextColor := FIntroTextColor;
 | 
|---|
| 440 |     if InitialValues.BackColor <> SignonDefaults.BackColor then
 | 
|---|
| 441 |       WriteRegData(HKCU, REG_SIGNON, 'IntroTextClr',IntToStr(FIntroTextColor))
 | 
|---|
| 442 |     else
 | 
|---|
| 443 |       DeleteRegData(HKCU, REG_SIGNON, 'IntroTextClr');
 | 
|---|
| 444 |   end;
 | 
|---|
| 445 | 
 | 
|---|
| 446 |   if FIntroFontValue <> InitialValues.IntroFont then
 | 
|---|
| 447 |   begin
 | 
|---|
| 448 |     InitialValues.IntroFont := FIntrofontValue;
 | 
|---|
| 449 |     if InitialValues.IntroFont <> SignonDefaults.IntroFont then
 | 
|---|
| 450 |       WriteRegData(HKCU, REG_SIGNON, 'IntroTextFont',FIntroFontValue)
 | 
|---|
| 451 |     else
 | 
|---|
| 452 |       DeleteRegData(HKCU, REG_SIGNON, 'IntroTextFont');
 | 
|---|
| 453 |   end;
 | 
|---|
| 454 | 
 | 
|---|
| 455 |   if FIntroFontStyles <> InitialValues.IntroFontStyles then
 | 
|---|
| 456 |   begin
 | 
|---|
| 457 |     InitialValues.IntroFontStyles := FIntrofontStyles;
 | 
|---|
| 458 |     if InitialValues.IntroFontStyles <> SignonDefaults.IntroFontStyles then
 | 
|---|
| 459 |       WriteRegData(HKCU, REG_SIGNON, 'IntroTextStyle',FIntroFontStyles)
 | 
|---|
| 460 |     else
 | 
|---|
| 461 |       DeleteRegData(HKCU, REG_SIGNON, 'IntroTextStyle');
 | 
|---|
| 462 |   end;
 | 
|---|
| 463 | 
 | 
|---|
| 464 |   if FPosition <> InitialValues.Position then
 | 
|---|
| 465 |   begin
 | 
|---|
| 466 |     InitialValues.Position := FPosition;
 | 
|---|
| 467 |      if InitialValues.Position <> SignonDefaults.Position then
 | 
|---|
| 468 |       WriteRegData(HKCU, REG_SIGNON, 'SignonPos',FPosition)
 | 
|---|
| 469 |     else
 | 
|---|
| 470 |       DeleteRegData(HKCU, REG_SIGNON, 'SignonPos');
 | 
|---|
| 471 |   end;
 | 
|---|
| 472 | 
 | 
|---|
| 473 |   if FSize <> InitialValues.Size then
 | 
|---|
| 474 |   begin
 | 
|---|
| 475 |     InitialValues.Size := FSize;
 | 
|---|
| 476 |     if InitialValues.Size <> SignonDefaults.Size then
 | 
|---|
| 477 |       WriteRegData(HKCU, REG_SIGNON, 'SignonSiz',FSize)
 | 
|---|
| 478 |     else
 | 
|---|
| 479 |       DeleteRegData(HKCU, REG_SIGNON, 'SignonSiz');
 | 
|---|
| 480 |   end;
 | 
|---|
| 481 | 
 | 
|---|
| 482 |   UpdateWindow;
 | 
|---|
| 483 | end;
 | 
|---|
| 484 | 
 | 
|---|
| 485 | constructor TSignonConfiguration.Create;
 | 
|---|
| 486 | begin
 | 
|---|
| 487 |   inherited;
 | 
|---|
| 488 |   if SignonDefaults = nil then
 | 
|---|
| 489 |     SignonDefaults := TSignonValues.Create;
 | 
|---|
| 490 |   if InitialValues = nil then
 | 
|---|
| 491 |     InitialValues := TSignonValues.Create;
 | 
|---|
| 492 | 
 | 
|---|
| 493 | end;
 | 
|---|
| 494 | 
 | 
|---|
| 495 | procedure TSignonConfiguration.UpdateWindow;
 | 
|---|
| 496 | begin
 | 
|---|
| 497 |   // TODO -cMM: default body inserted
 | 
|---|
| 498 |     frmSignon.IntroText.Color := InitialValues.BackColor;
 | 
|---|
| 499 |     frmSignon.IntroText.Font.Name := InitialValues.Font.Name;
 | 
|---|
| 500 |     frmSignon.IntroText.Font.Size := InitialValues.Font.Size;
 | 
|---|
| 501 |     frmSignon.IntroText.Font.Style := InitialValues.Font.Style;
 | 
|---|
| 502 |     frmSignon.IntroText.Font.Color := InitialValues.Font.Color;
 | 
|---|
| 503 |     frmSignon.Left := SignonDefaults.Left;
 | 
|---|
| 504 |     frmSignon.Top := SignonDefaults.Top;
 | 
|---|
| 505 |     frmSignon.Width := SignonDefaults.Width;
 | 
|---|
| 506 |     frmSignon.Height := SignonDefaults.Height;
 | 
|---|
| 507 | end;
 | 
|---|
| 508 | 
 | 
|---|
| 509 | procedure TSignonValues.Clear;
 | 
|---|
| 510 | begin
 | 
|---|
| 511 |     FHeight := 0;
 | 
|---|
| 512 |     FWidth := 0;
 | 
|---|
| 513 |     FTextColor := clWindowText;
 | 
|---|
| 514 |     FPosition := '';
 | 
|---|
| 515 |     FSize := '';
 | 
|---|
| 516 |     FIntroFont := '';
 | 
|---|
| 517 |     FIntroFontStyles := '';
 | 
|---|
| 518 |     FBackColor := clWindow;
 | 
|---|
| 519 |     FFont.Name := 'Courier New' ;
 | 
|---|
| 520 |     FFont.Size := 11;
 | 
|---|
| 521 |     FFont.Style := [];
 | 
|---|
| 522 | end;
 | 
|---|
| 523 | 
 | 
|---|
| 524 | constructor TSignonValues.Create;
 | 
|---|
| 525 | begin
 | 
|---|
| 526 |   inherited;
 | 
|---|
| 527 |   FFont := TFont.Create;
 | 
|---|
| 528 | end;
 | 
|---|
| 529 | 
 | 
|---|
| 530 | destructor TSignonValues.Destroy;
 | 
|---|
| 531 | begin
 | 
|---|
| 532 |   FFont.Free;
 | 
|---|
| 533 |   inherited;
 | 
|---|
| 534 | end;
 | 
|---|
| 535 | 
 | 
|---|
| 536 | procedure TSignonValues.SetSize(const Value: String);
 | 
|---|
| 537 | begin
 | 
|---|
| 538 |   FSize := Value;
 | 
|---|
| 539 |   if Value <> '0' then
 | 
|---|
| 540 |   begin
 | 
|---|
| 541 |     FWidth := StrToInt(Piece(Value,U,2));
 | 
|---|
| 542 |     FHeight := StrToInt(Piece(Value,U,3));
 | 
|---|
| 543 |   end;
 | 
|---|
| 544 | end;
 | 
|---|
| 545 | 
 | 
|---|
| 546 | procedure TSignonValues.SetPosition(const Value: String);
 | 
|---|
| 547 | begin
 | 
|---|
| 548 |   FPosition := Value;
 | 
|---|
| 549 |   if Value <> '0' then
 | 
|---|
| 550 |   begin
 | 
|---|
| 551 |     FTop := StrToInt(Piece(Value,U,2));
 | 
|---|
| 552 |     FLeft := StrToInt(Piece(Value,U,3));
 | 
|---|
| 553 |   end;
 | 
|---|
| 554 | end;
 | 
|---|
| 555 | 
 | 
|---|
| 556 | procedure TSignonValues.SetIntroFont(const Value: String);
 | 
|---|
| 557 | begin
 | 
|---|
| 558 |   FIntroFont := Value;
 | 
|---|
| 559 |   FFont.Name := Piece(Value,U,1);
 | 
|---|
| 560 |   FFont.Size := StrToInt(Piece(Value,U,2));
 | 
|---|
| 561 | end;
 | 
|---|
| 562 | 
 | 
|---|
| 563 | procedure TSignonValues.SetIntroFontStyles(const Value: String);
 | 
|---|
| 564 | begin
 | 
|---|
| 565 |   FIntroFontStyles := Value;
 | 
|---|
| 566 |   if Value <> '' then
 | 
|---|
| 567 |     FFont.Style := RestoreFontStyles(Value)
 | 
|---|
| 568 |   else
 | 
|---|
| 569 |     FFont.Style := [];
 | 
|---|
| 570 | end;
 | 
|---|
| 571 | 
 | 
|---|
| 572 | procedure TSignonValues.SetEqual(EqualToValue: TSignonValues);
 | 
|---|
| 573 | begin
 | 
|---|
| 574 |   BackColor := EqualToValue.BackColor;
 | 
|---|
| 575 |   Font.Name := EqualToValue.Font.Name;
 | 
|---|
| 576 |   Font.Size := EqualToValue.Font.Size;
 | 
|---|
| 577 |   FontStyles := EqualToValue.FontStyles;
 | 
|---|
| 578 |   Height := EqualToValue.Height;
 | 
|---|
| 579 |   IntroFont := EqualToValue.IntroFont;
 | 
|---|
| 580 |   IntroFontStyles := EqualToValue.IntroFontStyles;
 | 
|---|
| 581 |   Left := EqualToValue.Left;
 | 
|---|
| 582 |   Position := EqualToValue.Position;
 | 
|---|
| 583 |   Size := EqualToValue.Size;
 | 
|---|
| 584 |   TextColor := EqualToValue.TextColor;
 | 
|---|
| 585 |   Top := EqualToValue.Top;
 | 
|---|
| 586 |   Width := EqualToValue.Width;
 | 
|---|
| 587 | end;
 | 
|---|
| 588 | 
 | 
|---|
| 589 | procedure TSignonValues.SetFont(Value: TFont);
 | 
|---|
| 590 | begin
 | 
|---|
| 591 |   FFont := Value;
 | 
|---|
| 592 |   FIntroFont := Value.Name+U+IntToStr(Value.Size);
 | 
|---|
| 593 |   FIntroFontStyles := StoreFontStyle(FFont.Style)
 | 
|---|
| 594 | end;
 | 
|---|
| 595 | 
 | 
|---|
| 596 | procedure TSignonValues.SetTextColor(Value: LongInt);
 | 
|---|
| 597 | begin
 | 
|---|
| 598 |   FTextColor := Value;
 | 
|---|
| 599 |   FFont.Color := Value;
 | 
|---|
| 600 | end;
 | 
|---|
| 601 | 
 | 
|---|
| 602 | end.
 | 
|---|