📄 viewcablealarminfo.cpp
字号:
rc.top=nStartY;
rc.bottom=nStartY+m_perlineHeight;
rc.left=m_perlineHeight*3;
rc.right=m_perlineHeight*3+nPerItem;
pDC->DrawText("分机号",&rc,DT_CENTER);
rc.left=m_perlineHeight*3+nPerItem;
rc.right=m_perlineHeight*3+3*nPerItem;
pDC->DrawText("分机名",&rc,DT_CENTER);
rc.left=m_perlineHeight*3+3*nPerItem;
rc.right=m_perlineHeight*3+4*nPerItem;
pDC->DrawText("电缆号",&rc,DT_CENTER);
rc.left=m_perlineHeight*3+4*nPerItem;
rc.right=m_perlineHeight*3+6*nPerItem;
pDC->DrawText("报警类型",&rc,DT_CENTER);
rc.left=m_perlineHeight*3+6*nPerItem;
rc.right=m_perlineHeight*3+7*nPerItem;
pDC->DrawText("距离",&rc,DT_CENTER);
rc.left=m_perlineHeight*3+7*nPerItem;
// rc.right=m_perlineHeight*3+10*nPerItem;
rc.right=m_paperWidth-m_perlineHeight*4;
pDC->DrawText("报警时间",&rc,DT_CENTER);
/* rc.left=m_perlineHeight*3+10*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*3;
rc.right=m_perlineHeight*3+nPerItem;
str=m_list1.GetItemText(nStartRecord-1+i, 0);
pDC->DrawText(str,&rc,DT_CENTER);
rc.left=m_perlineHeight*3+nPerItem;
rc.right=m_perlineHeight*3+3*nPerItem;
str=m_list1.GetItemText(nStartRecord-1+i, 1);
pDC->DrawText(str,&rc,DT_CENTER);
rc.left=m_perlineHeight*3+3*nPerItem;
rc.right=m_perlineHeight*3+4*nPerItem;
str=m_list1.GetItemText(nStartRecord-1+i, 2);
pDC->DrawText(str,&rc,DT_CENTER);
rc.left=m_perlineHeight*3+4*nPerItem;
rc.right=m_perlineHeight*3+6*nPerItem;
str=m_list1.GetItemText(nStartRecord-1+i, 3);
pDC->DrawText(str,&rc,DT_CENTER);
rc.left=m_perlineHeight*3+6*nPerItem;
rc.right=m_perlineHeight*3+7*nPerItem;
str=m_list1.GetItemText(nStartRecord-1+i, 4);
pDC->DrawText(str,&rc,DT_CENTER);
rc.left=m_perlineHeight*3+7*nPerItem;
// rc.right=m_perlineHeight*3+10*nPerItem;
rc.right=m_paperWidth-m_perlineHeight*3;
str=m_list1.GetItemText(nStartRecord-1+i, 5);
pDC->DrawText(str,&rc,DT_CENTER);
/* rc.left=m_perlineHeight*3+10*nPerItem;
rc.right=m_paperWidth-m_perlineHeight*3;
str=m_list1.GetItemText(nStartRecord-1+i, 6);
pDC->DrawText(str,&rc,DT_CENTER);
*/
}
}
void CViewCableAlarmInfo::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[1],&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 CViewCableAlarmInfo::OnButton3() //删除
{
// TODO: Add your control notification handler code here
CString str1,str2;
UpdateData(TRUE);
if(AfxMessageBox("你真想删除当前列表中所有记录吗?",MB_YESNO|MB_ICONWARNING)==IDNO)
return;
if(m_combo1.GetCurSel()==0)//按时间查询
{
if(m_edit1==""||m_edit2=="")
{
MessageBox("没有正确地输入查询条件!请重新输入","提示信息");
return;
}
m_table.m_strSort=_T("[alarmtime]");
// m_table.m_strFilter=_T("[alarmtime] Between '" + m_edit1 + "' AND '" + m_edit2+"'");
m_table.m_strFilter=_T("[alarmtime] Between #" + m_edit1 + "# AND #" + m_edit2+"#");
if(m_table.Requery())
{
m_list1.DeleteAllItems();
while(!m_table.IsEOF())
{
m_table.Delete();
m_table.MoveNext();
}
}
}
else if(m_combo1.GetCurSel()==1)
{
if(m_edit3<0||m_edit3>999)
{
MessageBox("没有正确地输入分机号!请重新输入","提示信息");
return;
}
m_table.m_strSort=_T("[alarmtime]");
str1.Format("%d",m_edit3*100);
str2.Format("%d",m_edit3*100+16);
m_table.m_strFilter=_T("[cablenumber] Between " + str1 + " AND " + str2);
if(m_table.Requery())
{
m_list1.DeleteAllItems();
while(!m_table.IsEOF())
{
m_table.Delete();
m_table.MoveNext();
}
}
}
else
{
m_table.m_strSort=_T("[alarmtime]");
str1.Format("%d",m_combo2.GetCurSel()+1);
m_table.m_strFilter=_T("[alarmtype] = " + str1);
if(m_table.Requery())
{
m_list1.DeleteAllItems();
while(!m_table.IsEOF())
{
m_table.Delete();
m_table.MoveNext();
}
}
}
}
void CViewCableAlarmInfo::OnSelchangeCombo1()
{
// TODO: Add your control notification handler code here
int nIndex=m_combo1.GetCurSel();
if(nIndex==0)//按时间查询
{
CTime time=CTime::GetCurrentTime();
m_edit1=time.Format("%Y-%m-%d");
m_edit1+=" 00:00:00";
m_edit2=time.Format("%Y-%m-%d %H:%M:%S");
GetDlgItem(IDC_MYSTATIC)->SetWindowPlacement(&m_mystaticwnd);
GetDlgItem(IDC_EDIT1)->SetWindowPlacement(&m_editwnd[0]);
GetDlgItem(IDC_EDIT2)->SetWindowPlacement(&m_editwnd[1]);
WINDOWPLACEMENT wndplace;
wndplace.rcNormalPosition.left = 2000;
wndplace.rcNormalPosition.right = 2000;
wndplace.rcNormalPosition.top = 2000;
wndplace.rcNormalPosition.bottom = 2000;
GetDlgItem(IDC_EDIT3)->SetWindowPlacement(&wndplace);
GetDlgItem(IDC_COMBO2)->SetWindowPlacement(&wndplace);
}
else if(nIndex==1)//按分机号查询
{
m_edit3=0;
GetDlgItem(IDC_EDIT3)->SetWindowPlacement(&m_editwnd[2]);
WINDOWPLACEMENT wndplace;
wndplace.rcNormalPosition.left = 2000;
wndplace.rcNormalPosition.right = 2000;
wndplace.rcNormalPosition.top = 2000;
wndplace.rcNormalPosition.bottom = 2000;
GetDlgItem(IDC_MYSTATIC)->SetWindowPlacement(&wndplace);
GetDlgItem(IDC_EDIT1)->SetWindowPlacement(&wndplace);
GetDlgItem(IDC_EDIT2)->SetWindowPlacement(&wndplace);
GetDlgItem(IDC_COMBO2)->SetWindowPlacement(&wndplace);
}
else//按报警类型
{
m_combo2.SetCurSel(0);
GetDlgItem(IDC_COMBO2)->SetWindowPlacement(&m_combownd);
WINDOWPLACEMENT wndplace;
wndplace.rcNormalPosition.left = 2000;
wndplace.rcNormalPosition.right = 2000;
wndplace.rcNormalPosition.top = 2000;
wndplace.rcNormalPosition.bottom = 2000;
GetDlgItem(IDC_MYSTATIC)->SetWindowPlacement(&wndplace);
GetDlgItem(IDC_EDIT1)->SetWindowPlacement(&wndplace);
GetDlgItem(IDC_EDIT2)->SetWindowPlacement(&wndplace);
GetDlgItem(IDC_EDIT3)->SetWindowPlacement(&wndplace);
}
UpdateData(FALSE);
}
void CViewCableAlarmInfo::OnExport3()
{
// 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 报警信息表 (分机号 NUMBER,分机名 TEXT,电缆号 TEXT,报警类型 TEXT,距离 NUMBER,";
sSql+="报警时间 TEXT)";
database.ExecuteSQL(sSql);
str="(分机号,分机名,电缆号,";
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);
sSql+="',";
}
sSql+=m_list1.GetItemText(i,4);
sSql+=",";
sSql+="'";
sSql+=m_list1.GetItemText(i,5);
sSql+="'";
sSql+=")";
database.ExecuteSQL(sSql);
}
}
database.Close();
}
CATCH_ALL(e)
{
TRACE0("%s","不能对表重新写入!");
}
END_CATCH_ALL;
}
BOOL CViewCableAlarmInfo::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 + -