home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 September / Chip_2001-09_cd1.bin / zkuste / delphi / kolekce / d56 / RMCTL.ZIP / rmToolWinFormExpt.pas < prev    next >
Pascal/Delphi Source File  |  2001-06-22  |  11KB  |  414 lines

  1. {
  2. ================================================================================
  3. Copyright (C) 1997-2001 Mills Enterprise
  4.  
  5. Unit       : rmToolWinFormExpt
  6. Purpose    : Custom Form Expert, used in controlling the TrmToolWinForm and
  7.              decendants....
  8. Components : TrmToolWinFormExpert
  9. Date       : 06-15-1999
  10. Author     : Ryan J. Mills
  11. Version    : 1.80
  12. Note       : This unit was originally apart of Sergey Orlik's Custom Forms Pack
  13.              I've included it here with modifications for the rmToolWinForm.
  14.              I've also left the original file header in to help explain
  15.              more about it.  
  16. ================================================================================
  17. }
  18.  
  19. {*******************************************************}
  20. {                                                       }
  21. {       Delphi Visual Component Library                 }
  22. {       Custom Forms Pack (CFPack)                      }
  23. {                                                       }
  24. {       Copyright (c) 1997-99 Sergey Orlik              }
  25. {                                                       }
  26. {     Written by:                                       }
  27. {       Sergey Orlik                                    }
  28. {       product manager                                 }
  29. {       Russia, C.I.S. and Baltic States (former USSR)  }
  30. {       Inprise Moscow office                           }
  31. {       Internet:  sorlik@inprise.ru                    }
  32. {       www.geocities.com/SiliconValley/Way/9006/       }
  33. {                                                       }
  34. {*******************************************************}
  35. {$I Sergey_Orlik_DEF.INC}
  36. {$Warnings OFF}
  37.  
  38. unit rmToolWinFormExpt;
  39.  
  40. interface
  41. uses
  42.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  43.   ExptIntf, ToolIntf, EditIntf, VirtIntf;
  44.  
  45. type
  46.   { TrmToolWinFormExpert }
  47.  
  48.   TrmToolWinFormExpert = class(TIExpert)
  49.   private
  50.     procedure RunExpert(ToolServices: TIToolServices);
  51.   public
  52.     function GetName: string; override;
  53.     function GetAuthor: string; override;
  54.     function GetComment: string; override;
  55.     function GetPage: string; override;
  56.     function GetGlyph: HICON; override;
  57.     function GetStyle: TExpertStyle; override;
  58.     function GetState: TExpertState; override;
  59.     function GetIDString: string; override;
  60.     function GetMenuText: string; override;
  61.     procedure Execute; override;
  62.   end;
  63.  
  64. implementation
  65.  
  66. uses rmToolWin;
  67.  
  68. const
  69.   CRLF = #13#10;
  70.   CRLF2 = #13#10#13#10;
  71.   DefaultModuleFlags = [cmShowSource, cmShowForm, cmMarkModified, cmUnNamed];
  72.  
  73. resourcestring
  74.   sCustFormExpertAuthor = 'Ryan J. Mills';
  75.   sCustFormExpertName   = 'rmToolWin Form';
  76.   sCustFormExpertDesc   = 'Create a new TrmToolWinForm';
  77.  
  78. { TrmToolWinFormModuleCreator }
  79.  
  80. type
  81. {$IFDEF VER_CB}
  82.   TrmToolWinFormModuleCreator = class(TIModuleCreatorEx)
  83. {$ELSE}
  84.   TrmToolWinFormModuleCreator = class(TIModuleCreator)
  85. {$ENDIF}
  86.   private
  87.     FAncestorIdent : string;
  88.     FAncestorClass : TClass;
  89. //    FNewFormOption : TNewFormOption;
  90.     FFormIdent : string;
  91.     FUnitIdent : string;
  92.     FFileName  : string;
  93.   public
  94.     function Existing: Boolean; override;
  95.     function GetFileName: string; override;
  96.     function GetFileSystem: string; override;
  97.     function GetFormName: string; override;
  98.     function GetAncestorName: string; override;
  99.   {$IFNDEF VER100}
  100.     {$IFDEF VER_CB}
  101.     function GetIntfName: string; override;
  102.     function NewIntfSource(const UnitIdent, FormIdent,
  103.       AncestorIdent: string): string; override;
  104.     {$ENDIF}
  105.     function NewModuleSource(const UnitIdent, FormIdent,
  106.       AncestorIdent: string): string; override;
  107.   {$ELSE}
  108.     function NewModuleSource(UnitIdent, FormIdent,
  109.       AncestorIdent: string): string; override;
  110.   {$ENDIF}
  111.     procedure FormCreated(Form: TIFormInterface); override;
  112.   end;
  113.  
  114. function TrmToolWinFormModuleCreator.Existing:boolean;
  115. begin
  116.   Result:=False
  117. end;
  118.  
  119. function TrmToolWinFormModuleCreator.GetFileName:string;
  120. begin
  121.   Result:=FFileName; //'';
  122. end;
  123.  
  124. function TrmToolWinFormModuleCreator.GetFileSystem:string;
  125. begin
  126.   Result:='';
  127. end;
  128.  
  129. function TrmToolWinFormModuleCreator.GetFormName:string;
  130. begin
  131.   Result:=FFormIdent;
  132. end;
  133.  
  134. function TrmToolWinFormModuleCreator.GetAncestorName:string;
  135. begin
  136.   Result:=FAncestorIdent;
  137. end;
  138.  
  139. {$IFDEF VER_CB}
  140. function UnitName2Namespace(const Value:string):string;
  141. var
  142.   s1,s2 : string;
  143. begin
  144.   s1:=Value[1];
  145.   s2:=LowerCase(Value);
  146.   System.Delete(s2,1,1);
  147.   Result:=UpperCase(s1)+s2;
  148. end;
  149.  
  150. function TrmToolWinFormModuleCreator.GetIntfName: string;
  151. begin
  152.   Result:='';
  153. end;
  154.  
  155. function TrmToolWinFormModuleCreator.NewIntfSource(const UnitIdent, FormIdent,
  156.       AncestorIdent: string): string;
  157. var
  158.   s : string;
  159. begin
  160.   s:=s+'//---------------------------------------------------------------------------'+
  161.       CRLF+
  162.       '#ifndef '+UnitIdent+'H'+CRLF+
  163.       '#define '+UnitIdent+'H'+CRLF+
  164.       '//---------------------------------------------------------------------------'+
  165.       CRLF+
  166.       '#include <Classes.hpp>'+CRLF+
  167.       '#include <Controls.hpp>'+CRLF+
  168.       '#include <StdCtrls.hpp>'+CRLF+
  169.       '#include <Forms.hpp>'+CRLF;
  170.  
  171.   if (AncestorIdent<>'Form') and  (AncestorIdent<>'DataModule') then
  172.     s:=s+
  173.      '#include "'+GetCustomFormUnit(FAncestorClass.ClassName)+'.h"'+CRLF;
  174.  
  175.   s:=s+'//---------------------------------------------------------------------------'+
  176.       CRLF+
  177.       'class T'+FormIdent+' : public '+FAncestorClass.ClassName+CRLF+
  178.       '{'+CRLF+
  179.       '__published:'+CRLF+
  180.       'private:'+CRLF+
  181.       'protected:'+CRLF+
  182.       'public:'+CRLF+
  183.       '        __fastcall T'+FormIdent+'(TComponent* Owner);'+CRLF+
  184.       '};'+CRLF;
  185.  
  186.   s:=s+
  187.      '//---------------------------------------------------------------------------'+
  188.      CRLF+
  189.      'extern PACKAGE T'+FormIdent+' *'+FormIdent+';'+CRLF;
  190.  
  191.   s:=s+
  192.      '//---------------------------------------------------------------------------'+
  193.      CRLF+
  194.      '#endif';
  195.   Result:=s;
  196. end;
  197.  
  198. function TrmToolWinFormModuleCreator.NewModuleSource(const UnitIdent, FormIdent,
  199.       AncestorIdent: string): string;
  200. var
  201.   s : string;
  202. begin
  203.  
  204.   s:='//---------------------------------------------------------------------------'+
  205.      CRLF+
  206.      '#include <vcl.h>'+CRLF;
  207.  
  208.   s:=s+
  209.      '#pragma hdrstop'+CRLF2+
  210.  
  211.      '#include "'+UnitIdent+'.h"'+CRLF+
  212.      '//---------------------------------------------------------------------------'+
  213.      CRLF+
  214.      '#pragma package(smart_init)'+CRLF;
  215.  
  216.   if (AncestorIdent<>'Form') and  (AncestorIdent<>'DataModule') then
  217.     s:=s+
  218.      '#pragma link "'+GetCustomFormUnit(FAncestorClass.ClassName)+'"'+CRLF;
  219.  
  220.   s:=s+
  221.    '#pragma resource "*.dfm"'+CRLF+
  222.    'T'+FormIdent+' *'+FormIdent+';'+CRLF;
  223.  
  224.   s:=s+
  225.      '//---------------------------------------------------------------------------'+
  226.      CRLF+
  227.      '__fastcall T'+FormIdent+'::T'+FormIdent+'(TComponent* Owner)'+CRLF+
  228.      '        : '+FAncestorClass.ClassName+'(Owner)'+CRLF+
  229.      '{'+CRLF+
  230.      '}'+CRLF+
  231.      '//---------------------------------------------------------------------------'+
  232.      CRLF;
  233.  
  234.   Result:=s;
  235. end;
  236.  
  237. {$ELSE}
  238.   {$IFDEF VER100}
  239. function TrmToolWinFormModuleCreator.NewModuleSource(UnitIdent,FormIdent,AncestorIdent:string):string;
  240.   {$ELSE}
  241. function TrmToolWinFormModuleCreator.NewModuleSource(const UnitIdent,FormIdent,AncestorIdent:string):string;
  242.   {$ENDIF}
  243. var
  244.   s : string;
  245. begin
  246.   s:='unit '+FUnitIdent+';'+CRLF2+
  247.      'interface'+CRLF2+
  248.      'uses'+CRLF+
  249.      '  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs';
  250.  
  251.   if (FAncestorIdent<>'Form') and (FAncestorIdent<>'DataModule') then
  252.     s:=s+','+CRLF+
  253. //      '  '+GetCustomFormUnit(FAncestorClass.ClassName);
  254.       '  rmToolWin';
  255.       
  256.   s:=s+';'+CRLF2+
  257.     'type'+CRLF+
  258. //    '  T'+FFormIdent+' = class('+FAncestorClass.ClassName+')'+CRLF+
  259.     '  T'+FFormIdent+' = class(TrmToolWinForm)'+CRLF+
  260.     '  private'+CRLF+
  261.     '    { Private declarations }'+CRLF+
  262.     '  public'+CRLF+
  263.     '    { Public declarations }'+CRLF+
  264.     '  end;'+CRLF2;
  265.  
  266.   s:=s+
  267.     'var'+CRLF+
  268.     '  '+FFormIdent+' : T'+FFormIdent+';'+CRLF2;
  269.  
  270.   s:=s+
  271.       'implementation'+CRLF2;
  272.  
  273.   s:=s+
  274.     '{$R *.DFM}'+CRLF2;
  275.  
  276.   s:=s+
  277.       'end.';
  278.  
  279.   Result:=s;
  280. end;
  281. {$ENDIF}
  282.  
  283. procedure TrmToolWinFormModuleCreator.FormCreated(Form:TIFormInterface);
  284. begin
  285. end;
  286.  
  287. { HandleException }
  288.  
  289. procedure HandleException;
  290. begin
  291.   ToolServices.RaiseException(ReleaseException);
  292. end;
  293.  
  294. { TrmToolWinFormExpert }
  295.  
  296. function TrmToolWinFormExpert.GetName: string;
  297. begin
  298.   try
  299.     Result := sCustFormExpertName;
  300.   except
  301.     HandleException;
  302.   end;
  303. end;
  304.  
  305. function TrmToolWinFormExpert.GetComment: string;
  306. begin
  307.   try
  308.     Result := sCustFormExpertDesc;
  309.   except
  310.     HandleException;
  311.   end;
  312. end;
  313.  
  314. function TrmToolWinFormExpert.GetGlyph: HICON;
  315. begin
  316.   try
  317.     Result := LoadIcon(HInstance, 'NEWRMDOCKFORM');
  318.   except
  319.     HandleException;
  320.   end;
  321. end;
  322.  
  323. function TrmToolWinFormExpert.GetStyle: TExpertStyle;
  324. begin
  325.   try
  326.     Result := esForm;
  327.   except
  328.     HandleException;
  329.   end;
  330. end;
  331.  
  332. function TrmToolWinFormExpert.GetState: TExpertState;
  333. begin
  334.   try
  335.     Result := [esEnabled];
  336.   except
  337.     HandleException;
  338.   end;
  339. end;
  340.  
  341. function TrmToolWinFormExpert.GetIDString: string;
  342. begin
  343.   try
  344.     Result := 'MillsEnterprise.'+sCustFormExpertName;
  345.   except
  346.     HandleException;
  347.   end;
  348. end;
  349.  
  350. function TrmToolWinFormExpert.GetMenuText: string;
  351. begin
  352.    try
  353.      result := '';
  354.    except
  355.      HandleException;
  356.    end;
  357. end;
  358.  
  359. function TrmToolWinFormExpert.GetAuthor: string;
  360. begin
  361.   try
  362.     Result := sCustFormExpertAuthor;
  363.   except
  364.     HandleException;
  365.   end;
  366. end;
  367.  
  368. function TrmToolWinFormExpert.GetPage: string;
  369. begin
  370.   try
  371.     Result := 'New';
  372.   except
  373.     HandleException;
  374.   end;
  375. end;
  376.  
  377. procedure TrmToolWinFormExpert.Execute;
  378. begin
  379.   try
  380.     RunExpert(ToolServices);
  381.   except
  382.     HandleException;
  383.   end;
  384. end;
  385.  
  386. procedure TrmToolWinFormExpert.RunExpert(ToolServices: TIToolServices);
  387. var
  388.   ModuleFlags : TCreateModuleFlags;
  389.   IModuleCreator : TrmToolWinFormModuleCreator;
  390.   IModule : TIModuleInterface;
  391. begin
  392.   if ToolServices = nil then Exit;
  393.   IModuleCreator:=TrmToolWinFormModuleCreator.Create;
  394.   IModuleCreator.FAncestorIdent:='rmToolWinForm';
  395.   IModuleCreator.FAncestorClass:=TrmToolWinForm;
  396.   ToolServices.GetNewModuleAndClassName(IModuleCreator.FAncestorIdent,IModuleCreator.FUnitIdent,IModuleCreator.FFormIdent,IModuleCreator.FFileName);
  397.   ModuleFlags:=DefaultModuleFlags;
  398.   ModuleFlags:=ModuleFlags+[cmAddToProject];
  399.   try
  400. {$IFDEF VER_CB}
  401.     IModule:=ToolServices.ModuleCreateEx(IModuleCreator,ModuleFlags);
  402. {$ELSE}
  403.     IModule:=ToolServices.ModuleCreate(IModuleCreator,ModuleFlags);
  404. {$ENDIF}
  405.     IModule.Free;
  406.   finally
  407.     IModuleCreator.Free;
  408.   end;
  409. end;
  410.  
  411. end.
  412.  
  413.  
  414.