home *** CD-ROM | disk | FTP | other *** search
/ Chip 2003 January / Chip_2003-01_cd1.bin / zkuste / delphi / kolekce / d567 / FLEXCEL.ZIP / Design / UTemplateEdit.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2002-09-26  |  5.7 KB  |  223 lines

  1. unit UTemplateEdit;
  2.  
  3. interface
  4.  
  5. uses
  6.   SysUtils, Classes,
  7.   {$IFDEF WIN32}
  8.   Forms, Dialogs, StdCtrls, ActnList, ImgList, ComCtrls, FileCtrl, ExtCtrls, Controls,
  9.   {$ENDIF}
  10.   {$IFDEF LINUX}
  11.   QForms, QDialogs, QStdCtrls, QActnList, QImgList, QComCtrls, QExtCtrls, QControls,
  12.   {$ENDIF}
  13.   TemplateStore, UFlxMessages, ToolWin ;
  14.  
  15. type
  16.   TTemplateEdit = class(TForm)
  17.     ToolBar1: TToolBar;
  18.     btnOk: TToolButton;
  19.     btnCancel: TToolButton;
  20.     ImageList1: TImageList;
  21.     ImageList2: TImageList;
  22.     ImageList3: TImageList;
  23.     ActionList1: TActionList;
  24.     ActionOk: TAction;
  25.     ActionSaveAs: TAction;
  26.     ActionRefresh: TAction;
  27.     ActionAdd: TAction;
  28.     ActionDelete: TAction;
  29.     ToolButton2: TToolButton;
  30.     ToolButton3: TToolButton;
  31.     ToolButton4: TToolButton;
  32.     ToolButton5: TToolButton;
  33.     ToolButton6: TToolButton;
  34.     Files: TListView;
  35.     OpenDialog: TOpenDialog;
  36.     SaveDialog: TSaveDialog;
  37.     FormCaption: TPanel;
  38.     procedure ActionOkExecute(Sender: TObject);
  39.     procedure ActionAddExecute(Sender: TObject);
  40.     procedure ActionDeleteExecute(Sender: TObject);
  41.     procedure ActionDeleteUpdate(Sender: TObject);
  42.     procedure ActionRefreshExecute(Sender: TObject);
  43.     procedure ActionSaveAsUpdate(Sender: TObject);
  44.     procedure ActionSaveAsExecute(Sender: TObject);
  45.   private
  46.     TStore: TXLSTemplateStore;
  47.  
  48.     procedure RefreshList;
  49.     { Private declarations }
  50.   public
  51.     Modified: boolean;
  52.     procedure LoadData(const aTStore: TXLSTemplateStore);
  53.     { Public declarations }
  54.   end;
  55.  
  56.   procedure InvokeTemplateEditor(const aTStore: TXLSTemplateStore; var Modified: boolean);
  57.   procedure RefreshTemplateStore(const aTStore: TXLSTemplateStore; var Modified: boolean);
  58.  
  59. implementation
  60. procedure InvokeTemplateEditor(const aTStore: TXLSTemplateStore; var Modified: boolean);
  61. var
  62.   TemplateEdit: TTemplateEdit;
  63.   OldCursor: TCursor;
  64. begin
  65.   OldCursor:=Screen.Cursor;
  66.   Screen.Cursor:=crHourGlass;
  67.   try
  68.     TemplateEdit:= TTemplateEdit.Create(nil);
  69.     try
  70.       TemplateEdit.LoadData(aTStore);
  71.       TemplateEdit.ShowModal;
  72.       Modified:= TemplateEdit.Modified;
  73.     finally
  74.       FreeAndNil(TemplateEdit);
  75.     end;
  76.   finally
  77.     Screen.Cursor:=OldCursor;
  78.   end; //finally
  79. end;
  80.  
  81. procedure RefreshTemplateStore(const aTStore: TXLSTemplateStore; var Modified: boolean);
  82. var
  83.   i: integer;
  84.     {$IFDEF ConditionalExpressions}
  85.       {$IFDEF LINUX}
  86.         {$if CompilerVersion > 14}Directory: WideString;{$IFEND} //Kylix 3 or above
  87.         {$if CompilerVersion <= 14}Directory: String;{$IFEND} //Kylix 2 
  88.       {$ELSE} 
  89.         Directory: string; //Delphi 6/7
  90.       {$ENDIF}
  91.     {$ELSE}
  92.       Directory: string; //Delphi 5
  93.     {$ENDIF}
  94. begin
  95.   Directory:='';
  96.   if not SelectDirectory(TxtRefreshTemplate,'', Directory) then exit;
  97.  
  98.   {$IFDEF  VER130}
  99.     Directory:=IncludeTrailingBackslash(Directory);
  100.   {$ELSE}
  101.     Directory:=IncludeTrailingPathDelimiter(Directory);
  102.   {$ENDIF}
  103.  
  104.   for i:=0 to aTStore.Templates.Count-1 do
  105.   begin
  106.     aTStore.Templates[i].FileName:=Directory+aTStore.Templates[i].FileName;
  107.   end;
  108.   Modified:=true;
  109. end;
  110.  
  111. {$IFDEF WIN32}
  112.   {$R *.dfm}
  113. {$ENDIF}
  114. {$IFDEF LINUX}
  115.   {$R *.xfm}
  116. {$ENDIF}
  117.  
  118.  
  119. { TTemplateEdit }
  120.  
  121. procedure TTemplateEdit.RefreshList;
  122. var
  123.   i: integer;
  124.   Li: TListItem;
  125. begin
  126.   Files.Items.BeginUpdate;
  127.   try
  128.     Files.Items.Clear;
  129.     for i:=0 to TStore.Templates.Count-1 do
  130.     begin
  131.       Li:=Files.Items.Add;
  132.       Li.Caption:=IntToStr(TStore.Templates[i].Index)+' - '+TStore.Templates[i].FileName;
  133.       Li.Data:=TStore.Templates[i];
  134.       Li.ImageIndex:=1;
  135.     end;
  136.   finally
  137.     Files.Items.EndUpdate;
  138.   end; //finally
  139. end;
  140.  
  141. procedure TTemplateEdit.LoadData(const aTStore: TXLSTemplateStore);
  142. begin
  143.   Modified:=false;
  144.   TStore:=aTStore;
  145.   FormCaption.Caption:=Format(TxtEditing,[TStore.Name]);
  146.   RefreshList;
  147. end;
  148.  
  149. procedure TTemplateEdit.ActionOkExecute(Sender: TObject);
  150. begin
  151.   Close;
  152. end;
  153.  
  154. procedure TTemplateEdit.ActionAddExecute(Sender: TObject);
  155. var
  156.   NewTemplate: TXlsTemplate;
  157.   idx, i: integer;
  158. begin
  159.   if OpenDialog.Execute then
  160.   begin
  161.     if Files.Selected<>nil then idx:= Files.Selected.Index else idx:=Files.Items.Count;
  162.     for i:=OpenDialog.Files.Count-1 downto 0 do
  163.     begin
  164.       NewTemplate:=(TStore.Templates.Insert(idx) as TXlsTemplate);
  165.       try
  166.         NewTemplate.FileName:= OpenDialog.Files[i];
  167.       except
  168.         TStore.Templates.Delete(idx);
  169.         raise;
  170.       end; //Except
  171.     end;
  172.     Modified:=true;
  173.     RefreshList;
  174.     Files.Selected:=Files.Items[idx];
  175.   end;
  176. end;
  177.  
  178.  
  179. procedure TTemplateEdit.ActionDeleteExecute(Sender: TObject);
  180. var
  181.   idx: integer;
  182. begin
  183.   if Files.Selected<>nil then
  184.   begin
  185.     idx:=Files.Selected.Index;
  186.     TStore.Templates.Delete(TXlsTemplate(Files.Selected.Data).Index);
  187.     Modified:=true;
  188.     RefreshList;
  189.     if Files.Items.Count>idx then
  190.     begin
  191.       Files.Selected:=Files.Items[idx];
  192.       Files.Items[idx].Focused:=true;
  193.     end;
  194.   end;
  195. end;
  196.  
  197. procedure TTemplateEdit.ActionDeleteUpdate(Sender: TObject);
  198. begin
  199.   ActionDelete.Enabled:=Files.Selected<>nil;
  200. end;
  201.  
  202. procedure TTemplateEdit.ActionRefreshExecute(Sender: TObject);
  203. begin
  204.   RefreshTemplateStore(TStore, Modified);
  205. end;
  206.  
  207. procedure TTemplateEdit.ActionSaveAsUpdate(Sender: TObject);
  208. begin
  209.   ActionSaveAs.Enabled:=Files.Selected<>nil;
  210. end;
  211.  
  212. procedure TTemplateEdit.ActionSaveAsExecute(Sender: TObject);
  213. begin
  214.   if Files.Selected=nil then exit;
  215.   SaveDialog.FileName:=TXlsTemplate(Files.Selected.Data).FileName;
  216.   if not SaveDialog.Execute then exit;
  217.   if FileExists(SaveDialog.FileName) then DeleteFile(SaveDialog.FileName);
  218.   TXlsTemplate(Files.Selected.Data).SaveAs(SaveDialog.FileName);
  219. end;
  220.  
  221. end.
  222.  
  223.