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

📄 viewdutyinfo.cpp

📁 电缆故障监控系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	for(i=0;i<=nLine;i++)
	{
	   nY1=nY2=nStartY+i*m_perlineHeight;
	   pDC->MoveTo(nX1,nY1);
	   pDC->LineTo(nX2,nY2);
	}
	nY1=nStartY;
	nY2=nStartY+nLine*m_perlineHeight;
    nPerItem=(m_paperWidth-m_perlineHeight*8)/5;
	nX1=nX2=m_perlineHeight*4;
	pDC->MoveTo(nX1,nY1);
	pDC->LineTo(nX2,nY2);
	nX1=nX2=m_perlineHeight*4+nPerItem;
	pDC->MoveTo(nX1,nY1);
	pDC->LineTo(nX2,nY2);
	nX1=nX2=m_perlineHeight*4+3*nPerItem;
	pDC->MoveTo(nX1,nY1);
	pDC->LineTo(nX2,nY2);
	nX1=nX2=m_paperWidth-m_perlineHeight*4;
	pDC->MoveTo(nX1,nY1);
	pDC->LineTo(nX2,nY2);
}

void CViewDutyInfo::DrawTexttoGrid(CDC* pDC,int nStartY,int nStartRecord,int nEndRecord)
{
    CString str;
	int i,nPerItem;
    CRect rc;

    nPerItem=(m_paperWidth-m_perlineHeight*8)/5;
    nStartY+=(int)(0.1*m_perlineHeight);

    rc.top=nStartY;
	rc.bottom=nStartY+m_perlineHeight;

	rc.left=m_perlineHeight*4;
	rc.right=m_perlineHeight*4+nPerItem;
	pDC->DrawText("用户名",&rc,DT_CENTER);

	rc.left=m_perlineHeight*4+nPerItem;
	rc.right=m_perlineHeight*4+3*nPerItem;
	pDC->DrawText("接班时间",&rc,DT_CENTER);

	rc.left=m_perlineHeight*4+3*nPerItem;
	rc.right=m_paperWidth-m_perlineHeight*4;
	pDC->DrawText("交班时间",&rc,DT_CENTER);

	for(i=0;i<nEndRecord-nStartRecord+1;i++)
	{
		rc.top=nStartY+m_perlineHeight*(i+1);
		rc.bottom=nStartY+m_perlineHeight*(i+2);

		rc.left=m_perlineHeight*4;
		rc.right=m_perlineHeight*4+nPerItem;
		str=m_list1.GetItemText(nStartRecord-1+i, 0);
		pDC->DrawText(str,&rc,DT_CENTER);

		rc.left=m_perlineHeight*4+nPerItem;
		rc.right=m_perlineHeight*4+3*nPerItem;
		str=m_list1.GetItemText(nStartRecord-1+i, 1); 
		pDC->DrawText(str,&rc,DT_CENTER);

		rc.left=m_perlineHeight*4+3*nPerItem;
		rc.right=m_paperWidth-m_perlineHeight*4;
		str=m_list1.GetItemText(nStartRecord-1+i, 2); 
		pDC->DrawText(str,&rc,DT_CENTER);

	}
}

void CViewDutyInfo::Print(CDC* pDC, CPrintInfo* pInfo)
{
	//4676*6744
	CFont  newFont;
	CRect rc;
	CFont* pOldFont;
    CString str;

	 pDC->StartPage();
     if(pInfo->m_nCurPage==1)
	 {
		 //打印标题
		 newFont.CreateFont(m_perCharHeight*2,0,0,0,FW_NORMAL,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH&FF_SWISS,"宋体");
		 pOldFont=(CFont*)pDC->SelectObject(&newFont);
		 rc=pInfo->m_rectDraw;
		 rc.top=m_perlineHeight*4;
		 rc.bottom=m_perlineHeight*6;
		 pDC->DrawText(strTitleArray[0],&rc,DT_CENTER);
		 pDC->SelectObject(pOldFont);
		 newFont.DeleteObject();
	 }
     if(pInfo->m_nCurPage==1)
	 {
		 m_nStartRecord=1;
		 m_nEndRecord=m_linesPerPage-11;
		 if(m_nEndRecord>m_list1.GetItemCount())
            m_nEndRecord=m_list1.GetItemCount();
		 DrawGrid(pDC,m_perlineHeight*6,m_nEndRecord-m_nStartRecord+1+1);
		 DrawTexttoGrid(pDC,m_perlineHeight*6,m_nStartRecord,m_nEndRecord);
	 }
     else
	 {
		 m_nStartRecord=m_linesPerPage-11+(pInfo->m_nCurPage-2)*(m_linesPerPage-9)+1;
		 m_nEndRecord=m_nStartRecord+m_linesPerPage-9;
		 if(m_nEndRecord>m_list1.GetItemCount())
            m_nEndRecord=m_list1.GetItemCount();
		 DrawGrid(pDC,m_perlineHeight*4,m_nEndRecord-m_nStartRecord+1+1);
		 DrawTexttoGrid(pDC,m_perlineHeight*4,m_nStartRecord,m_nEndRecord);
	 }
	//打印页码
	newFont.CreateFont((int)(m_perCharHeight*0.7),0,0,0,FW_NORMAL,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH&FF_SWISS,"宋体");
	pOldFont=(CFont*)pDC->SelectObject(&newFont);
	str.Format("-第%d页-",pInfo->m_nCurPage);
	pDC->TextOut(m_paperWidth-m_perlineHeight*6,(m_paperHeight-m_perlineHeight*4),str);
	pDC->SelectObject(pOldFont);
	newFont.DeleteObject();

}
void CViewDutyInfo::OnButton1() //查询
{
	// TODO: Add your control notification handler code here
	CString str;
	int ntotalItem;
	CTime time;

	UpdateData(TRUE);
	if(m_modectl.GetCurSel()==0)//按时间查询
	{
	   if(m_edit1==""||m_edit2=="")
	   {
		   MessageBox("没有正确地输入查询条件!请重新输入","提示信息");
		   return;
	   }
       m_table.m_strSort=_T("[dutytime]");
     //  m_table.m_strFilter=_T("[dutytime] Between '" + m_edit1 + "' AND '" + m_edit2+"'"); 
	   m_table.m_strFilter=_T("[dutytime] Between #" + m_edit1 + "# AND #" + m_edit2+"#"); 

       if(m_table.Requery())
	   {
           m_list1.DeleteAllItems();
		   while(!m_table.IsEOF())
		   {
			   ntotalItem = m_list1.GetItemCount();
			   m_list1.InsertItem(ntotalItem,m_table.m_Name);
			   time=m_table.m_dutytime;
		       if(time==0) str="";
		       else str=time.Format("%Y-%m-%d %H:%M:%S");
		       m_list1.SetItem(ntotalItem,1,LVIF_TEXT,_T(str),0,0,0,NULL);
		       time=m_table.m_lefttime;
		       if(time==0) str="";
		       else str=time.Format("%Y-%m-%d %H:%M:%S");
			   m_list1.SetItem(ntotalItem,2,LVIF_TEXT,_T(str),0,0,0,NULL);
			   m_list1.SetItem(ntotalItem,3,LVIF_TEXT,_T(m_table.m_dutyrecord),0,0,0,NULL);
			   m_table.MoveNext();
		   }
	   }
	}
	else
	{
		if(m_edit1=="")
		{
			MessageBox("没有正确地输入查询条件!请重新输入","提示信息");
			return;
		}
		m_table.m_strSort=_T("[dutytime]");
		m_table.m_strFilter=_T("[Name] = '" + m_edit1 + "'"); 
		if(m_table.Requery())
		{
			m_list1.DeleteAllItems();
			while(!m_table.IsEOF())
			{
				ntotalItem = m_list1.GetItemCount();
				m_list1.InsertItem(ntotalItem,m_table.m_Name);
				time=m_table.m_dutytime;
				if(time==0)  str="";
				else str=time.Format("%Y-%m-%d %H:%M:%S");
				m_list1.SetItem(ntotalItem,1,LVIF_TEXT,_T(str),0,0,0,NULL);
				time=m_table.m_lefttime;
				if(time==0)  str="";
                else str=time.Format("%Y-%m-%d %H:%M:%S");
				m_list1.SetItem(ntotalItem,2,LVIF_TEXT,_T(str),0,0,0,NULL);
				m_list1.SetItem(ntotalItem,3,LVIF_TEXT,_T(m_table.m_dutyrecord),0,0,0,NULL);
				m_table.MoveNext();
			}
		}
	}	
}

void CViewDutyInfo::OnExport4() 
{
	// TODO: Add your control notification handler code here
	if(!bHasExcelDriver())
	{
		MessageBox("没有安装Microsoft Excel Driver!","提示信息");
		return;
	}
	CString strPathname;

    CFileDialog filesavebox(FALSE,"xls",/*"default.xls"*/NULL,OFN_HIDEREADONLY/*|OFN_OVERWRITEPROMPT*/,"Excel文件(*.xls)|*.xls|",NULL);	
	if(filesavebox.DoModal()!=IDOK) return;
	strPathname=filesavebox.GetPathName();
	CDatabase database;
	CString   sDriver="Microsoft Excel Driver (*.xls)";
	CString sSql;
	CString str;
	int i,nTotalItem,j;
	TRY
	{
		sSql.Format("DRIVER={%s};DSN=;FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s",sDriver,strPathname,strPathname);
		if(database.OpenEx(sSql,CDatabase::noOdbcDialog))
		{
    		sSql="CREATE TABLE 值班记录表 (用户名 TEXT,接班时间 TEXT,交班时间 TEXT,值班记录 TEXT)";
			database.ExecuteSQL(sSql);
			str="(用户名,接班时间,交班时间,值班记录)";
            nTotalItem=m_list1.GetItemCount();
			for(i=0;i<nTotalItem;i++)
			{
				sSql="INSERT INTO 值班记录表 ";
				sSql+=str;
				sSql+=" VALUES(";
				for(j=0;j<4;j++)
				{
					sSql+="'";
					sSql+=m_list1.GetItemText(i,j);
					if(j<3)
					  sSql+="',";
					else
					  sSql+="'";
				}
				sSql+=")";
				database.ExecuteSQL(sSql);
			}
		}
        database.Close();
	}
	CATCH_ALL(e)
	{
		
		TRACE0("%s","不能对表重新写入!");
	}
	END_CATCH_ALL;				
}
BOOL CViewDutyInfo::bHasExcelDriver()
{
    char szBuf[2001];
	WORD cbBufMax=2000;
	WORD cbBufOut;
	char* pszBuf=szBuf;
	CString sDriver;
	if(!SQLGetInstalledDrivers(szBuf,cbBufMax,&cbBufOut)) return FALSE;
	do
	{
		if(strstr(pszBuf,"Excel")!=0)
		   return TRUE;
		pszBuf=strchr(pszBuf,'\0')+1;
	}
	while(pszBuf[0]!='\0');
	return FALSE;
}

⌨️ 快捷键说明

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