home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 October / PCWorld_2000-10_cd2.bin / Borland / interbase / IBConsole_src.ZIP / ibconsole / frmuServerRegister.pas < prev    next >
Pascal/Delphi Source File  |  2000-07-24  |  13KB  |  399 lines

  1. {
  2.  * The contents of this file are subject to the InterBase Public License
  3.  * Version 1.0 (the "License"); you may not use this file except in
  4.  * compliance with the License.
  5.  * 
  6.  * You may obtain a copy of the License at http://www.Inprise.com/IPL.html.
  7.  * 
  8.  * Software distributed under the License is distributed on an "AS IS"
  9.  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
  10.  * the License for the specific language governing rights and limitations
  11.  * under the License.  The Original Code was created by Inprise
  12.  * Corporation and its predecessors.
  13.  * 
  14.  * Portions created by Inprise Corporation are Copyright (C) Inprise
  15.  * Corporation. All Rights Reserved.
  16.  * 
  17.  * Contributor(s): ______________________________________.
  18. }
  19.  
  20. {****************************************************************
  21. *
  22. *  f r m u S e r v e r R e g i s t e r
  23. *
  24. ****************************************************************
  25. *  Author: The Client Server Factory Inc.
  26. *  Date:   March 1, 1999
  27. *
  28. *  Description:  This unit provides an interface for selecting/
  29. *                registering a server
  30. *
  31. *****************************************************************
  32. * Revisions:
  33. *
  34. *****************************************************************}
  35.  
  36. unit frmuServerRegister;
  37.  
  38. interface
  39.  
  40. uses
  41.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  42.   StdCtrls, ExtCtrls, IBServices, frmuDlgClass;
  43.  
  44. type
  45.   TfrmServerRegister = class(TDialog)
  46.     gbServerInfo: TGroupBox;
  47.     lblServerName: TLabel;
  48.     lblProtocol: TLabel;
  49.     lblServerAlias: TLabel;
  50.     Label1: TLabel;
  51.     cbProtocol: TComboBox;
  52.     edtServerName: TEdit;
  53.     rbLocalServer: TRadioButton;
  54.     rbRemoteServer: TRadioButton;
  55.     edtServerAlias: TEdit;
  56.     chkSaveAlias: TCheckBox;
  57.     edtDescription: TEdit;
  58.     gbLoginInfo: TGroupBox;
  59.     lblUsername: TLabel;
  60.     lblPassword: TLabel;
  61.     edtUsername: TEdit;
  62.     edtPassword: TEdit;
  63.     btnOK: TButton;
  64.     btnCancel: TButton;
  65.     function FormHelp(Command: Word; Data: Integer;var CallHelp: Boolean): Boolean;
  66.     procedure btnCancelClick(Sender: TObject);
  67.     procedure btnOKClick(Sender: TObject);
  68.     procedure rbLocalServerClick(Sender: TObject);
  69.     procedure rbRemoteServerClick(Sender: TObject);
  70.   private
  71.     { Private declarations }
  72.     FAction: word;
  73.     function VerifyInputData(): boolean;
  74.     procedure WMNCLButtonDown( var Message: TWMNCLBUTTONDOWN ); message WM_NCLBUTTONDOWN ;
  75.   public
  76.     { Public declarations }
  77.   end;
  78.  
  79. function RegisterServer(var ServerName,ServerAlias,UserName,Password, Description: string;  var Protocol: TProtocol; const SelAction: word; var SaveAlias: boolean): integer;
  80.  
  81. implementation
  82.  
  83. uses
  84.   frmuMessage, zluGlobal, zluContextHelp, zluUtility;
  85.  
  86. {$R *.DFM}
  87.  
  88.  
  89. {****************************************************************
  90. *
  91. *  R e g i s t e r S e r v e r ( )
  92. *
  93. ****************************************************************
  94. *  Author: The Client Server Factory Inc.
  95. *  Date:   March 1, 1999
  96. *
  97. *  Input:  ServerName  - The server name
  98. *          ServerAlias - The server alias
  99. *          UserName    - The username to use when connecting to
  100. *                        the server
  101. *          Password    - The password to use when connecting to
  102. *                        the server
  103. *          Protocol    - The protocol to use when connecting to
  104. *                        the server
  105. *          SelAction   - The action to perform, Register/Select
  106. *          SaveAlias   - Indicates whether or not to save the
  107. *                        alias info to the registry
  108. *
  109. *  Return: integer - Indicates the success/failure of the operation
  110. *
  111. *  Description:  Registers/Selects a server based on the action specified
  112. *                by SelAction
  113. *
  114. *****************************************************************
  115. * Revisions:
  116. *
  117. *****************************************************************}
  118. function RegisterServer(var ServerName,ServerAlias,UserName,Password, Description: string; var Protocol: TProtocol; const SelAction: word; var SaveAlias: boolean): integer;
  119. var
  120.   frmServerRegister: TfrmServerRegister;
  121. begin
  122.   frmServerRegister:= TfrmServerRegister.Create(Application);
  123.   try
  124.     with frmServerRegister do
  125.     begin
  126.       // determine which form caption to use based on the SelAction
  127.       if SelAction = SELECT_SERVER then
  128.       begin
  129.         Caption := 'Select Server and Connect';
  130.       end
  131.       else
  132.       begin
  133.         Caption := 'Register Server and Connect';
  134.       end;
  135.       FAction := SelAction;
  136.  
  137.       // if the SelAction is to select a server then disable radio buttons
  138.       if FAction = SELECT_SERVER then
  139.       begin
  140.         rbLocalServer.Enabled := false;
  141.         rbRemoteServer.Enabled := false;
  142.       end
  143.       else
  144.       begin
  145.         { if the local server is running, then check the box to register it
  146.           if the local server is not registered }
  147.         if IsIBRunning and not IsServerRegistered('Local Server') then
  148.         begin
  149.           rbLocalServer.Checked := true;
  150.           rbLocalServer.OnClick (nil);
  151.         end
  152.         else
  153.         begin
  154.           rbRemoteServer.Checked := true;
  155.           rbRemoteServer.OnClick (nil);          
  156.         end;
  157.  
  158.         if IsServerRegistered('Local Server') then
  159.           rbLocalServer.Enabled := false;
  160.       end;
  161.  
  162.       ShowModal;
  163.  
  164.       // if all fields pass validity checks
  165.       if ModalResult = mrOK then
  166.       begin
  167.         // if Local Server radio button is selected
  168.         if rbLocalServer.Checked then
  169.         begin
  170.           Protocol := Local;           // set local server properties
  171.           ServerName := 'Local Server';
  172.           ServerAlias := 'Local Server';
  173.           Description := edtDescription.Text;          
  174.         end
  175.         else                           // otherwise
  176.         begin
  177.           case cbProtocol.ItemIndex of // determine which protocol was selected
  178.             0: Protocol := TCP;
  179.             1: Protocol := NamedPipe;
  180.             2: Protocol := SPX;
  181.           end;
  182.           ServerName := edtServerName.Text;
  183.           ServerAlias := edtServerAlias.Text;
  184.           Description := edtDescription.Text;
  185.         end;
  186.         UserName := edtUsername.Text;  // set username based on user input
  187.         Password := edtPassword.Text;  // set password based on user input
  188.         SaveAlias := chkSaveAlias.Checked;
  189.         result := SUCCESS;
  190.       end
  191.       else
  192.         result := FAILURE;
  193.     end;
  194.   finally
  195.     // deallocate memory
  196.     frmServerRegister.Free;
  197.   end;
  198. end;
  199.  
  200. function TfrmServerRegister.FormHelp(Command: Word; Data: Integer;
  201.   var CallHelp: Boolean): Boolean;
  202. begin
  203.   CallHelp := False;
  204.   // call WinHelp and show Register Server topic
  205.   Result := WinHelp(WindowHandle,CONTEXT_HELP_FILE,HELP_CONTEXT,SERVER_REGISTER);
  206. end;
  207.  
  208. procedure TfrmServerRegister.btnCancelClick(Sender: TObject);
  209. begin
  210.   ModalResult := mrCancel;
  211. end;
  212.  
  213. procedure TfrmServerRegister.btnOKClick(Sender: TObject);
  214. begin
  215.   if VerifyInputData() then
  216.     ModalResult := mrOK;
  217. end;
  218.  
  219. {****************************************************************
  220. *
  221. *  r b L o c a l S e r v e r C l i c k ( )
  222. *
  223. ****************************************************************
  224. *  Author: The Client Server Factory Inc.
  225. *  Date:   March 1, 1999
  226. *
  227. *  Input:  Sender - The object initiating the event
  228. *
  229. *  Return: None
  230. *
  231. *  Description:  Enables/disables controls based on the state
  232. *                of the radio button (Checked/Uncheked)
  233. *
  234. *****************************************************************
  235. * Revisions:
  236. *
  237. *****************************************************************}
  238. procedure TfrmServerRegister.rbLocalServerClick(Sender: TObject);
  239. begin
  240.   // enable/disable controls based on which server radio button is selected
  241.   if rbLocalServer.Checked then
  242.   begin
  243.     edtServerName.text := '';
  244.     edtServerName.Enabled := false;
  245.     edtServerAlias.Enabled := false;
  246.     cbProtocol.ItemIndex := -1;
  247.     cbProtocol.Enabled := false;
  248.     edtServerName.Color := clSilver;
  249.     edtServerAlias.Color := clSilver;
  250.     cbProtocol.Color := clSilver;
  251.   end
  252.   else
  253.   begin
  254.     edtServerName.Enabled := true;
  255.     edtServerAlias.Enabled := true;
  256.     cbProtocol.Enabled := true;
  257.     edtServerName.Color := clWhite;
  258.     cbProtocol.Color := clWhite;
  259.     edtServerAlias.Color := clWhite;
  260.   end
  261. end;
  262.  
  263. {****************************************************************
  264. *
  265. *  r b R e m o t e S e r v e r C l i c k ( )
  266. *
  267. ****************************************************************
  268. *  Author: The Client Server Factory Inc.
  269. *  Date:   March 1, 1999
  270. *
  271. *  Input:  Sender - The object initiating the event
  272. *
  273. *  Return: None
  274. *
  275. *  Description:  Enables/disables controls based on the state
  276. *                of the radio button (Checked/Uncheked)
  277. *
  278. *****************************************************************
  279. * Revisions:
  280. *
  281. *****************************************************************}
  282. procedure TfrmServerRegister.rbRemoteServerClick(Sender: TObject);
  283. begin
  284.   // enable/disable controls based on which server radio button is selected
  285.   if rbRemoteServer.Checked then
  286.   begin
  287.     edtServerName.Enabled := true;
  288.     cbProtocol.Enabled := true;
  289.     edtServerAlias.Enabled := true;
  290.     edtServerName.Color := clWhite;
  291.     cbProtocol.Color := clWhite;
  292.     edtServerAlias.Color := clWhite;
  293.   end
  294.   else
  295.   begin
  296.     edtServerName.Enabled := false;
  297.     cbProtocol.Enabled := false;
  298.     edtServerAlias.Enabled := false;
  299.     edtServerName.Color := clSilver;
  300.     cbProtocol.Color := clSilver;
  301.     edtServerAlias.Color := clSilver;
  302.   end
  303. end;
  304.  
  305. {****************************************************************
  306. *
  307. *  V e r i f y I n p u t D a t a ( )
  308. *
  309. ****************************************************************
  310. *  Author: The Client Server Factory Inc.
  311. *  Date:   March 1, 1999
  312. *
  313. *  Input:  None
  314. *
  315. *  Return: Boolean - Indicates the success/failure of the operation
  316. *
  317. *  Description:  Performs some basic validation on data entered by
  318. *                the user
  319. *
  320. *****************************************************************
  321. * Revisions:
  322. *
  323. *****************************************************************}
  324. function TfrmServerRegister.VerifyInputData(): boolean;
  325. begin
  326.   result := true;
  327.  
  328.   // if the remote server radio button is selected
  329.   if rbRemoteServer.Checked then
  330.   begin
  331.     // if no servername is specified
  332.     if (edtServerName.Text = '') or (edtServerName.Text = ' ') then
  333.     begin
  334.       DisplayMsg(ERR_SERVER_NAME,'');  // show error message
  335.       edtServerName.SetFocus;          // give focus to control
  336.       result := false;
  337.       Exit;
  338.     end;
  339.  
  340.     // if no protocol is selected
  341.     if (cbProtocol.Text = '') or (cbProtocol.Text = ' ') then
  342.     begin
  343.       DisplayMsg(ERR_PROTOCOL,'');     // show error message
  344.       cbProtocol.SetFocus;             // give focus to control
  345.       result := false;
  346.       Exit;
  347.     end;
  348.  
  349.     // if no server alias is specified
  350.     if (edtServerAlias.Text = '') or (edtServerAlias.Text = ' ') then
  351.     begin
  352.       DisplayMsg(ERR_SERVER_ALIAS,'');   // show error message
  353.       edtServerAlias.SetFocus;           // give focus to control
  354.       result := false;
  355.       Exit;
  356.     end;
  357.   end;
  358.  
  359.   // if the selected action is to select a server
  360.   if FAction = SELECT_SERVER then
  361.   begin
  362.     // if no username is specified
  363.     if (edtUsername.Text = '') or (edtUsername.Text = ' ') then
  364.     begin
  365.       DisplayMsg(ERR_USERNAME,'');     // show error message
  366.       edtUsername.SetFocus;            // give focus to control
  367.       result := false;
  368.       Exit;
  369.     end;
  370.  
  371.     // if no password is specified
  372.     if (edtPassword.Text = '') or (edtPassword.Text = ' ') then
  373.     begin
  374.       DisplayMsg(ERR_PASSWORD,'');     // show error message
  375.       edtPassword.SetFocus;            // give focus to control
  376.       result := false;
  377.       Exit;
  378.     end;
  379.   end;  
  380. end;
  381.  
  382. procedure TfrmServerRegister.WMNCLButtonDown( var Message: TWMNCLButtonDown );
  383. var
  384.   ScreenPt: TPoint;
  385.   ClientPt: TPoint;
  386. begin
  387.   ScreenPt.X := Message.XCursor;
  388.   ScreenPt.Y := Message.YCursor;
  389.   ClientPt := ScreenToClient( ScreenPt );
  390.   if( ClientPt.X > Width-45 )and (ClientPt.X < Width-29) then
  391.    begin
  392.     WinHelp(WindowHandle,CONTEXT_HELP_FILE,HELP_CONTEXT,SERVER_REGISTER);
  393.     Message.Result := 0;
  394.   end else
  395.    inherited;
  396. end;
  397.  
  398. end.
  399.