⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 umain.pas

📁 Delphi/BCB 各种版本都支持的Excel 读写控件.一成功应用在N个项目中 .
💻 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 + -