main.pas
来自「fastreport 4.6.8完全源码」· PAS 代码 · 共 139 行
PAS
139 行
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,
frxServerConfig;
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 }
public
function GetServiceController: TServiceController; override;
{ Public declarations }
end;
var
FastReport: TFastReport;
dbMd: String;
implementation
uses ComObj;
{$R *.DFM}
var
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);
begin
ADOConnection.ConnectionString := DBConnStr + frxGetAbsPath(ServerConfig.GetValue('server.database.pathtodatabase'));
CoInitialize(nil);
try
ADOConnection.Open;
except
LogMessage('Database connection error');
end;
if ADOConnection.Connected then
begin
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 + =
减小字号Ctrl + -
显示快捷键?