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

📄 main.pas

📁 打印软件
💻 PAS
字号:
unit main;

{$I frx.inc}

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs,
  frxServer, DB, ADODB, frxClass, frxADOComponents, frxDBSet, frxGZip,
  frxDCtrl, frxDMPExport, frxGradient, frxChBox, frxCross, frxRich,
  frxChart, frxBarcode, frxServerUtils, ActiveX, Registry, IniFiles, frxUtils;

type
  TFastReport = class(TService)
    ADOConnection: TADOConnection;
    Serv: TfrxReportServer;
    frxBarCodeObject1: TfrxBarCodeObject;
    frxChartObject1: TfrxChartObject;
    frxRichObject1: TfrxRichObject;
    frxCrossObject1: TfrxCrossObject;
    frxCheckBoxObject1: TfrxCheckBoxObject;
    frxGradientObject1: TfrxGradientObject;
    frxDotMatrixExport1: TfrxDotMatrixExport;
    frxDialogControls1: TfrxDialogControls;
    frxGZipCompressor1: TfrxGZipCompressor;
    frxADOComponents1: TfrxADOComponents;
    procedure ServiceStop(Sender: TService; var Stopped: Boolean);
    procedure ServiceStart(Sender: TService; var Started: Boolean);
    procedure ServicePause(Sender: TService; var Paused: Boolean);
    procedure ServiceExecute(Sender: TService);
    procedure ServiceContinue(Sender: TService; var Continued: Boolean);
    procedure ServiceAfterInstall(Sender: TService);
  private
    { Private declarations }
    AppPath: String;
    ConfFile: String;
    AllowFile: String;
    DenyFile: String;
  public
    function GetServiceController: TServiceController; override;
    { Public declarations }
  end;

const
  CONFIG_FILE = 'server.conf';
  ALLOW_FILE =  'allow.conf';
  DENY_FILE =   'deny.conf';

var
  FastReport: TFastReport;
  dbMd: String;

implementation

uses ComObj;

{$R *.DFM}

var
  DATABASE_FILE: String;
  DBConnStr: String = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=';


procedure ServiceController(CtrlCode: DWord); stdcall;
begin
  FastReport.Controller(CtrlCode);
end;

function TFastReport.GetServiceController: TServiceController;
begin
  Result := ServiceController;
end;

procedure TFastReport.ServiceStart(Sender: TService; var Started: Boolean);
var
  ini: TIniFile;
begin
  AppPath := GetAppPath;
  ConfFile := AppPath + CONFIG_FILE;
  AllowFile := AppPath + ALLOW_FILE;
  DenyFile := AppPath + DENY_FILE;

  ini := TIniFile.Create(ConfFile);
  try
    DATABASE_FILE := AppPath + ini.ReadString('Database', 'Connection', 'database\server.mdb');
  finally
    ini.Free;
  end;

  ADOConnection.ConnectionString := DBConnStr + DATABASE_FILE;
  CoInitialize(nil);
  try
    ADOConnection.Open;
  except
    LogMessage('Database connection error');
  end;

  if ADOConnection.Connected then
  begin
    if FileExists(ConfFile) then
      Serv.Configuration.LoadFromFile(ConfFile);
    if FileExists(AllowFile) then
    begin
      Serv.AllowIP.Clear;
      Serv.AllowIP.LoadFromFile(AllowFile);
    end;
    if FileExists(DenyFile) then
    begin
      Serv.DenyIP.Clear;
      Serv.DenyIP.LoadFromFile(DenyFile);
    end;
    Serv.Open;
  end else
    LogMessage('Database not connected');
  Started := True;
end;

procedure TFastReport.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
  if ADOConnection.Connected then
    ADOConnection.Close;
  Serv.Close;
  Stopped := True;
end;

procedure TFastReport.ServicePause(Sender: TService; var Paused: Boolean);
begin
  Serv.Close;
  Paused := True;
end;

procedure TFastReport.ServiceExecute(Sender: TService);
begin
  while not Terminated do
  begin
    ServiceThread.ProcessRequests(True);
    Sleep(100);
  end;
end;

procedure TFastReport.ServiceContinue(Sender: TService; var Continued: Boolean);
begin
  Serv.Open;
  Continued := True;
end;

procedure TFastReport.ServiceAfterInstall(Sender: TService);
var
  Registry: TRegistry;
  key: String;
begin
  Registry  := TRegistry.Create;
  try
{$IFNDEF Delphi4}
    Registry.Access := KEY_READ;
{$ENDIF}
    Registry.RootKey := HKEY_LOCAL_MACHINE;
    key := 'System\CurrentControlSet\Services\' + Name;
    if Registry.KeyExists(key) then
    begin
{$IFNDEF Delphi4}
      Registry.Access := KEY_WRITE;
{$ENDIF}
      Registry.OpenKey(key, True);
      Registry.WriteString('Description', 'FastReport Server service. http://www.fast-report.com');
      Registry.CloseKey;
    end;
  finally
    Registry.Free;
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -