home *** CD-ROM | disk | FTP | other *** search
/ Chip 2003 January / Chip_2003-01_cd1.bin / zkuste / delphi / kolekce / d567 / FLEXCEL.ZIP / Demo / Thread / UMain.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2002-09-28  |  2.9 KB  |  120 lines

  1. unit UMain;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   UExcelAdapter, XLSAdapter, UCustomFlexCelReport, UFlexcelReport,
  8.   ComCtrls, ToolWin, UFlxRepThread, ActnList, ImgList, UAbout, ExtCtrls;
  9.  
  10. type
  11.   TMain = class(TForm)
  12.     ToolBar1: TToolBar;
  13.     ToolButton1: TToolButton;
  14.     ImageList1: TImageList;
  15.     ImageList3: TImageList;
  16.     ImageList2: TImageList;
  17.     ToolButton2: TToolButton;
  18.     ToolButton3: TToolButton;
  19.     ActionList1: TActionList;
  20.     ActionReport: TAction;
  21.     ActionCancel: TAction;
  22.     ActionClose: TAction;
  23.     ToolButton4: TToolButton;
  24.     ActionHelp: TAction;
  25.     ToolButton5: TToolButton;
  26.     LvReports: TListView;
  27.     PanelCommand: TPanel;
  28.     procedure ActionCloseExecute(Sender: TObject);
  29.     procedure ActionReportExecute(Sender: TObject);
  30.     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  31.     procedure ActionHelpExecute(Sender: TObject);
  32.     procedure ActionCancelUpdate(Sender: TObject);
  33.     procedure ActionCancelExecute(Sender: TObject);
  34.   private
  35.     procedure RepTerminate(Sender: TObject);
  36.     { Private declarations }
  37.   public
  38.     { Public declarations }
  39.   end;
  40.  
  41. var
  42.   Main: TMain;
  43.  
  44. implementation
  45.  
  46. {$R *.DFM}
  47.  
  48. procedure TMain.RepTerminate(Sender: TObject);
  49. var
  50.   Th: TFlxRepThread;
  51.   i: integer;
  52.   Msg: string;
  53. begin
  54.   //Remove thread form list
  55.   Th:= Sender as TFlxRepThread;
  56.   for i:=0 to LvReports.Items.Count-1 do
  57.     if LvReports.Items[i].Data= Th then
  58.     begin
  59.       if  Th.ErrMsg='' then Msg:='OK' else Msg:=Th.ErrMsg;
  60.       LvReports.Items[i].SubItems.Text:='Terminated: '+Msg;
  61.       LvReports.Items[i].Data:=nil;
  62.     end;
  63.   DeleteFile(Th.FileName);
  64. end;
  65.  
  66. procedure TMain.ActionCloseExecute(Sender: TObject);
  67. begin
  68.   Close;
  69. end;
  70.  
  71. procedure TMain.ActionReportExecute(Sender: TObject);
  72. var
  73.   Li: TListItem;
  74.   WorkThread: TFlxRepThread;
  75. begin
  76.   Randomize;
  77.   WorkThread:=TFlxRepThread.Create;
  78.   WorkThread.OnTerminate:=RepTerminate;
  79.  
  80.   Li:=LvReports.Items.Add;
  81.   Li.Caption:=WorkThread.FileName;
  82.   Li.Data:=WorkThread;
  83.   Li.SubItems.Add('RUNNING...') ;
  84.  
  85.   WorkThread.Resume;
  86.  
  87. end;
  88.  
  89. procedure TMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  90. var
  91.   i: integer;
  92. begin
  93.   //Verify all threads have finished
  94.   for i:=0 to LvReports.Items.Count-1 do
  95.     if LvReports.Items[i].Data<>nil then
  96.     begin
  97.       TFlxRepThread(LvReports.Items[i].Data).Finish;
  98.       TFlxRepThread(LvReports.Items[i].Data).WaitFor;
  99.     end;
  100. end;
  101.  
  102. procedure TMain.ActionHelpExecute(Sender: TObject);
  103. begin
  104.   About.ShowModal;
  105. end;
  106.  
  107. procedure TMain.ActionCancelUpdate(Sender: TObject);
  108. begin
  109.   ActionCancel.Enabled:=(LvReports.Selected<>nil) and (LvReports.Selected.Data<>nil);
  110. end;
  111.  
  112. procedure TMain.ActionCancelExecute(Sender: TObject);
  113. begin
  114.   if (LvReports.Selected<>nil) and
  115.     (TFlxRepThread(LvReports.Selected.Data)<>nil) then
  116.       TFlxRepThread(LvReports.Selected.Data).Finish;
  117. end;
  118.  
  119. end.
  120.