home *** CD-ROM | disk | FTP | other *** search
- unit UMain;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- UExcelAdapter, XLSAdapter, UCustomFlexCelReport, UFlexcelReport,
- ComCtrls, ToolWin, UFlxRepThread, ActnList, ImgList, UAbout, ExtCtrls;
-
- type
- TMain = class(TForm)
- ToolBar1: TToolBar;
- ToolButton1: TToolButton;
- ImageList1: TImageList;
- ImageList3: TImageList;
- ImageList2: TImageList;
- ToolButton2: TToolButton;
- ToolButton3: TToolButton;
- ActionList1: TActionList;
- ActionReport: TAction;
- ActionCancel: TAction;
- ActionClose: TAction;
- ToolButton4: TToolButton;
- ActionHelp: TAction;
- ToolButton5: TToolButton;
- LvReports: TListView;
- PanelCommand: TPanel;
- procedure ActionCloseExecute(Sender: TObject);
- procedure ActionReportExecute(Sender: TObject);
- procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
- procedure ActionHelpExecute(Sender: TObject);
- procedure ActionCancelUpdate(Sender: TObject);
- procedure ActionCancelExecute(Sender: TObject);
- private
- procedure RepTerminate(Sender: TObject);
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Main: TMain;
-
- implementation
-
- {$R *.DFM}
-
- procedure TMain.RepTerminate(Sender: TObject);
- var
- Th: TFlxRepThread;
- i: integer;
- Msg: string;
- begin
- //Remove thread form list
- Th:= Sender as TFlxRepThread;
- for i:=0 to LvReports.Items.Count-1 do
- if LvReports.Items[i].Data= Th then
- begin
- if Th.ErrMsg='' then Msg:='OK' else Msg:=Th.ErrMsg;
- LvReports.Items[i].SubItems.Text:='Terminated: '+Msg;
- LvReports.Items[i].Data:=nil;
- end;
- DeleteFile(Th.FileName);
- end;
-
- procedure TMain.ActionCloseExecute(Sender: TObject);
- begin
- Close;
- end;
-
- procedure TMain.ActionReportExecute(Sender: TObject);
- var
- Li: TListItem;
- WorkThread: TFlxRepThread;
- begin
- Randomize;
- WorkThread:=TFlxRepThread.Create;
- WorkThread.OnTerminate:=RepTerminate;
-
- Li:=LvReports.Items.Add;
- Li.Caption:=WorkThread.FileName;
- Li.Data:=WorkThread;
- Li.SubItems.Add('RUNNING...') ;
-
- WorkThread.Resume;
-
- end;
-
- procedure TMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
- var
- i: integer;
- begin
- //Verify all threads have finished
- for i:=0 to LvReports.Items.Count-1 do
- if LvReports.Items[i].Data<>nil then
- begin
- TFlxRepThread(LvReports.Items[i].Data).Finish;
- TFlxRepThread(LvReports.Items[i].Data).WaitFor;
- end;
- end;
-
- procedure TMain.ActionHelpExecute(Sender: TObject);
- begin
- About.ShowModal;
- end;
-
- procedure TMain.ActionCancelUpdate(Sender: TObject);
- begin
- ActionCancel.Enabled:=(LvReports.Selected<>nil) and (LvReports.Selected.Data<>nil);
- end;
-
- procedure TMain.ActionCancelExecute(Sender: TObject);
- begin
- if (LvReports.Selected<>nil) and
- (TFlxRepThread(LvReports.Selected.Data)<>nil) then
- TFlxRepThread(LvReports.Selected.Data).Finish;
- end;
-
- end.
-