📄 umain.pas
字号:
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.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -