XPDUnitSetup.pas
上传用户:yjb1804
上传日期:2021-01-30
资源大小:3105k
文件大小:19k
源码类别:

Email服务器

开发平台:

Delphi

  1. unit XPDUnitSetup;
  2. {
  3.  $Source: /cvsroot/dunit/dunit/Contrib/DUnitWizard/Source/DelphiExperts/DUnitProject/XPDUnitSetup.pas,v $
  4.  $Revision: 1.2 $
  5.  $Date: 2004/05/03 15:07:16 $
  6.  Last amended by $Author: pvspain $
  7.  $State: Exp $
  8.  TXPDUnitSetupForm:
  9.  Copyright (c) 2003 by The Excellent Programming Company Pty Ltd
  10.  (Australia) (ABN 27 005 394 918). All rights reserved.
  11.  Contact Paul Spain via email: paul@xpro.com.au
  12.  This unit is free software; you can redistribute it and/or
  13.  modify it under the terms of the GNU Lesser General Public
  14.  License as published by the Free Software Foundation; either
  15.  version 2.1 of the License, or (at your option) any later version.
  16.  This unit is distributed in the hope that it will be useful,
  17.  but WITHOUT ANY WARRANTY; without even the implied warranty of
  18.  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  19.  Lesser General Public License for more details.
  20.  You should have received a copy of the GNU Lesser General Public
  21.  License along with this unit; if not, the license can be viewed at:
  22.  http://www.gnu.org/copyleft/lesser.html
  23.  or write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
  24.  Boston, MA  02111-1307  USA
  25.  }
  26. interface
  27. uses
  28.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  29.   StdCtrls, Buttons, ExtCtrls, ActnList, XPTransactIniFile, XPDUnitMacros,
  30.   XPDUnitCommon, ComCtrls;
  31. type
  32. ////////////////////////////////////////////////////////////////////////////
  33. //          TXPDUnitSetupForm declaration
  34. ////////////////////////////////////////////////////////////////////////////
  35.   TXPDUnitSetupForm = class(TForm)
  36.     Pages: TPageControl;
  37.     BehaviourPage: TTabSheet;
  38.     ActionList1: TActionList;
  39.     ApplyAction: TAction;
  40.     CancelAction: TAction;
  41.     CloseAction: TAction;
  42.     InsertMacroAction: TAction;
  43.     SelectNameAction: TAction;
  44.     RestoreDefaultsAction: TAction;
  45.     ParametersPage: TTabSheet;
  46.     ParameterTemplates: TGroupBox;
  47.     Label1: TLabel;
  48.     Label3: TLabel;
  49.     ParameterList: TListBox;
  50.     TemplateGroup: TPanel;
  51.     TemplateLabel: TLabel;
  52.     label12: TLabel;
  53.     Label2: TLabel;
  54.     ParameterTemplate: TEdit;
  55.     MacroList: TListBox;
  56.     InsertMacro: TButton;
  57.     MacroDescription: TMemo;
  58.     ParameterDescription: TMemo;
  59.     TestProject: TGroupBox;
  60.     AddToProjectGroup: TCheckBox;
  61.     Buttons: TPanel;
  62.     RestoreDefaults: TButton;
  63.     CancelChanges: TButton;
  64.     ApplyChanges: TButton;
  65.     CloseForm: TButton;
  66.     Panel1: TPanel;
  67.     NewTestModule: TGroupBox;
  68.     AddCurrentToTestProjectUses: TCheckBox;
  69.     AddCurrentToTestModuleUses: TCheckBox;
  70.     ModuleAddPublishedMethods: TCheckBox;
  71.     ModuleAddPublicMethods: TCheckBox;
  72.     ModuleAddProtectedMethods: TCheckBox;
  73.     Label4: TLabel;
  74.     Label5: TLabel;
  75.     NewTestClass: TGroupBox;
  76.     Label7: TLabel;
  77.     ClassAddPublishedMethods: TCheckBox;
  78.     ClassAddPublicMethods: TCheckBox;
  79.     ClassAddProtectedMethods: TCheckBox;
  80.     ClassAddPrivateMethods: TCheckBox;
  81.     procedure FormCreate(Sender: TObject);
  82.     procedure ApplyActionExecute(Sender: TObject);
  83.     procedure CancelActionExecute(Sender: TObject);
  84.     procedure CloseActionExecute(Sender: TObject);
  85.     procedure ParameterListClick(Sender: TObject);
  86.     procedure FormShow(Sender: TObject);
  87.     procedure FormDestroy(Sender: TObject);
  88.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  89.     procedure ApplyActionUpdate(Sender: TObject);
  90.     procedure CancelActionUpdate(Sender: TObject);
  91.     procedure AddCurrentToTestProjectUsesClick(Sender: TObject);
  92.     procedure InsertMacroActionExecute(Sender: TObject);
  93.     procedure ParameterTemplateChange(Sender: TObject);
  94.     procedure RestoreDefaultsActionExecute(Sender: TObject);
  95.     procedure MacroListClick(Sender: TObject);
  96.     procedure ParameterTemplateExit(Sender: TObject);
  97.     procedure ParameterTemplateKeyPress(Sender: TObject; var Key: Char);
  98.     procedure AddCurrentToTestModuleUsesClick(Sender: TObject);
  99.     procedure AddToProjectGroupClick(Sender: TObject);
  100.     procedure ModuleAddPublishedMethodsClick(Sender: TObject);
  101.     procedure ModuleAddPublicMethodsClick(Sender: TObject);
  102.     procedure ModuleAddProtectedMethodsClick(Sender: TObject);
  103.     procedure ClassAddPrivateMethodsClick(Sender: TObject);
  104.     procedure ClassAddProtectedMethodsClick(Sender: TObject);
  105.     procedure ClassAddPublicMethodsClick(Sender: TObject);
  106.     procedure ClassAddPublishedMethodsClick(Sender: TObject);
  107.   private
  108.     FTemplateSelStart: integer;
  109.     FTemplateSelLength: integer;
  110.     FMacros: IXPDUnitMacros;
  111.     FParameters: IXPDUnitParameters;
  112.     FSetup: TXPTransactIniFile;
  113.     FParameterTemplateEdited: boolean;
  114.     procedure LoadDisplay;
  115.   end;
  116. ///////////////////////////////////////////////////////////////////////////////
  117. //  Unit entry points
  118. ///////////////////////////////////////////////////////////////////////////////
  119. procedure ShowXPDUnitSetupForm;
  120. function CreateXPDUnitBehaviours: IXPDUnitBehaviours;
  121. implementation
  122. uses
  123.   IniFiles,                 // TIniFile
  124.   XPDUnitParameters;
  125. const
  126.   CVSID: string = '$Header: /cvsroot/dunit/dunit/Contrib/DUnitWizard/Source/DelphiExperts/DUnitProject/XPDUnitSetup.pas,v 1.2 2004/05/03 15:07:16 pvspain Exp $';
  127. {$R *.DFM}
  128. type
  129. ////////////////////////////////////////////////////////////////////////////
  130. //          IXPDUnitBehaviours implementation declaration
  131. ////////////////////////////////////////////////////////////////////////////
  132.   TBehaviours = class(TInterfacedObject, IXPDUnitBehaviours)
  133.   private
  134.     FSetup: TIniFile;
  135.   protected
  136.     function AddProjectToGroup: boolean;
  137.     function AddCurrentToTestModule: boolean;
  138.     function AddCurrentToProject: boolean;
  139.     function ModuleAddCurrentPublishedMethods: boolean;
  140.     function ModuleAddCurrentPublicMethods: boolean;
  141.     function ModuleAddCurrentProtectedMethods: boolean;
  142.     function ClassAddCurrentPublishedMethods: boolean;
  143.     function ClassAddCurrentPublicMethods: boolean;
  144.     function ClassAddCurrentProtectedMethods: boolean;
  145.     function ClassAddCurrentPrivateMethods: boolean;
  146.   public
  147.     constructor Create;
  148.     destructor Destroy; override;
  149.   end;
  150. var
  151.   LForm: TXPDUnitSetupForm;
  152. ///////////////////////////////////////////////////////////////////////////////
  153. //  Unit entry points
  154. ///////////////////////////////////////////////////////////////////////////////
  155. procedure ShowXPDUnitSetupForm;
  156. begin
  157.   // Singleton instance of form. Destroyed in finalization section
  158.   // Don't assign Owner as this form is part of a package, which can be removed
  159.   // from IDE at any time. We want to be in control of form destruction.
  160.   if not System.Assigned(LForm) then
  161.     LForm := TXPDUnitSetupForm.Create(nil);
  162.   // Non-modal form
  163.   LForm.Show;
  164. end;
  165. function CreateXPDUnitBehaviours: IXPDUnitBehaviours;
  166. begin
  167.   Result := TBehaviours.Create;
  168. end;
  169. ////////////////////////////////////////////////////////////////////////////
  170. //          TXPDUnitSetupForm implementation
  171. ////////////////////////////////////////////////////////////////////////////
  172. procedure TXPDUnitSetupForm.FormCreate(Sender: TObject);
  173. var
  174.   idx: TXPDUnitMacro;
  175.   jdx: TXPDUnitParameter;
  176. begin
  177.   FMacros := XPDUnitMacros.CreateXPDUnitMacros;
  178.   FParameters := XPDUnitParameters.CreateXPDUnitParameters;
  179.   FSetup := TXPTransactIniFile.Create(XPDUnitSetupFile);
  180.   MacroList.Clear;
  181.   // Load up macros for display.
  182.   for idx := System.Low(TXPDUnitMacro) to System.High(TXPDUnitMacro) do
  183.     MacroList.Items.Add(FMacros.Text(idx));
  184.   ParameterList.Clear;
  185.   // Load up template names for display
  186.   for jdx := System.Low(TXPDUnitParameter) to System.High(TXPDUnitParameter) do
  187.     ParameterList.Items.Add(FParameters.Identifiers(jdx));
  188. end;
  189. procedure TXPDUnitSetupForm.FormClose(Sender: TObject;
  190.   var Action: TCloseAction);
  191. const
  192.   Reload = true;
  193. begin
  194.   // This is a seldom-used form, so destroy on close.
  195.   Action := caFree;
  196.   //  We want to save current form position. We must discard any unsaved
  197.   // form changes before persisting our position.
  198.   FSetup.Rollback;
  199.   // Write out our geometry and flush to disk
  200.   FSetup.WriteInteger('SetupForm', 'Width', Width);
  201.   FSetup.WriteInteger('SetupForm', 'Height', Height);
  202.   FSetup.Commit;
  203. end;
  204. procedure TXPDUnitSetupForm.FormDestroy(Sender: TObject);
  205. begin
  206.   FSetup.Free;
  207.   // Clear local reference
  208.   LForm := nil;
  209. end;
  210. procedure TXPDUnitSetupForm.FormShow(Sender: TObject);
  211. begin
  212.   // Reload our persisted geometry
  213.   Width := FSetup.ReadInteger('SetupForm', 'Width', Width);
  214.   Height := FSetup.ReadInteger('SetupForm', 'Height', Height);
  215.   LoadDisplay;
  216. end;
  217. procedure TXPDUnitSetupForm.LoadDisplay;
  218. begin
  219.   // Setup checkboxes
  220.   AddToProjectGroup.Checked := FSetup.ReadBool(sBehaviours, iAddProjectToGroup,
  221.     dAddProjectToGroup);
  222.   AddCurrentToTestProjectUses.Checked := FSetup.ReadBool(sBehaviours,
  223.     iAddCurrentToProject, dAddCurrentToProject);
  224.   AddCurrentToTestModuleUses.Checked := FSetup.ReadBool(sBehaviours,
  225.     iAddCurrentToTestModule, dAddCurrentToTestModule);
  226.   ModuleAddPublishedMethods.Checked := FSetup.ReadBool(sBehaviours,
  227.     iModuleAddPublishedMethods, dModuleAddPublishedMethods);
  228.   ModuleAddPublicMethods.Checked := FSetup.ReadBool(sBehaviours,
  229.     iModuleAddPublicMethods, dModuleAddPublicMethods);
  230.   ModuleAddProtectedMethods.Checked := FSetup.ReadBool(sBehaviours,
  231.     iModuleAddProtectedMethods, dModuleAddProtectedMethods);
  232.   ClassAddPublishedMethods.Checked := FSetup.ReadBool(sBehaviours,
  233.     iClassAddPublishedMethods, dClassAddPublishedMethods);
  234.   ClassAddPublicMethods.Checked := FSetup.ReadBool(sBehaviours,
  235.     iClassAddPublicMethods, dClassAddPublicMethods);
  236.   ClassAddProtectedMethods.Checked := FSetup.ReadBool(sBehaviours,
  237.     iClassAddProtectedMethods, dClassAddProtectedMethods);
  238.   ClassAddPrivateMethods.Checked := FSetup.ReadBool(sBehaviours,
  239.     iClassAddPrivateMethods, dClassAddPrivateMethods);
  240.   // Select a macro
  241.   if MacroList.ItemIndex < 0 then
  242.     MacroList.ItemIndex := 0;
  243.   MacroListClick(nil);
  244.   // Select a parameter
  245.   if ParameterList.ItemIndex < 0 then
  246.     ParameterList.ItemIndex := 0;
  247.   ParameterListClick(nil);
  248.   // Reset transaction state
  249.   FSetup.Rollback;
  250. end;
  251. procedure TXPDUnitSetupForm.ApplyActionExecute(Sender: TObject);
  252. begin
  253.   // Copy current buffered values to persistent store.
  254.   FSetup.Commit;
  255. end;
  256. procedure TXPDUnitSetupForm.CancelActionExecute(Sender: TObject);
  257. begin
  258.   // Reload form from persistent store.
  259.   FSetup.Rollback;
  260.   // Refresh parameter values
  261.   LoadDisplay;
  262. end;
  263. procedure TXPDUnitSetupForm.CloseActionExecute(Sender: TObject);
  264. begin
  265.   // Close form
  266.   Close;
  267. end;
  268. procedure TXPDUnitSetupForm.ParameterListClick(Sender: TObject);
  269. const
  270.   TemplateColours: array[boolean] of TColor = (clWindow, clBtnFace);
  271. var
  272.   FixedParameter: boolean;
  273.   CurrentParameter: TXPDUnitParameter;
  274. begin
  275.   // Refresh display for selected parameter
  276.   // ParameterTemplate is not editable for fixed parameters
  277.   FixedParameter := TXPDUnitParameter(ParameterList.ItemIndex)
  278.     < System.Low(TXPDUnitVarParameter);
  279.   ParameterTemplate.ReadOnly := FixedParameter;
  280.   ParameterTemplate.Color := TemplateColours[FixedParameter];
  281.   InsertMacroAction.Enabled := not FixedParameter;
  282.   ParameterTemplate.TabStop := not FixedParameter;
  283.   if FixedParameter then
  284.     TemplateLabel.Caption := SysUtils.Format('%s &template',
  285.     [ParameterList.Items[ParameterList.ItemIndex]])
  286.   else
  287.     TemplateLabel.Caption := SysUtils.Format('Edit %s &template...',
  288.     [ParameterList.Items[ParameterList.ItemIndex]]);
  289.   ParameterTemplate.Text := FParameters.Templates(
  290.     TXPDUnitParameter(ParameterList.ItemIndex));
  291.   ParameterDescription.Lines.Text := FParameters.Descriptions(
  292.     TXPDUnitParameter(ParameterList.ItemIndex));
  293.   // Evaluate hint for currently selected parameter
  294.   if ParameterList.ItemIndex >= 0 then
  295.   begin
  296.     CurrentParameter := TXPDUnitParameter(ParameterList.ItemIndex);
  297.     FParameters.ClearValues;
  298.     FParameters.EvaluateValues;
  299.     ParameterList.Hint := SysUtils.Format('Current %s = "%s"',
  300.       [FParameters.Identifiers(CurrentParameter),
  301.       FParameters.Values[CurrentParameter]])
  302.   end
  303.   else
  304.     ParameterList.Hint := '';
  305. end;
  306. procedure TXPDUnitSetupForm.ApplyActionUpdate(Sender: TObject);
  307. begin
  308.   // Apply enabled when there are unsaved changes
  309.   ApplyAction.Enabled := FSetup.InTransaction;
  310. end;
  311. procedure TXPDUnitSetupForm.CancelActionUpdate(Sender: TObject);
  312. begin
  313.   // Cancel enabled when there are unsaved changes
  314.   CancelAction.Enabled := FSetup.InTransaction;
  315. end;
  316. procedure TXPDUnitSetupForm.AddCurrentToTestModuleUsesClick(Sender: TObject);
  317. begin
  318.   FSetup.WriteBool(sBehaviours, iAddCurrentToTestModule,
  319.     AddCurrentToTestModuleUses.Checked);
  320. end;
  321. procedure TXPDUnitSetupForm.AddCurrentToTestProjectUsesClick(
  322.   Sender: TObject);
  323. begin
  324.   FSetup.WriteBool(sBehaviours, iAddCurrentToProject,
  325.     AddCurrentToTestProjectUses.Checked);
  326. end;
  327. procedure TXPDUnitSetupForm.AddToProjectGroupClick(Sender: TObject);
  328. begin
  329.   FSetup.WriteBool(sBehaviours, iAddProjectToGroup,
  330.     AddToProjectGroup.Checked);
  331. end;
  332. procedure TXPDUnitSetupForm.ModuleAddPublishedMethodsClick(Sender: TObject);
  333. begin
  334.   FSetup.WriteBool(sBehaviours, iModuleAddPublishedMethods,
  335.     ModuleAddPublishedMethods.Checked);
  336. end;
  337. procedure TXPDUnitSetupForm.ModuleAddPublicMethodsClick(Sender: TObject);
  338. begin
  339.   FSetup.WriteBool(sBehaviours, iModuleAddPublicMethods,
  340.     ModuleAddPublicMethods.Checked);
  341. end;
  342. procedure TXPDUnitSetupForm.ModuleAddProtectedMethodsClick(Sender: TObject);
  343. begin
  344.   FSetup.WriteBool(sBehaviours, iModuleAddProtectedMethods,
  345.     ModuleAddProtectedMethods.Checked);
  346. end;
  347. procedure TXPDUnitSetupForm.ClassAddPublishedMethodsClick(Sender: TObject);
  348. begin
  349.   FSetup.WriteBool(sBehaviours, iClassAddPublishedMethods,
  350.     ClassAddPublishedMethods.Checked);
  351. end;
  352. procedure TXPDUnitSetupForm.ClassAddPublicMethodsClick(Sender: TObject);
  353. begin
  354.   FSetup.WriteBool(sBehaviours, iClassAddPublicMethods,
  355.     ClassAddPublicMethods.Checked);
  356. end;
  357. procedure TXPDUnitSetupForm.ClassAddProtectedMethodsClick(Sender: TObject);
  358. begin
  359.   FSetup.WriteBool(sBehaviours, iClassAddProtectedMethods,
  360.     ClassAddProtectedMethods.Checked);
  361. end;
  362. procedure TXPDUnitSetupForm.ClassAddPrivateMethodsClick(Sender: TObject);
  363. begin
  364.   FSetup.WriteBool(sBehaviours, iClassAddPrivateMethods,
  365.     ClassAddPrivateMethods.Checked);
  366. end;
  367. procedure TXPDUnitSetupForm.InsertMacroActionExecute(Sender: TObject);
  368. begin
  369.   // Focus ParameterTemplate edit
  370.   ActiveControl := ParameterTemplate;
  371.   // Insert text for selected macro into current selection or cursor position
  372.   // in ParameterTemplate control.
  373.   ParameterTemplate.SelStart := FTemplateSelStart;
  374.   ParameterTemplate.SelLength := FTemplateSelLength;
  375.   // Setup for TemplateChange event on setting ParameterTemplate.SelText
  376.   FParameterTemplateEdited := true;
  377.   ParameterTemplate.SelText := FMacros.Text(TXPDUnitMacro(MacroList.ItemIndex));
  378.   // If the selected macro is a macro function, then move edit cursor to
  379.   // between function parentheses
  380.   if TXPDUnitMacro(MacroList.ItemIndex) >= System.Low(TXPDUnitMethodMacro) then
  381.     ParameterTemplate.SelStart := ParameterTemplate.SelStart - 1;
  382. end;
  383. procedure TXPDUnitSetupForm.ParameterTemplateKeyPress(Sender: TObject;
  384.   var Key: Char);
  385. begin
  386.   FParameterTemplateEdited := not ParameterTemplate.ReadOnly;
  387. end;
  388. procedure TXPDUnitSetupForm.ParameterTemplateChange(Sender: TObject);
  389. begin
  390.   if FParameterTemplateEdited then
  391.   begin
  392.     // Buffer current trimmed ParameterTemplate content
  393.     FSetup.WriteString('Templates',
  394.       ParameterList.Items[ParameterList.ItemIndex],
  395.       SysUtils.Trim(ParameterTemplate.Text));
  396.     // Clear flag for next TemplateKeyPress() event
  397.     FParameterTemplateEdited := false;
  398.   end;
  399. end;
  400. procedure TXPDUnitSetupForm.ParameterTemplateExit(Sender: TObject);
  401. begin
  402.   // Cache current cursor position and selection for potential macro insertion.
  403.   FTemplateSelStart := ParameterTemplate.SelStart;
  404.   FTemplateSelLength := ParameterTemplate.SelLength;
  405. end;
  406. procedure TXPDUnitSetupForm.RestoreDefaultsActionExecute(Sender: TObject);
  407. begin
  408.   // Clear current settings
  409.   FSetup.RestoreDefaults;
  410.   // Load defaults
  411.   LoadDisplay;
  412. end;
  413. procedure TXPDUnitSetupForm.MacroListClick(Sender: TObject);
  414. begin
  415.   // Set macro description
  416.   MacroDescription.Lines.Text := FMacros.Descriptions(
  417.     TXPDUnitMacro(MacroList.ItemIndex));
  418. end;
  419. ////////////////////////////////////////////////////////////////////////////
  420. //          IXPDUnitBehaviours implementation
  421. ////////////////////////////////////////////////////////////////////////////
  422. constructor TBehaviours.Create;
  423. begin
  424.   inherited Create;
  425.   FSetup := TIniFile.Create(XPDUnitSetupFile);
  426. end;
  427. destructor TBehaviours.Destroy;
  428. begin
  429.   FSetup.Free;
  430.   inherited;
  431. end;
  432. function TBehaviours.AddProjectToGroup: boolean;
  433. begin
  434.   Result := FSetup.ReadBool(sBehaviours, iAddProjectToGroup,
  435.     dAddProjectToGroup);
  436. end;
  437. function TBehaviours.AddCurrentToProject: boolean;
  438. begin
  439.   Result := FSetup.ReadBool(sBehaviours, iAddCurrentToProject,
  440.     dAddCurrentToProject);
  441. end;
  442. function TBehaviours.AddCurrentToTestModule: boolean;
  443. begin
  444.   Result := FSetup.ReadBool(sBehaviours, iAddCurrentToTestModule,
  445.     dAddCurrentToTestModule);
  446. end;
  447. function TBehaviours.ModuleAddCurrentPublishedMethods: boolean;
  448. begin
  449.   Result := FSetup.ReadBool(sBehaviours, iModuleAddPublishedMethods,
  450.     dModuleAddPublishedMethods);
  451. end;
  452. function TBehaviours.ModuleAddCurrentPublicMethods: boolean;
  453. begin
  454.   Result := FSetup.ReadBool(sBehaviours, iModuleAddPublicMethods,
  455.     dModuleAddPublicMethods);
  456. end;
  457. function TBehaviours.ModuleAddCurrentProtectedMethods: boolean;
  458. begin
  459.   Result := FSetup.ReadBool(sBehaviours, iModuleAddProtectedMethods,
  460.     dModuleAddProtectedMethods);
  461. end;
  462. function TBehaviours.ClassAddCurrentPublishedMethods: boolean;
  463. begin
  464.   Result := FSetup.ReadBool(sBehaviours, iClassAddPublishedMethods,
  465.     dClassAddPublishedMethods);
  466. end;
  467. function TBehaviours.ClassAddCurrentPublicMethods: boolean;
  468. begin
  469.   Result := FSetup.ReadBool(sBehaviours, iClassAddPublicMethods,
  470.     dClassAddPublicMethods);
  471. end;
  472. function TBehaviours.ClassAddCurrentProtectedMethods: boolean;
  473. begin
  474.   Result := FSetup.ReadBool(sBehaviours, iClassAddProtectedMethods,
  475.     dClassAddProtectedMethods);
  476. end;
  477. function TBehaviours.ClassAddCurrentPrivateMethods: boolean;
  478. begin
  479.   Result := FSetup.ReadBool(sBehaviours, iClassAddPrivateMethods,
  480.     dClassAddPrivateMethods);
  481. end;
  482. initialization
  483. finalization
  484.   LForm.Free;
  485. end.