开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
1 Star 0 Fork 48

camark/WebFastReport

forked from soar/WebFastReport
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (2)
master
fallbrowser
master
分支 (2)
master
fallbrowser
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (2)
master
fallbrowser
WebFastReport
/
WebFastReport.pas
WebFastReport
/
WebFastReport.pas
WebFastReport.pas 4.90 KB
一键复制 编辑 原始数据 按行查看 历史
隐龙 提交于 2014年10月15日 23:28 +08:00 . 发行版本,CVS迁入
unit WebFastReport;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,Forms,
Dialogs, StdCtrls,NativeXml,ReportData, Grids, DBGrids, DB,SysComm,PerlRegEx,
frxClass, frxDesgn, frxBarcode,frxDBSet,DBClient,ReportDataLoader;
type
TWebFastReport = class
private
Owner:TComponent;
URL:WideString;
AppName:WideString;
ReportName:WideString;
DataSetName:string;
ReportData:TReportData;
ReportDataLoader:TReportDataLoader;
DataStream:TStream;
DesignStream:TStream;
DataSet:RDataSet;
Variable:RVariable;
FrxReport:TfrxReport;
FrxDBDataSet:TFrxDBDataSet;
MasterData:TFrxMasterData;
ClientDataSet:TClientDataSet;
procedure init();
function OnSaveReport(Report: TfrxReport;SaveAs: Boolean): Boolean;
procedure OnGetValue(const VarName: String;var Value: Variant);
public
constructor create(Aowner:TComponent;AappName:WideString;AreportName:WideString;AUrl:WideString);
destructor destroy(); override;
procedure print();
end;
implementation
{ TWebFastReport }
constructor TWebFastReport.create(Aowner:TComponent;AappName:WideString; AreportName: WideString;AUrl: WideString);
begin
Self.Owner:=Aowner;
Self.AppName:=AappName;
Self.ReportName:=AreportName;
self.URL:=AUrl;
end;
procedure TWebFastReport.print;
begin
Self.init();
Self.FrxReport.DesignReport;
end;
destructor TWebFastReport.destroy;
begin
end;
procedure TWebFastReport.init;
var
i,j:Integer;
flag:Boolean;
begin
flag:=False;
Self.ReportData:= TReportData.Create(Self.Owner);
try
Self.ReportDataLoader:=TReportDataLoader.create(Self.Owner,Self.AppName,Self.ReportName,Self.URL);
except
ShowMessage('000000');
end;
Self.DataStream:=Self.ReportDataLoader.GetDataStream;
Self.DesignStream:=Self.ReportDataLoader.GetDesignStream;
if Assigned(Self.DataStream) then
begin
Self.ReportData.load(Self.DataStream);
end;
if Assigned(Self.FrxReport) then
begin
FreeAndNil(self.FrxReport);
end;
Self.FrxReport:=TfrxReport.Create(self.Owner);
Self.FrxReport.OnGetValue := Self.OnGetValue;
Self.FrxReport.LoadFromStream(Self.DesignStream);
//报表变量加载
for i := 0 to Self.ReportData.getVariableCount -1 do
begin
if i=0 then Self.FrxReport.Variables.Add.Name:= ' def';
Self.Variable:=Self.ReportData.getRVariable(i);
Self.FrxReport.Variables.AddVariable('def',Self.Variable.key,Self.Variable.value);
end;
//报表数据集加载
for i:=0 to Self.ReportData.getDataSetCount-1 do
begin
Self.DataSet:=Self.ReportData.getRDataSet(i);
Self.DataSetName:=Self.DataSet.name;
Self.ClientDataSet:=Self.DataSet.dataset;
for j := 0 to self.Owner.ComponentCount-1 do
begin
if (Self.Owner.Components[j] is TFrxDBDataset) and (TFrxDBDataset(Self.Owner.Components[j]).Name = Self.DataSetName) then
begin
flag:=True;
FrxDBDataSet := TFrxDBDataset(Self.Owner.Components[j]);
end;
end;
if not flag then
begin
Self.FrxDBDataSet:=TFrxDBDataset.Create(self.Owner);
Self.FrxDBDataSet.Name:=Self.DataSetName;
Self.FrxDBDataSet.UserName:=Self.DataSetName;
end;
flag:=False;
self.FrxDBDataSet.DataSet:=Self.ClientDataSet;
Self.FrxReport.DataSets.Add(Self.FrxDBDataSet);
Self.MasterData:= TFrxMasterData(Self.FrxReport.FindObject('MasterData_'+Self.DataSetName));
if Assigned(Self.MasterData) then
begin
Self.MasterData.DataSet:=Self.FrxDBDataSet;
end;
end;
Self.DataStream.Free;
Self.DesignStream.Free;
self.ReportDataLoader.Free;
Self.ReportData.destroy;
end;
procedure TWebFastReport.OnGetValue(const VarName: String; var Value: Variant);
var
i:Integer;
vv:RVariable;
begin
for i := 0 to Self.ReportData.getVariableCount-1 do
begin
vv:=Self.ReportData.getRVariable(i);
if VarName = vv.key then Value:= vv.value;
end;
end;
function TWebFastReport.OnSaveReport(Report: TfrxReport;SaveAs: Boolean): Boolean;
var
i:Integer;
MasterDataName:string;
Component:TfrxComponent;
Path:WideString;
begin
Component:=nil;
if true then
begin
//清除变量
for i := 0 to Report.Variables.Count-1 do
begin
Report.Variables.DeleteVariable(Report.Variables.items[0].Name); //使用items[0],因为删除时,变量个数在变化
end;
//清除数据集
for i:=0 to Report.DataSets.Count-1 do
begin
MasterDataName:='MasterData_'+Report.DataSets.Items[i].DataSetName;
Component:=Report.FindObject(masterDataName);
if Assigned(Component) and (Component is TfrxMasterData) then
begin
TfrxMasterData(Component).DataSet:=nil;
end;
end;
Report.DataSets.Clear;
Path:=GetEnvironmentVariable('USERPROFILE')+'\WebFastReport\'+self.AppName;
if not DirectoryExists(Path) then
ForceDirectories(Path);
Report.SaveToFile(Path+'\'+self.ReportName+'.fr3');
end;
result:=true;
end;
end.
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

基于FastReport编写的web打印控件,实现打印模版在线设计
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Delphi
1
https://gitee.com/camark/WebFastReport.git
git@gitee.com:camark/WebFastReport.git
camark
WebFastReport
WebFastReport
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /