📄 manager.cpp
字号:
m_List.SetItemText (i,1,"未知类别");
Holder=Myset->GetCollect ("软件名称");//
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight(" ");
m_List.SetItemText (i,2,mystr);}
else
m_List.SetItemText (i,2,"未知名称");
Holder=Myset->GetCollect ("格式");//
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight(" ");
m_List.SetItemText (i,3,mystr);}
else
m_List.SetItemText (i,3,"未知格式");
Holder=Myset->GetCollect ("软件编号");//
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight(" ");
m_List.SetItemText (i,4,mystr);}
else
m_List.SetItemText (i,4,"未知编号");
Holder=Myset->GetCollect ("申请日期");//
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight(" ");
m_List.SetItemText (i,5,mystr);}
else
m_List.SetItemText (i,5,"未知日期");
Holder=Myset->GetCollect ("申请号");//
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight(" ");
m_List.SetItemText (i,6,mystr);}
else
m_List.SetItemText (i,6,"未知号码");
i++;
Myset->MoveNext();
}
Myset->Close();
m_List.SetRedraw (true);
}
void CManager::OnUserAllInfo()
{
// TODO: Add your control notification handler code here
//GetDlgItem(IDC_BUTTON6)->EnableWindow(false);
if(m_DelSum>0)DeleteRemain();
m_PreType=3;
((CButton*)GetDlgItem(IDC_RADIO5))->SetCheck(false);
InitList();
m_List.SetRedraw (false);
CString mysql;
mysql.Format("SELECT * FROM UserInfo ORDER BY 用户名");
_bstr_t sql=mysql;
_bstr_t source=m_strSource;
_RecordsetPtr Myset;
Myset.CreateInstance (__uuidof(Recordset));
try{
Myset->Open (sql,source,adOpenDynamic,adLockOptimistic,adCmdText);}
catch(_com_error &e){
AfxMessageBox(e.ErrorMessage ());return;
}
CString str1,mystr;
_variant_t Holder;
int i=0;
while(!Myset->adoEOF ){
Holder=Myset->GetCollect ("用户名");//
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight(" ");
m_List.InsertItem (i,mystr);}
else
m_List.InsertItem (i,"未知用户名");
Holder=Myset->GetCollect ("姓名");//
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight(" ");
m_List.SetItemText (i,1,mystr);}
else
m_List.SetItemText (i,1,"未知姓名");
Holder=Myset->GetCollect ("部门");//
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight(" ");
m_List.SetItemText (i,2,mystr);}
else
m_List.SetItemText (i,2,"未知部门");
Holder=Myset->GetCollect ("联系电话");//
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight(" ");
m_List.SetItemText (i,3,mystr);}
else
m_List.SetItemText (i,3,"未知电话");
Holder=Myset->GetCollect ("登记时间");//
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight(" ");
m_List.SetItemText (i,4,mystr);}
else
m_List.SetItemText (i,4,"未知日期");
Holder=Myset->GetCollect ("详细信息");//
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight(" ");
m_List.SetItemText (i,5,mystr);}
else
m_List.SetItemText (i,5,"未知信息");
i++;
Myset->MoveNext();
}
Myset->Close();
m_List.SetRedraw (true);
}
void CManager::DeleteFirst()
{
CString sql_,ApplyNumber,ChatType,strGeshi;
if(m_treatType==1){
ChatType=a[b[1]*10+1];
ChatType.TrimRight (" ");
if(ChatType=="借"){
ApplyNumber=a[b[1]*10+4];
strGeshi=a[b[1]*10+3];
sql_.Format ("update SoftDocInfo set %s ='在家' where 软件编号 ='%s'",strGeshi,ApplyNumber);
_bstr_t sql2=sql_;
try{m_DBCnt->Execute(sql2,NULL,adCmdText);}
catch(_com_error &e){
AfxMessageBox(e.ErrorMessage ());return;
}
}//删除记录
ApplyNumber=a[b[1]*10+6];
sql_.Format ("delete from ApplyTable where 申请号 ='%s'",ApplyNumber);}
else
{ ApplyNumber=a[b[1]*10+7];
sql_.Format ("delete from StateTable where 状态编号 ='%s'",ApplyNumber);}
_bstr_t sql=sql_;
try{
m_DBCnt->Execute(sql,NULL,adCmdText);}
catch(_com_error &e){
AfxMessageBox(e.ErrorMessage ());return;
}
}
void CManager::DeleteRemain()
{
CString sql_,ApplyNumber,ChatType,strGeshi;
for(int i=1;i<m_DelSum+1;i++){
if(m_PreType==1){
ChatType=a[b[i]*10+1];
ChatType.TrimRight (" ");
if(ChatType=="借"){
ApplyNumber=a[b[1]*10+4];
strGeshi=a[b[i]*10+3];
sql_.Format ("update SoftDocInfo set %s ='在家' where 软件编号 ='%s'",strGeshi,ApplyNumber);
_bstr_t sql2=sql_;
try{m_DBCnt->Execute(sql2,NULL,adCmdText);}
catch(_com_error &e){
AfxMessageBox(e.ErrorMessage ());return;
}
}//删除记录
ApplyNumber=a[b[i]*10+6];
sql_.Format ("delete from ApplyTable where 申请号 ='%s'",ApplyNumber);}
if(m_PreType==0)
{ ApplyNumber=a[b[i]*10+7];
sql_.Format ("delete from StateReport where 状态编号 ='%s'",ApplyNumber);}
if(m_PreType==0)
{ ApplyNumber=a[b[i]*10];
sql_.Format ("delete from UserInfo where 用户名 ='%s'",ApplyNumber);}
_bstr_t sql=sql_;
try{
m_DBCnt->Execute(sql,NULL,adCmdText);}
catch(_com_error &e){
AfxMessageBox(e.ErrorMessage ());return;
}
}
m_DelSum=0;
}
void CManager::OnDestroy()
{
CDialog::OnDestroy();
// TODO: Add your message handler code here
if(m_DelSum>0)DeleteRemain();
m_PreType=3;
if(m_DBCnt->GetState()==adStateOpen)m_DBCnt->Close();
}
void CManager::OnClearlog()
{
// TODO: Add your control notification handler code here
int choice=AfxMessageBox("你将清楚全部操作日志,日志将不可恢复,确定删除吗?",MB_OKCANCEL|MB_ICONEXCLAMATION);
if(choice==IDOK){//清除操作日志
_bstr_t strSQL("TRUNCATE TABLE DateLog");
try{
m_DBCnt->Execute(strSQL,NULL,adCmdText);
}
catch(_com_error &e){
AfxMessageBox(e.ErrorMessage ());return;
}
AfxMessageBox("管理员,操作日志已成功删除,请进行下一步操作!");
}
}
void CManager::OnModify()
{
// TODO: Add your command handler code here
if(m_treatType==1){
POSITION pos=m_List.GetFirstSelectedItemPosition();//判断是否选中记录
if(pos==NULL){AfxMessageBox("没有选中记录",MB_ICONEXCLAMATION);return;}
int i=m_List.GetSelectionMark();
theApp.mSoftName=m_List.GetItemText(i,2);
theApp.mSoftNumber=m_List.GetItemText(i,4);
theApp.mSoftType=m_List.GetItemText(i,1);
theApp.mSoftGeshi=m_List.GetItemText(i,3);
CChangeApply dlg;
this->ShowWindow(SW_HIDE);
dlg.DoModal();
this->ShowWindow(SW_SHOW);
m_List.SetRedraw(false);//写入修改数据
m_List.SetItemText(i,3,theApp.mSoftGeshi);
m_List.SetRedraw(true);
}}
void CManager::OnRclickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
POSITION pos=m_List.GetFirstSelectedItemPosition();
if(pos==NULL)return;//判断是否选中记录
MSG msg;
GetMessage(&msg,NULL,0,0);//获得当前点
POINT point= msg.pt;
((CManager*)(GetDlgItem(IDC_LIST1)->GetParent()))->PopupMenu(point);//先获得父窗口指针,在使用它的函数
*pResult = 0;
}
void CManager::PopupMenu(POINT pt)
{
CMenu myPopupMenu;
myPopupMenu.LoadMenu (IDR_POPUPMENU);
CMenu *pPopup=myPopupMenu.GetSubMenu (0);
switch(m_treatType){
case 0:{
pPopup->EnableMenuItem(IDR_ACCEPT, MF_GRAYED/*MF_GRAYED*/);
pPopup->EnableMenuItem(IDR_MODIFY, MF_GRAYED);
if(m_DelSum<1) pPopup->EnableMenuItem(IDR_UNDO, MF_GRAYED);
break;}
case 1:
{ if(m_DelSum<1) pPopup->EnableMenuItem(IDR_UNDO, MF_GRAYED);
break;}
case 2:
{pPopup->EnableMenuItem(IDR_ACCEPT, MF_GRAYED/*MF_GRAYED*/);
pPopup->EnableMenuItem(IDR_MODIFY, MF_GRAYED);
pPopup->EnableMenuItem(IDR_DEL, MF_GRAYED);
pPopup->EnableMenuItem(IDR_UNDO, MF_GRAYED);
break; }
case 4:
{
pPopup->EnableMenuItem(IDR_ACCEPT, MF_GRAYED/*MF_GRAYED*/);
pPopup->EnableMenuItem(IDR_MODIFY, MF_GRAYED);
pPopup->EnableMenuItem(IDR_DEL, MF_GRAYED);
pPopup->EnableMenuItem(IDR_UNDO, MF_GRAYED);
break;}
case 3:
{
pPopup->EnableMenuItem(IDR_ACCEPT, MF_GRAYED/*MF_GRAYED*/);
pPopup->EnableMenuItem(IDR_MODIFY, MF_GRAYED);
if(m_DelSum<1) pPopup->EnableMenuItem(IDR_UNDO, MF_GRAYED);
break;}
}
pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,pt.x,pt.y,this);
}
void CManager::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
POSITION pos=m_List.GetFirstSelectedItemPosition();
if(pos==NULL)return;//判断是否选中记录
int i=m_List.GetSelectionMark ();
CString strColText[11];
CString strItemText[11];
CString OutPutStr="";
LVCOLUMN lvc;
char text[100];
lvc.mask = LVCF_TEXT|LVCF_SUBITEM;
lvc.pszText = text;
lvc.cchTextMax = 100;
int shumu=m_List.GetItemCount ();
for(int j=0;j<m_ListNumber;j++)
{
m_List.GetColumn(j, &lvc);
strColText[j] = lvc.pszText;
strItemText[j]=m_List.GetItemText(i,j);
OutPutStr=OutPutStr+strColText[j]+":"+strItemText[j]+_T("\n");
}
AfxMessageBox(OutPutStr);
*pResult = 0;
}
void CManager::ConnectDataBase()
{
}
void CManager::OnUsercopy()
{
// TODO: Add your command handler code here
}
void CManager::OnPrint() //打印列表框的记录
{
// TODO: Add your control notification handler code here
typedef struct tagColAtt//存储各列信息
{
int nColIndex;
CString strColText;
int nPrintX;
int nSubItemIndex;
}COLATT;
PRINTDLG pd;
pd.lStructSize = sizeof(PRINTDLG);//初始化打印机
pd.Flags = PD_RETURNDC;
pd.hDC = NULL;
pd.hwndOwner = NULL;
pd.hInstance = NULL;
pd.nMaxPage = 1;
pd.nMinPage = 1;
pd.nFromPage = 1;
pd.nToPage = 1;
pd.nCopies = 1;
pd.hDevMode = NULL;
pd.hDevNames = NULL;
//显示打印对话框,由用户来设定纸张大小等。
if(!PrintDlg(&pd)) {AfxMessageBox("ERROR");return; }
ASSERT(pd.hDC!=NULL);
int nHorRes = GetDeviceCaps(pd.hDC, HORZRES);
int nVerRes = GetDeviceCaps(pd.hDC, VERTRES);
int nXMargin = 2;
int nYMargin = 2;
TEXTMETRIC tm;
GetTextMetrics(pd.hDC, &tm);
int nCharHeight = tm.tmHeight;
int nCharWidth = tm.tmAveCharWidth;
CHeaderCtrl* pHeader = m_List.GetHeaderCtrl();
int nColCount = pHeader->GetItemCount();//获得列的个数
int nLineCount = m_List.GetItemCount();//获得行的个数
int ColOrderArray[100];
COLATT ca[100];//定义数组记录打印的文字
m_List.GetColumnOrderArray(ColOrderArray, nColCount);
int nColX =nXMargin*nCharWidth;//X方向的移动距离
//检索各列的信息,确定列标题的内容长度。
for(int i =0 ; i< nColCount; i++)//逐行打印
{
ca[i].nColIndex = ColOrderArray[i];
LVCOLUMN lvc;//取得该列的表头
char text[100];
lvc.mask = LVCF_TEXT|LVCF_SUBITEM;
lvc.pszText = text;
lvc.cchTextMax = 100;
m_List.GetColumn(ca[i].nColIndex, &lvc);
ca[i].strColText = lvc.pszText;//
ca[i].nSubItemIndex = lvc.iSubItem;
ca[i].nPrintX = nColX;
nColX += nCharWidth * strlen(ca[i].strColText);//以表头宽定义打印宽度
if(nColX > nHorRes) //如果如果此时的宽度已大于水平极限宽度
{
DeleteDC(pd.hDC);
AfxMessageBox("字段太多,无法在一行内打印,请试用较大的纸,或横向打印。");
return;
}
}
DOCINFO di;
di.cbSize = sizeof(DOCINFO);
di.lpszDocName = "ListCtrl Data Printing";
di.lpszOutput = (LPTSTR) NULL;
di.lpszDatatype = (LPTSTR) NULL;
di.fwType = 0;
StartDoc(pd.hDC, &di);
StartPage(pd.hDC);
//调整各列的宽度,以使各列在后面的打印输出时更均匀的打印在纸上。
int space = (nHorRes-nXMargin*nCharWidth-nColX) / (nColCount -1);
for(i =1; i<nColCount; i++)
{
ca[i].nPrintX += i*space;
}
//输出列标题
for(i =0; i<nColCount; i++)
TextOut(pd.hDC, ca[i].nPrintX, nYMargin,
ca[i].strColText, strlen(ca[i].strColText));
int nMaxLinePerPage = nVerRes/nCharHeight -3;
int nCurPage =1;
//输出各列的数据
for(i =0; i<nLineCount; i++)//行
{
for(int j =0; j<nColCount; j++)//列
{
if(i+1-(nCurPage-1)*nMaxLinePerPage > nMaxLinePerPage)
{
//新的一页
EndPage(pd.hDC);
StartPage(pd.hDC);
nCurPage ++;
}
CString subitem = m_List.GetItemText(i, j/*ca[j].nSubItemIndex*/);//取出列表框的字段
TextOut(pd.hDC, ca[j].nPrintX,
nYMargin+(i+1-(nCurPage-1)*nMaxLinePerPage)*nCharHeight,
subitem, strlen(subitem));
}
}
EndPage(pd.hDC);
EndDoc(pd.hDC);
//打印结束
DeleteDC(pd.hDC);
return;
}
void CManager::OnSoftIn()
{
// TODO: Add your control notification handler code here
this->ShowWindow(SW_HIDE);
CMovieIn dlg;
dlg.DoModal ();
this->ShowWindow(SW_SHOW);
}
void CManager::OnDelSoft()
{
// TODO: Add your control notification handler code here
this->ShowWindow(SW_HIDE);
CSoftDelete dlg;
dlg.DoModal ();
this->ShowWindow(SW_SHOW);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -