|
@@ -105,7 +105,7 @@ type
|
|
|
|
|
|
procedure InitPageSettings;
|
|
|
procedure InitFont;
|
|
|
- procedure InitPaperSettings;
|
|
|
+ procedure InitPaperSettings(ATemplate: TTemplateNode);
|
|
|
|
|
|
function GetHintStr: string;
|
|
|
|
|
@@ -121,7 +121,7 @@ type
|
|
|
procedure ResizePreviewBox;
|
|
|
procedure PreviewReportCurPage;
|
|
|
procedure RepaintCurPagePreview;
|
|
|
- procedure LoadTemplet(const ATempletName: string);
|
|
|
+ procedure LoadTemplet(ATemplate: TTemplateNode);
|
|
|
procedure LoadTempletAndDisplay;
|
|
|
|
|
|
procedure BeforeExport;
|
|
@@ -149,7 +149,7 @@ type
|
|
|
destructor Destroy; override;
|
|
|
|
|
|
procedure InitFormView;
|
|
|
- procedure InitReportSettings;
|
|
|
+ procedure InitReportSettings(ATemplate: TTemplateNode = nil);
|
|
|
|
|
|
property ProjectData: TProjectData read FProjectData write SetProjectData;
|
|
|
// 当前预览的页码
|
|
@@ -294,10 +294,7 @@ begin
|
|
|
|
|
|
Screen.Cursor := crHourGlass;
|
|
|
try
|
|
|
- if vTemplateNode.IsMulti then
|
|
|
- LoadTemplet(vTemplateNode.MultiFileNames[FProjectData.PhaseIndex])
|
|
|
- else
|
|
|
- LoadTemplet(vTemplateNode.FileName);
|
|
|
+ LoadTemplet(vTemplateNode);
|
|
|
if PreviewComXML.TotalPages > 0 then
|
|
|
PreviewTemplet
|
|
|
else
|
|
@@ -746,11 +743,11 @@ begin
|
|
|
LoadTempletAndDisplay;
|
|
|
end;
|
|
|
|
|
|
-procedure TReportsForm.InitReportSettings;
|
|
|
+procedure TReportsForm.InitReportSettings(ATemplate: TTemplateNode);
|
|
|
begin
|
|
|
PreviewComXML.FillZero := chkFillZero.Checked;
|
|
|
InitPageSettings;
|
|
|
- InitPaperSettings;
|
|
|
+ InitPaperSettings(ATemplate);
|
|
|
end;
|
|
|
|
|
|
procedure TReportsForm.InitPageSettings;
|
|
@@ -764,7 +761,7 @@ begin
|
|
|
PreviewComXML.setEdge(3, '', ReportConfig.DownEdge/10);
|
|
|
end;
|
|
|
|
|
|
-procedure TReportsForm.InitPaperSettings;
|
|
|
+procedure TReportsForm.InitPaperSettings(ATemplate: TTemplateNode);
|
|
|
|
|
|
procedure InitRepBorderLine;
|
|
|
var
|
|
@@ -1018,10 +1015,13 @@ procedure TReportsForm.InitPaperSettings;
|
|
|
end;
|
|
|
|
|
|
begin
|
|
|
- InitFont; // 各类字体
|
|
|
- InitRepBorderLine; // 报表边框
|
|
|
- InitRepCellLine; // 报表表格
|
|
|
- InitOtherArea; // 活动区域
|
|
|
+ if not Assigned(ATemplate) or (ATemplate.SelfFormat = 0) then
|
|
|
+ begin
|
|
|
+ InitFont; // 各类字体
|
|
|
+ InitRepBorderLine; // 报表边框
|
|
|
+ InitRepCellLine; // 报表表格
|
|
|
+ InitOtherArea; // 活动区域
|
|
|
+ end;
|
|
|
end;
|
|
|
|
|
|
procedure TReportsForm.PreviewComXMLCrossTabLabelShow(valIDX: Integer;
|
|
@@ -1332,10 +1332,7 @@ begin
|
|
|
|
|
|
Screen.Cursor := crHourGlass;
|
|
|
try
|
|
|
- if ATemplateNode.IsMulti then
|
|
|
- LoadTemplet(ATemplateNode.MultiFileNames[FProjectData.PhaseIndex])
|
|
|
- else
|
|
|
- LoadTemplet(ATemplateNode.FileName);
|
|
|
+ LoadTemplet(ATemplateNode);
|
|
|
if PreviewComXML.TotalPages > 0 then
|
|
|
PrintTemplet
|
|
|
{else if strRptName <> '' then
|
|
@@ -1393,13 +1390,16 @@ begin
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
-procedure TReportsForm.LoadTemplet(const ATempletName: string);
|
|
|
+procedure TReportsForm.LoadTemplet(ATemplate: TTemplateNode);
|
|
|
var
|
|
|
RptArchiverObj: TReportArchiver;
|
|
|
Mem: TMemoryStream;
|
|
|
begin
|
|
|
RptArchiverObj := TReportArchiver.Create;
|
|
|
- RptArchiverObj.FileName := ATempletName;
|
|
|
+ if ATemplate.IsMulti then
|
|
|
+ RptArchiverObj.FileName := ATemplate.MultiFileNames[FProjectData.PhaseIndex]
|
|
|
+ else
|
|
|
+ RptArchiverObj.FileName := ATemplate.FileName;
|
|
|
Mem := RptArchiverObj.Extract;
|
|
|
try
|
|
|
// 以下代码有顺序限制,不可修改,主要保证在不修改报表模板文件的基础上可以用户定制报表格式
|
|
@@ -1407,7 +1407,7 @@ begin
|
|
|
// 读取报表模板
|
|
|
if not PreviewComXML.ReadReportStream(Mem) then Exit;
|
|
|
// 将报表设置中的数据覆盖掉原模板的数据
|
|
|
- InitReportSettings;
|
|
|
+ InitReportSettings(ATemplate);
|
|
|
// 保存
|
|
|
PreviewComXML.SaveToStream(Mem);
|
|
|
// 再次读取,使报表设置中的设置生效
|