home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 October / PCWorld_2000-10_cd2.bin / Borland / interbase / IBConsole_src.ZIP / ibconsole / frmuPreferences.pas < prev    next >
Pascal/Delphi Source File  |  2000-07-24  |  11KB  |  355 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 P r e f e r e n c e s
  23. *
  24. ****************************************************************
  25. *  Author: The Client Server Factory Inc.
  26. *  Date:   March 1, 1999
  27. *
  28. *  Description:  This unit provides an interface for changing
  29. *                application properties
  30. *
  31. *****************************************************************
  32. * Revisions:
  33. *
  34. *****************************************************************}
  35. unit frmuPreferences;
  36.  
  37. interface
  38.  
  39. uses
  40.   SysUtils, Forms, ExtCtrls, StdCtrls, Classes, Controls, ComCtrls, Grids,
  41.   Graphics, Windows, Dialogs, Registry, Messages, ShlObj, frmuDlgClass;
  42.  
  43. type
  44.   TfrmPreferences = class(TDialog)
  45.     btnApplTempDir: TButton;
  46.     btnSelExternalEditorFilename: TButton;
  47.     chkUseDefaultEditor: TCheckBox;
  48.     edtApplTempDir: TEdit;
  49.     edtExternalEditorFilename: TEdit;
  50.     edtExternalEditorParams: TEdit;
  51.     gbEditorSettings: TGroupBox;
  52.     lblEditorFilename: TLabel;
  53.     lblEditorParameters: TLabel;
  54.     lblApplTempDir: TLabel;
  55.     pgcMain: TPageControl;
  56.     TabGeneral: TTabSheet;
  57.     btnApply: TButton;
  58.     btnOK: TButton;
  59.     procedure FormCreate(Sender: TObject);
  60.     procedure btnOKClick(Sender: TObject);
  61.     procedure btnApplyClick(Sender: TObject);
  62.     procedure btnSelExternalEditorFilenameClick(Sender: TObject);
  63.     procedure chkUseDefaultEditorClick(Sender: TObject);
  64.     procedure edtApplTempDirExit(Sender: TObject);
  65.     procedure btnApplTempDirClick(Sender: TObject);
  66.     procedure edtDataChange(Sender: TObject);
  67.     procedure FormShow(Sender: TObject);
  68.     procedure edtExternalEditorFilenameExit(Sender: TObject);
  69.   private
  70.     { Private declarations }
  71.     function VerifyInputData(): boolean;
  72.     procedure SetEditorEnabled(const enable: boolean);
  73.     procedure WMNCLButtonDown( var Message: TWMNCLBUTTONDOWN ); message WM_NCLBUTTONDOWN ;
  74.   public
  75.     { Public declarations }
  76.   end;
  77.  
  78. function EditPreferences(): integer;
  79.  
  80. implementation
  81.  
  82. uses
  83.   zluGlobal,frmuMessage, zluContextHelp, zluUtility;
  84.  
  85. {$R *.DFM}
  86.  
  87.  
  88. {****************************************************************
  89. *
  90. *  F o r m C r e a t e ( )
  91. *
  92. ****************************************************************
  93. *  Author: The Client Server Factory Inc.
  94. *  Date:   March 1, 1999
  95. *
  96. *  Input:  Sender - The object that initiated the event
  97. *
  98. *  Return: None
  99. *
  100. *  Description: This procedure initializes some of the form's
  101. *               components during the create event of the form
  102. *
  103. *****************************************************************
  104. * Revisions:
  105. *
  106. *****************************************************************}
  107. procedure TfrmPreferences.FormCreate(Sender: TObject);
  108. begin
  109.   inherited;
  110. {  edtApplTempDir.Text := gAppSettings[TEMP_PATH].Setting;
  111.   chkUseDefaultEditor.checked := gAppSettings[USE_DEFAULT_EDITOR].Setting;
  112.   edtExternalEditorFilename.Text := gAppSettings[EXT_EDITOR_FILENAME].Setting;
  113.   edtExternalEditorParams.Text := gAppSettings[EXT_EDITOR_PARAMS].Setting;
  114. }
  115. end;
  116.  
  117. procedure TfrmPreferences.btnOKClick(Sender: TObject);
  118. begin
  119.   if btnApply.Enabled then
  120.     btnApplyClick (Sender);
  121.   ModalResult := mrOK;
  122. end;
  123.  
  124. procedure TfrmPreferences.btnApplyClick(Sender: TObject);
  125. begin
  126. {
  127.   if VerifyInputData() then begin
  128.     gAppSettings[TEMP_PATH].Setting := edtApplTempDir.Text;
  129.     gAppSettings[USE_DEFAULT_EDITOR].Setting := chkUseDefaultEditor.Checked;
  130.     gAppSettings[EXT_EDITOR_FILENAME].Setting := edtExternalEditorFilename.Text;
  131.     gAppSettings[EXT_EDITOR_PARAMS].Setting := edtExternalEditorParams.Text;
  132.     btnApply.Enabled := false;
  133.   end;
  134. }
  135. end;
  136.  
  137. {****************************************************************
  138. *
  139. *  b t n S e l E d i t o r F i l e n a m e C l i c k ( )
  140. *
  141. ****************************************************************
  142. *  Author: The Client Server Factory Inc.
  143. *  Date:   March 1, 1999
  144. *
  145. *  Input:  Sender - The object that initiated the event
  146. *
  147. *  Return: None
  148. *
  149. *  Description: This procedure displays a default windows file open
  150. *               dialog box that prompts the user to select a file.
  151. *
  152. *****************************************************************
  153. * Revisions:
  154. *
  155. *****************************************************************}
  156. procedure TfrmPreferences.btnSelExternalEditorFilenameClick(Sender: TObject);
  157. var
  158.   lOpenDialog: TOpenDialog;
  159. begin
  160.   lOpenDialog := nil;
  161.   try
  162.   begin
  163.     lOpenDialog := TOpenDialog.Create(self);
  164.     lOpenDialog.Title := 'Select Application';
  165.     lOpenDialog.DefaultExt := 'exe';
  166.     lOpenDialog.Filter := 'Application File (*.exe)|*.EXE|All files (*.*)|*.*';
  167.     lOpenDialog.Options := [ofHideReadOnly,ofNoNetworkButton,ofEnableSizing];
  168.     if lOpenDialog.Execute then
  169.     begin
  170.       edtExternalEditorFilename.Text := lOpenDialog.FileName;
  171.     end;
  172.   end
  173.   finally
  174.     lOpenDialog.free;
  175.   end;
  176. end;
  177.  
  178.  
  179. {****************************************************************
  180. *
  181. *  V e r i f y I n p u t D a t a ( )
  182. *
  183. ****************************************************************
  184. *  Author: The Client Server Factory Inc.
  185. *  Date:   March 1, 1999
  186. *
  187. *  Input:  None
  188. *
  189. *  Return: boolean - This procedure performs some basic validation
  190. *          on the values entered by the user
  191. *
  192. *  Description:  Performs some basic validation on data entered by
  193. *                the user
  194. *
  195. *****************************************************************
  196. * Revisions:
  197. *
  198. *****************************************************************}
  199. function TfrmPreferences.VerifyInputData(): boolean;
  200. begin
  201.   if not chkUseDefaultEditor.Checked and
  202.      not (edtExternalEditorFilename.GetTextLen > 0) then begin
  203.      DisplayMsg (ERR_EDITOR_MISSING, '');
  204.      result := false;
  205.   end else
  206.     result := true;
  207. end;
  208.  
  209. {****************************************************************
  210. *
  211. *  E d i t P r e f e r e n c e s ( )
  212. *
  213. ****************************************************************
  214. *  Author: The Client Server Factory Inc.
  215. *  Date:   March 1, 1999
  216. *
  217. *  Input:  None
  218. *
  219. *  Return: integer - Indicates the success/failure of the operation
  220. *
  221. *  Description: This procedure is responsible for creating and displaying
  222. *               and eventually destrouing the preferences form.
  223. *
  224. *
  225. *****************************************************************
  226. * Revisions:
  227. *
  228. *****************************************************************}
  229. function EditPreferences(): integer;
  230. var
  231.   frmPreferences: TfrmPreferences;
  232. begin
  233.   frmPreferences := TfrmPreferences.Create(Application);
  234.   try
  235.     frmPreferences.ShowModal;
  236.     if frmPreferences.ModalResult = mrOK then
  237.     begin
  238.       result := SUCCESS;
  239.     end
  240.     else
  241.       result := FAILURE;
  242.   finally
  243.     frmPreferences.Free;
  244.   end;
  245. end;
  246.  
  247.  
  248. procedure TfrmPreferences.chkUseDefaultEditorClick(Sender: TObject);
  249. begin
  250.   SetEditorEnabled (not chkUseDefaultEditor.Checked);
  251. end;
  252.  
  253. procedure TfrmPreferences.edtApplTempDirExit(Sender: TObject);
  254. var
  255.   sText: string;
  256. begin
  257.   sText := edtApplTempDir.text;
  258.   if not CheckDirectory(sText) then
  259.     edtApplTempDir.SetFocus;
  260.  
  261. end;
  262.  
  263. procedure TfrmPreferences.btnApplTempDirClick(Sender: TObject);
  264. var
  265.   lBrowseInfo: TBrowseInfo;
  266.   lDirectory: pChar;
  267. begin
  268.   lDirectory := StrAlloc(MAX_PATH);
  269.   lBrowseInfo.hwndOwner := handle;
  270.   lBrowseInfo.pidlRoot := nil;
  271.   lBrowseInfo.pszDisplayName := lDirectory;
  272.   lBrowseInfo.lpszTitle := 'Select Directory';
  273.   lBrowseInfo.ulFlags := BIF_DONTGOBELOWDOMAIN or
  274.                            BIF_RETURNONLYFSDIRS;
  275.   lBrowseInfo.lpfn := nil;
  276.   lBrowseInfo.lParam := 0;
  277.   lBrowseInfo.iImage := 0;
  278.  
  279.    if SHGetPathFromIDList(SHBrowseForFolder(lBrowseInfo), lDirectory) then
  280.    begin
  281.      if lDirectory <> '' then
  282.        edtApplTempDir.Text := string(lDirectory) + '\';
  283.    end;
  284.    StrDispose(lDirectory);
  285. end;
  286.  
  287. procedure TfrmPreferences.edtDataChange(Sender: TObject);
  288. begin
  289.   btnApply.Enabled := true;
  290. end;
  291.  
  292. procedure TfrmPreferences.WMNCLButtonDown( var Message: TWMNCLButtonDown );
  293. var
  294.   ScreenPt: TPoint;
  295.   ClientPt: TPoint;
  296. begin
  297.   ScreenPt.X := Message.XCursor;
  298.   ScreenPt.Y := Message.YCursor;
  299.   ClientPt := ScreenToClient( ScreenPt );
  300.   if( ClientPt.X > Width-45 )and (ClientPt.X < Width-29) then
  301.    begin
  302.     WinHelp(WindowHandle,CONTEXT_HELP_FILE,HELP_CONTEXT,GENERAL_PREFERENCES);
  303.     Message.Result := 0;
  304.   end else
  305.    inherited;
  306. end;
  307.  
  308. procedure TfrmPreferences.FormShow(Sender: TObject);
  309. begin
  310.   btnApply.Enabled := false;
  311. end;
  312.  
  313. procedure TfrmPreferences.edtExternalEditorFilenameExit(Sender: TObject);
  314. var
  315.   buffer: String;
  316.   FileToFind: String;
  317.   length: integer;
  318.  
  319. begin
  320.   with Sender as TEdit do begin
  321.     if GetTextLen > 0 then begin
  322.       length := GetEnvironmentVariable ('PATH', nil, 0);
  323.       SetLength (buffer, length);
  324.       GetEnvironmentVariable ('PATH', PChar(buffer), length);
  325.  
  326.       FileToFind := FileSearch(Text, GetCurrentDir + ';' + buffer);
  327.       if FileToFind = '' then begin
  328.         DisplayMsg (ERR_INV_EDITOR, 'File: '+ Text + ' doesn''t exist.');
  329.         SetFocus;
  330.       end;
  331.     end;
  332.   end;
  333. end;
  334.  
  335. procedure TfrmPreferences.SetEditorEnabled(const enable: boolean);
  336. begin
  337.   if not enable then begin
  338.     edtExternalEditorFileName.Color := clBtnFace;
  339.     edtExternalEditorParams.Color := clBtnFace;
  340.   end else
  341.   begin
  342.     edtExternalEditorFileName.Color := clWindow;
  343.     edtExternalEditorParams.Color := clWindow;
  344.   end;
  345.  
  346.   edtExternalEditorFilename.Enabled := enable;
  347.   lblEditorFileName.Enabled := enable;
  348.   btnSelExternalEditorFilename.Enabled := enable;
  349.   lblEditorParameters.Enabled := enable;
  350.   edtExternalEditorParams.Enabled := enable;
  351.   btnApply.Enabled := true;
  352. end;
  353.  
  354. end.
  355.