📄 viewreport.h
字号:
// ViewReport.h: interface for the CViewReport class.
// added by zhang-zhi-kun 2000/02/24
//////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
/****************************************************************************
*软件名称:报表显示打印系统
*现行版本:Release 3.50
*设计编写:张志坤
*修改记录:
* 11、2006/11/01 Release 3.50
* 10、2003/07/16 Release 3.00
* 9、2001/06/05 Release 2.01
* 7、2000/11/01 Release 2.00
* 6、2000/09/20 Release 1.80
* 5、2000/08/01 Release 1.30
* 4、2000/06/12 Release 1.20
* 3、2000/05/03 Release 1.10
* 2、2000/03/09 Release 1.01
* 1、2000/02/24 Release 1.00
***************************************************************************/
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_VIEWREPORT_H__008C1241_EA14_11D3_A1DF_0000E86DB13F__INCLUDED_)
#define AFX_VIEWREPORT_H__008C1241_EA14_11D3_A1DF_0000E86DB13F__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <afxtempl.h>
class AFX_EXT_CLASS CViewReport
{
public:
//构造函数
CViewReport();
//title: 可以在初始化窗口标题,可以调用SetWindowTite(..)来设置。
CViewReport(char* title);
//析构函数
virtual ~CViewReport();
//自定义报表
void DefineReport();
//增加记录,
//如:AddRecord("字段一|字段二|%s|",strVal);
//以下阐述仅适用于ReportMode=0模式:
//第一次调用AddRecord(..)时,
//如果需要指明各字段的Align属性,
//则在每个字段最后可以加一个指示字:0,1,2
//0:居左, 1:居中, 2:居右
//如果不加指示字0,1,2,则该字段居中显示
void AddRecord(char *cmd,...);
//设置窗口的高度和宽度 0:默认 1:自动调整 其他:实际数值
void SetWindowSize(int winWidth=0,int winHeight=0);
//设置窗口的高度 0:默认 1:自动调整 其他:实际数值
void SetWindowHeight(int winHeight=0);
//设置窗口的宽度 0:默认 1:自动调整 其他:实际数值
void SetWindowWidth(int winWidth=0);
//设置显示模式0:Grid报表格式 1:super报表
//autoEnter:TRUE 在每一行结束自动回车,FALSE不自动
void SetReportMode(int Mode=0,BOOL autoEnter=TRUE);
//显示报表,各参数含义如下:
//printMenu: 如果为TRUE,则表示报表具有打印功能、查找功能。
void Display(bool printMenu=TRUE);
//file:需要显示的文件
//printMenu: 如果为TRUE,则表示报表具有打印功能、查找功能。
void Display(CString file,bool printMenu=TRUE);
//设置窗口标题
void SetWindowTitle(char *cmd,...);
//自动调整窗口的高度和宽度
void AutoSize();
//自动调整窗口的高度
void AutoSizeHeight();
//自动调整窗口宽度
void AutoSizeWidth();
//设置Grid报表行数信息
void SetRowNumber(bool dispRowNumber,CString titleRowNumber="行数");
//设置Grid报表的固定行列数目
void SetFixInfo(int nFixRow,int nFixCol);
//设置Grid报表背景的颜色
void SetBkColor(COLORREF gridBkColor);
//设置Grid报表Line的颜色
void SetGridLineColor(COLORREF gridLineColor);
//设置Grid报表text的颜色
void SetTextColor(COLORREF textColor);
//设置Grid报表text的背景颜色
void SetTextBkColor(COLORREF textBkColor);
//设置Grid报表固定text的颜色
void SetFixedTextColor(COLORREF fixTextColor);
//设置Grid报表固定text的背景颜色
void SetFixedBkColor(COLORREF fixBkColor);
//初始化模板,仅适用于ReportMode=1模式
bool InitTemplate(CString templateName,CString templatePath="");
//设置模板数据,仅适用于ReportMode=1模式
void SetTemplateData(const CString& dataSymbol,char *dataValue,...);
//形成模板数据文件,仅适用于ReportMode=1模式
void WriteTemplateFile();
//重复当前行的模板数据文件,仅适用于ReportMode=1模式
void RepeatCurrentLine();
//重复当前RowSpan,仅适用于ReportMode=1模式
void RepeatRowSpan();
//设置换页,仅适用于ReportMode=1模式
void SetFormFeed();
//设置换行,仅适用于ReportMode=1模式
void SetNewLine();
//是否显示CPrintDialog,仅适用于ReportMode=1模式
void ShowPrintDialog(bool show=true);
//设置页边矩,仅适用于ReportMode=1模式
void SetSubMargin(int top,int left,int right,int bottom);
//设置打印页首和页脚的信息,仅适用于ReportMode=1模式
void SetPrintInfo(CString head,CString foot,CString pagenum);
//设置界面主题
//Office2000,OfficeXP,Office2003,Visio2000,VisioXP,Visio2003,Explorer
//NativeWinXP,Whidbey,Grippered,ShortcutBar2003,Status,Excel
void SetTheme(char *paintTheme);
//设置界面主题
//Office2000,OfficeXP,Office2003,Visio2000,VisioXP,Visio2003,Explorer
//NativeWinXP,Whidbey,Grippered,ShortcutBar2003,Status,Excel
void SetTheme(CString paintTheme);
protected:
//存放超级报表<body></body>之间数据
CArray<CString,CString&> templBody;
CArray<CString,CString&> templOpBody;
//存放每一行的起止位置 .x:tr开始位置 .y:tr结束位置
CArray<CPoint,CPoint> trPos;
//存放SetTemplateData最近更新的行
int templUpdateLine,trNumber;
//存放每个重复行的具体信息
CStringArray *trRepeatPart;
//存放每个RowPane的具体信息
//top:所在行数 left:所在tr数 right:rowpane的值
CArray<CRect,CRect> rowSpanPos;
CArray<CRect,CRect> opSpanPos;
//每个rowspan的重复次数
int *spanRepeatTimes;
//每个tr的重复次数
int *trRepeatTimes;
//用于标识是否要更改rowspan的值
int lastLine;
protected:
CString m_sTitle; //窗口标题
int windowY; //窗口宽度
int windowX; //窗口高度
long fcounts; //报表行数
CString vTempFile; //临时文件名称
CStdioFile vRecFile; //临时文件句柄
int txtMode; //显示模式
ULONG maxLength; //最大的行长度
int entNum; //回车数目
char lineBuf[2024]; //存放行信息
int autoCarriageEnter; //报表每行是否自动回车
bool dispRowNum; //是否显示行数信息
CString titleRowNum; //行数标题
int fixRow; //固定行数
int fixCol; //固定列数
char pTheme[40];
protected:
CString sHead;
CString sFoot;
bool showPDlg;
CRect SubMargin;
CString pageNum;
protected:
COLORREF gBkColor;
COLORREF gLineColor;
COLORREF tColor;
COLORREF tBkColor;
COLORREF fTextColor;
COLORREF fBkColor;
protected:
//初始化数据
void InitData(char *title);
//显示List格式和普通文本格式的报表
void ViewGridReport(bool printMenu);
//显示超级报表,仅适用于ReportMode=1模式
void ViewSuperReport(bool printMenu);
//取得模板路径,仅适用于ReportMode=1模式
bool GetTemplatePath(CString templateName,CString &templatePath);
//文件结束时调整HTM格式,仅适用于ReportMode=1模式
void AdjustHtmFile();
//取最近更新的tr,仅适用于ReportMode=1模式
int GetRecentTr(int curUpdateLine);
//取最近更新的RowSpan,仅适用于ReportMode=1模式
int GetRecentSpan(int curTrPos);
//更新的最近的RowSpan,仅适用于ReportMode=1模式
int UpdateRecentSpan(int curTrPos);
//更新的RowSpan的数值,仅适用于ReportMode=1模式
int UpdateSpanNumber(int curSpanPos);
//保存RowSpan信息,仅适用于ReportMode=1模式
void SaveRowSpanInfo(CString dataString,int trpos,int trNumber);
//换页函数,仅适用于ReportMode=1模式
void AddFormFeedFunction(CString dataString);
//保存具体的Tr数据,仅适用于ReportMode=1模式
void SaveTrData(int pos);
//初始化TR、SPAN数据,仅适用于ReportMode=1模式
void InitTrData(int trNumber);
//保存rowspan数据,仅适用于ReportMode=1模式
int WriteSpanData(int curSpan,int *i);
//保存trRepeat数据,仅适用于ReportMode=1模式
int WriteTrData(int curTrn,int *i);
//获取临时文件的名
void vGetTempFile(CString& file);
};
#endif // !defined(AFX_VIEWREPORT_H__008C1241_EA14_11D3_A1DF_0000E86DB13F__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -