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

📄 printdbview.cpp

📁 在游戏设计的时候
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// PrintDBView.cpp : implementation of the CPrintDBView class
//

#include "stdafx.h"
#include "PrintDB.h"
#include "StandardPrint.h"

#include "PrintDBDoc.h"
#include "PrintDBView.h"
#include "AdvanceQuery.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CPrintDBApp theApp;

/////////////////////////////////////////////////////////////////////////////
// CPrintDBView

IMPLEMENT_DYNCREATE(CPrintDBView, CFormView)

BEGIN_MESSAGE_MAP(CPrintDBView, CFormView)
	//{{AFX_MSG_MAP(CPrintDBView)
	ON_COMMAND(ID_StandardPrint, OnStandardPrint)
	ON_BN_CLICKED(IDC_TOTALNUM, OnTotalnum)
	ON_UPDATE_COMMAND_UI(ID_StandardPrint, OnUpdateStandardPrint)
	ON_BN_CLICKED(IDC_Print, OnPrintDB)
	ON_COMMAND(ID_Today, OnToday)
	ON_UPDATE_COMMAND_UI(ID_Today, OnUpdateToday)
	ON_COMMAND(ID_AdvancedQuery, OnAdvancedQuery)
	ON_UPDATE_COMMAND_UI(ID_AdvancedQuery, OnUpdateAdvancedQuery)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPrintDBView construction/destruction

CPrintDBView::CPrintDBView()
	: CFormView(CPrintDBView::IDD)
{
	//{{AFX_DATA_INIT(CPrintDBView)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	// TODO: add construction code here

}

CPrintDBView::~CPrintDBView()
{
}

void CPrintDBView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPrintDBView)
	DDX_Control(pDX, IDC_SUMLIST, m_SumList);
	DDX_Control(pDX, IDC_LIST, m_List);
	//}}AFX_DATA_MAP
}

BOOL CPrintDBView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CFormView::PreCreateWindow(cs);
}

void CPrintDBView::OnInitialUpdate()
{
	CFormView::OnInitialUpdate();
	GetParentFrame()->RecalcLayout();
	ResizeParentToFit();
	IsLinkTable=FALSE;
	iScreen1=iScreen2=iScreen3=iScreenDayNum=iCone1=iCone2=iCone3=iConeDayNum=0;
    CanUseTotal=FALSE;
	HaveSum=FALSE;
	PrintType=0;

}

/////////////////////////////////////////////////////////////////////////////
// CPrintDBView printing

BOOL CPrintDBView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	if (PrintType==1)
	{
		pInfo->SetMaxPage(1);
	}else if(PrintType==2)
	{
		pInfo->SetMaxPage(ReturnPrintPages());
	}
	
	return DoPreparePrinting(pInfo);
}

void CPrintDBView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	if (PrintType==2)
	{
		circle=1;
	}
	// TODO: add extra initialization before printing
}

void CPrintDBView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

void CPrintDBView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
	// TODO: add customized printing code here
	if (PrintType==1)
	{
		
		if (CanUseTotal==TRUE)
		{
			
			CString sTitle="玻 壳 数 据 库 查 询 系 统";
			CString sCompany="津京玻壳股份有限公司";
			CString sDate="打印时间:";
			CFont titleFont,dataFont;
			int iCharWidth,iCharHeight;
			TEXTMETRIC tm;
			CTime cutTime=CTime::GetCurrentTime();
			CString sdate;
			CString string="";
			CString sComment="注:表中'时间段'内的时间为该时间段结束时间,该时间段的起始时间实为上一时间段内的时间!";
			
			sdate.Format("%d/%d/%d-%d:%d:%d",cutTime.GetYear(),cutTime.GetMonth(),cutTime.GetDay(),cutTime.GetHour(),cutTime.GetMinute(),cutTime.GetSecond());
			sDate+=sdate;
			dataFont.CreateFont(80,0,0,0,400,FALSE,FALSE,0,ANSI_CHARSET,
				OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,
				DEFAULT_PITCH|FF_MODERN,"宋体");
			titleFont.CreateFont(120,0,0,0,900,FALSE,FALSE,0,ANSI_CHARSET,
				OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,
				DEFAULT_PITCH|FF_MODERN,"宋体");
			pDC->SelectObject(&dataFont);
			pDC->GetTextMetrics(&tm);
			iCharWidth=tm.tmAveCharWidth;
			iCharHeight=tm.tmHeight;
			pDC->SelectObject(&titleFont);
			pDC->TextOut(38*iCharWidth,4*iCharHeight,sTitle);
			pDC->SelectObject(&dataFont);
			pDC->TextOut(15*iCharWidth,7*iCharHeight,sCompany);
			pDC->TextOut(72*iCharWidth,7*iCharHeight,sDate);
			
			
			//表格中的数据
			for (int i=0;i<31;i++)
			{
				m_List.GetText(i,string);
				pDC->TextOut((15+2)*iCharWidth,(int)((10+2*i+0.5)*iCharHeight),string);
			}
			//统计表格中的数据
			if (HaveSum==TRUE)
			{
				
				for (i=0;i<4;i++)
				{
					m_SumList.GetText(i,string);
					pDC->TextOut((15+2)*iCharWidth,(int)((62+10+2*i+0.5)*iCharHeight),string);
				}
			}
			pDC->TextOut(15*iCharWidth,(int)(80.5*iCharHeight),sComment);
			//画表格的竖线
			for ( i=0;i<8;i++)
			{
				pDC->MoveTo(15*iCharWidth+i*12*iCharWidth,10*iCharHeight);
				pDC->LineTo(15*iCharWidth+i*12*iCharWidth,80*iCharHeight);
			}
			//画表格的横线
			for (i=0;i<36;i++)
			{
				pDC->MoveTo(15*iCharWidth,(10+2*i)*iCharHeight);
				pDC->LineTo((15+84)*iCharWidth,(10+2*i)*iCharHeight);
			}
			
			
			//一下代码,仅仅是表格的装饰效果
			
			CPen pen(PS_SOLID,7,RGB(0,0,0));
			pDC->SelectObject(&pen);
			//描黑竖边框
			pDC->MoveTo(15*iCharWidth,10*iCharHeight);
			pDC->LineTo(15*iCharWidth,80*iCharHeight);
			pDC->MoveTo(15*iCharWidth+7*12*iCharWidth,10*iCharHeight);
			pDC->LineTo(15*iCharWidth+7*12*iCharWidth,80*iCharHeight);
			//描黑横边框
			pDC->MoveTo(15*iCharWidth,(10)*iCharHeight);
			pDC->LineTo((15+84)*iCharWidth,(10)*iCharHeight);
			pDC->MoveTo(15*iCharWidth,(10+70)*iCharHeight);
			pDC->LineTo((15+84)*iCharWidth,(10+70)*iCharHeight);
			
			pDC->MoveTo(15*iCharWidth,(10+2)*iCharHeight);
			pDC->LineTo((15+84)*iCharWidth,(10+2)*iCharHeight);
			pDC->MoveTo(15*iCharWidth,(10+2*10)*iCharHeight);
			pDC->LineTo((15+84)*iCharWidth,(10+2*10)*iCharHeight);
			
			pDC->MoveTo(15*iCharWidth,(10+2*21)*iCharHeight);
			pDC->LineTo((15+84)*iCharWidth,(10+2*21)*iCharHeight);
			pDC->MoveTo(15*iCharWidth,(10+2*31)*iCharHeight);
			pDC->LineTo((15+84)*iCharWidth,(10+2*31)*iCharHeight);
			pDC->MoveTo(15*iCharWidth,(10+2*34)*iCharHeight);
			pDC->LineTo((15+84)*iCharWidth,(10+2*34)*iCharHeight);
			
			//		delete &pen;
			//		delete &titleFont;
			//		delete &dataFont;
			//		delete &tm;
			
		}
		else
		{
			return;
		}
	}
	else if(PrintType==2)
	{
		if (CanUseTotal==TRUE)
		{
			int nPrintPages=ReturnPrintPages();
			CString sTitle="玻 壳 数 据 库 查 询 系 统";
			CString sCompany="津京玻壳股份有限公司";
			CString sDate="打印时间:";
			CFont titleFont,dataFont;
			int iCharWidth,iCharHeight;
			TEXTMETRIC tm;
			CTime cutTime=CTime::GetCurrentTime();
			CString sdate;
			CString string="";
			CString sComment="注:表中'时间段'内的时间为该时间段结束时间,该时间段的起始时间实为上一时间段内的时间!";
			
			sdate.Format("%d/%d/%d-%d:%d:%d",cutTime.GetYear(),cutTime.GetMonth(),cutTime.GetDay(),cutTime.GetHour(),cutTime.GetMinute(),cutTime.GetSecond());
			sDate+=sdate;
			dataFont.CreateFont(80,0,0,0,400,FALSE,FALSE,0,ANSI_CHARSET,
				OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,
				DEFAULT_PITCH|FF_MODERN,"宋体");
			titleFont.CreateFont(120,0,0,0,900,FALSE,FALSE,0,ANSI_CHARSET,
				OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,
				DEFAULT_PITCH|FF_MODERN,"宋体");
			pDC->SelectObject(&dataFont);
			pDC->GetTextMetrics(&tm);
			iCharWidth=tm.tmAveCharWidth;
			iCharHeight=tm.tmHeight;
			
			int k=circle;
			pDC->StartPage();
			pDC->SelectObject(&titleFont);
			pDC->TextOut(38*iCharWidth,4*iCharHeight,sTitle);
			pDC->SelectObject(&dataFont);
			pDC->TextOut(15*iCharWidth,7*iCharHeight,sCompany);
			pDC->TextOut(72*iCharWidth,7*iCharHeight,sDate);
			
			if (k<nPrintPages)
			{
				
				//表格中的数据
				for (int i=0;i<35;i++)
				{
					m_List.GetText(i+35*(k-1),string);
					pDC->TextOut((15+2)*iCharWidth,(int)((10+2*i+0.5)*iCharHeight),string);
				}
				
			}
			else
			{
				int residue;
				residue=m_List.GetCount()-(nPrintPages-1)*35;
				//表格中的数据
				for (int i=0;i<residue;i++)
				{
					m_List.GetText(i+(nPrintPages-1)*35,string);
					pDC->TextOut((15+2)*iCharWidth,(int)((10+2*i+0.5)*iCharHeight),string);
				}
				//统计表格中的数据
				if (HaveSum==TRUE)
				{
					
					m_SumList.GetText(3,string);
					pDC->TextOut((15+2)*iCharWidth,(int)((10+2*i+0.5)*iCharHeight),string);
					
				}
			}
			
			pDC->TextOut(15*iCharWidth,(int)(80.5*iCharHeight),sComment);
			//画表格的竖线
			for (int i=0;i<8;i++)
			{
				pDC->MoveTo(15*iCharWidth+i*12*iCharWidth,10*iCharHeight);
				pDC->LineTo(15*iCharWidth+i*12*iCharWidth,80*iCharHeight);
			}
			//画表格的横线
			for (i=0;i<36;i++)
			{
				pDC->MoveTo(15*iCharWidth,(10+2*i)*iCharHeight);
				pDC->LineTo((15+84)*iCharWidth,(10+2*i)*iCharHeight);
			}
			
			
			//一下代码,仅仅是表格的装饰效果
			
			CPen pen(PS_SOLID,7,RGB(0,0,0));
			pDC->SelectObject(&pen);
			//描黑竖边框
			pDC->MoveTo(15*iCharWidth,10*iCharHeight);
			pDC->LineTo(15*iCharWidth,80*iCharHeight);
			pDC->MoveTo(15*iCharWidth+7*12*iCharWidth,10*iCharHeight);
			pDC->LineTo(15*iCharWidth+7*12*iCharWidth,80*iCharHeight);
			//描黑横边框
			pDC->MoveTo(15*iCharWidth,(10)*iCharHeight);
			pDC->LineTo((15+84)*iCharWidth,(10)*iCharHeight);
			pDC->MoveTo(15*iCharWidth,(10+70)*iCharHeight);
			pDC->LineTo((15+84)*iCharWidth,(10+70)*iCharHeight);
			
			pDC->MoveTo(15*iCharWidth,(10+2)*iCharHeight);
			pDC->LineTo((15+84)*iCharWidth,(10+2)*iCharHeight);
			
			
			//		delete &pen;
			//		delete &titleFont;
			//		delete &dataFont;
			//		delete &tm;
			
			circle++;
			
		}
		else
		{
			return;
		}
	}
	else
		return;
	
}

/////////////////////////////////////////////////////////////////////////////
// CPrintDBView diagnostics

#ifdef _DEBUG
void CPrintDBView::AssertValid() const
{
	CFormView::AssertValid();
}

void CPrintDBView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}

CPrintDBDoc* CPrintDBView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CPrintDBDoc)));
	return (CPrintDBDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CPrintDBView message handlers


void CPrintDBView::OnStandardPrint() 
{
	// TODO: Add your command handler code here
	_variant_t var;
	CString sdate;
	try
	{
		if(!m_pRecordset->BOF)
			m_pRecordset->MoveLast();
		else
		{
			AfxMessageBox("表内数据为空");
			
			return;
		}
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}
	var = m_pRecordset->GetCollect("年/月/日");
	
	sdate = (LPCSTR)_bstr_t(var);
	CStandardPrint dlg;
	
	if (dlg.DoModal()==IDOK)
	{

		if (CStringCompare(sdate,dlg.m_sDate))
		{
			Query(dlg.m_sDate);
		}
		
		else
		{
			AfxMessageBox("您查询的日期晚于数据库中的最新记录,请您更新数据库或者重新核对日期!");
			
			return;
		}
	}
}

void CPrintDBView::Query(CString sdate)
{
	// TODO: Add your control notification handler code here
	_variant_t var;
	CString str1,str2;
	CString date,section,cping,czhui,mp,fzhui,fping;
	
	
	
	// 清空列表框
	
	str1=str2="";
	
	// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
	// 因为它有时会经常出现一些想不到的错误。jingzhou xu
	try
	{
		if(!m_pRecordset->BOF)
			m_pRecordset->MoveFirst();
		else
		{
			AfxMessageBox("表内数据为空");
			
			return;
		}
		while (!m_pRecordset->adoEOF)
		{
			
			var = m_pRecordset->GetCollect("年/月/日");
			
			str1 = (LPCSTR)_bstr_t(var);
			////////////////////////////////////////////////////////////////
			if (str1==sdate)
			{
				m_List.ResetContent();
				iScreen1=iScreen2=iScreen3=iScreenDayNum=iCone1=iCone2=iCone3=iConeDayNum=0;
				while (str1==sdate)
				{
					m_pRecordset->Move(-1);
					var=m_pRecordset->GetCollect("年/月/日");
					str1=(LPCSTR)_bstr_t(var);
				}
				m_pRecordset->Move(10);
				CString a,b,c,d,e,f,g;
				a="年/月/日";b="时间段";c="成型玻屏";
				d="成型玻锥";e="磨抛投型";f="封接投锥";g="封接投屏";
				m_List.AddString(FilStrWithNul(a,11)+FilStrWithNul(b,12)+FilStrWithNul(c,12)+FilStrWithNul(d,12)+FilStrWithNul(e,12)+FilStrWithNul(f,12)+FilStrWithNul(g,12));
				
				for (int i=1;i<31;i++)
				{
					var = m_pRecordset->GetCollect("年/月/日");
					if(var.vt != VT_NULL)
						date = (LPCSTR)_bstr_t(var);
					else
						date="";
					var = m_pRecordset->GetCollect("时间段");
					if(var.vt != VT_NULL)
						section = (LPCSTR)_bstr_t(var);
					else
						section="";
					var = m_pRecordset->GetCollect("成型玻屏");
					if(var.vt != VT_NULL)
						cping = (LPCSTR)_bstr_t(var);
					else
						cping="0";
					var = m_pRecordset->GetCollect("成型玻锥");
					if(var.vt != VT_NULL)
						czhui = (LPCSTR)_bstr_t(var);
					else
						czhui="0";

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -