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

📄 viewreport.h

📁 本软件带有源码
💻 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 + -