Dlg_CardInput.cpp 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. // Dlg_CardInput.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "StoneU_Door.h"
  5. #include "Dlg_CardInput.h"
  6. #include ".\dlg_cardinput.h"
  7. #include "GlobalFun.h"
  8. #include "Global.h"
  9. #include "mdlProject.h"
  10. #include "DBConnection.h"
  11. // CDlg_CardInput 对话框
  12. IMPLEMENT_DYNAMIC(CDlg_CardInput, CDialog)
  13. CDlg_CardInput::CDlg_CardInput(CWnd* pParent /*=NULL*/)
  14. : CDialog(CDlg_CardInput::IDD, pParent)
  15. {
  16. }
  17. CDlg_CardInput::~CDlg_CardInput()
  18. {
  19. }
  20. void CDlg_CardInput::DoDataExchange(CDataExchange* pDX)
  21. {
  22. CDialog::DoDataExchange(pDX);
  23. DDX_Control(pDX, IDC_LIST, m_ctrlList);
  24. DDX_Control(pDX, IDC_BTN_DELETE, m_Btn_Del);
  25. DDX_Control(pDX, IDC_BTN_IMPORT, m_Btn_Add);
  26. DDX_Control(pDX, IDCANCEL, m_Btn_Exit);
  27. }
  28. BEGIN_MESSAGE_MAP(CDlg_CardInput, CDialog)
  29. ON_BN_CLICKED(IDC_BTN_DELETE, OnBnClickedBtnDelete)
  30. ON_BN_CLICKED(IDC_BTN_IMPORT, OnBnClickedBtnImport)
  31. ON_WM_CTLCOLOR()
  32. ON_WM_ERASEBKGND()
  33. END_MESSAGE_MAP()
  34. // CDlg_CardInput 消息处理程序
  35. BOOL CDlg_CardInput::OnInitDialog()
  36. {
  37. CDialog::OnInitDialog();
  38. // TODO: 在此添加额外的初始化
  39. GetDlgItem(IDC_STA_MSG)->SetWindowText( "注:Excel表中的第一行数据不在操作范围,如果第一行是数据,请在第一行之前插入空行。\r\n "\
  40. " 列表的第一列为用户姓名,第二列为卡号码,第三列为部门,第四列为工号,第五列为备注。" );
  41. UpdateData( false );
  42. InitList();
  43. ReadExcelToList( &m_ctrlList,m_sExcelPath );
  44. return TRUE; // return TRUE unless you set the focus to a control
  45. // 异常: OCX 属性页应返回 FALSE
  46. }
  47. int CDlg_CardInput::InitList(void)
  48. {
  49. //m_List_Info.InsertColumn( 0, "执行时刻" );
  50. //m_List_Info.InsertColumn( 1, "人员信息" );
  51. //m_List_Info.InsertColumn( 2, "描述" );
  52. //m_List_Info.InsertColumn( 3, "信息" );
  53. //m_List_Info.SetColumnWidth( 0, 120 );
  54. //m_List_Info.SetColumnWidth( 1, 200);
  55. //m_List_Info.SetColumnWidth( 2, 200);
  56. //m_List_Info.SetColumnWidth( 3, 650);
  57. //m_List_Info.SetExtendedStyle(m_List_Info.GetExtendedStyle() | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
  58. //m_List_Rule.SetColColor(0,RGB(10,150,20)); //设置列背景色
  59. //m_List_Rule.SetColColor(2,RGB(30,100,90)); //设置列背景色
  60. //m_List_Rule.SetBkColor(RGB(50,10,10)); //设置背景色
  61. //m_List_Rule.SetItemColor(1,1,RGB(100,100,10)); //设置指定单元背景色
  62. //m_List_Rule.SetRowHeigt(25); //设置行高度
  63. //m_List_Rule.SetHeaderHeight(1.5); //设置头部高度
  64. //m_List_Rule.SetHeaderFontHW(16,0); //设置头部字体高度,和宽度,0表示缺省,自适应
  65. //m_List_Record.SetHeaderTextColor(RGB(0,0,0)); //设置头部字体颜色
  66. //m_List_Rule.SetTextColor(RGB(0,255,255)); //设置文本颜色
  67. m_ctrlList.SetHeaderBKColor(213,222,242,8); //设置头部背景色
  68. ////m_List_Rule.SetFontHW(15,0); //设置字体高度,和宽度,0表示缺省宽度
  69. //m_List_Rule.SetColTextColor(2,RGB(255,255,100)); //设置列文本颜色
  70. //m_List_Rule.SetItemTextColor(3,1,RGB(255,0,0)); //设置单元格字体颜色
  71. m_ctrlList.InsertColumn(0,"姓名",LVCFMT_LEFT,130);
  72. m_ctrlList.InsertColumn(1,g_strCardNumber,LVCFMT_LEFT,130);
  73. m_ctrlList.InsertColumn(2,g_strClass,LVCFMT_LEFT,130);
  74. m_ctrlList.InsertColumn(3,g_strJobNumber,LVCFMT_LEFT,130);
  75. m_ctrlList.InsertColumn(4,"备注",LVCFMT_LEFT,200);
  76. SetWindowLong(m_ctrlList.m_hWnd ,GWL_EXSTYLE,WS_EX_CLIENTEDGE);
  77. m_ctrlList.SetExtendedStyle(LVS_EX_GRIDLINES); //设置扩展风格为网格
  78. ::SendMessage(m_ctrlList.m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);
  79. m_ctrlList.SetRowHeigt( 20 );
  80. return 0;
  81. }
  82. void CDlg_CardInput::OnBnClickedBtnDelete()
  83. {
  84. int iListCount = m_ctrlList.GetItemCount();
  85. POSITION pos = m_ctrlList.GetFirstSelectedItemPosition();
  86. int nListSel = m_ctrlList.GetNextSelectedItem(pos);
  87. if(nListSel>=iListCount || nListSel==-1)
  88. {
  89. MessageBox( g_strChooseThenDel, g_strTip, MB_ICONINFORMATION);
  90. return;
  91. }
  92. if( MessageBox( "确定要删除所选的行?", g_strTip, MB_YESNO|MB_ICONINFORMATION)!=IDYES )
  93. return;
  94. pos = m_ctrlList.GetFirstSelectedItemPosition();
  95. if(NULL == pos)
  96. {
  97. }
  98. else
  99. {
  100. while(pos)
  101. {
  102. int nItem = m_ctrlList.GetNextSelectedItem(pos);
  103. m_ctrlList.DeleteItem(nItem);
  104. pos = m_ctrlList.GetFirstSelectedItemPosition();
  105. }
  106. }
  107. }
  108. void CDlg_CardInput::OnBnClickedBtnImport()
  109. {
  110. UpdateData();
  111. int nIndex=0;
  112. CString s[5];
  113. for( int i=m_ctrlList.GetItemCount()-1;i>=0;i-- )
  114. {
  115. s[0] = m_ctrlList.GetItemText( i,0 ); s[0] = s[0].TrimLeft();
  116. s[1] = m_ctrlList.GetItemText( i,1 ); s[1] = s[1].TrimLeft();
  117. s[2] = m_ctrlList.GetItemText( i,2 ); s[2] = s[2].TrimLeft();
  118. s[3] = m_ctrlList.GetItemText( i,3 ); s[3] = s[3].TrimLeft();
  119. s[4] = m_ctrlList.GetItemText( i,4 ); s[4] = s[4].TrimLeft();
  120. nIndex = InsertCardInfo_INPUT( (char *)(LPCTSTR)s[0],(char *)(LPCTSTR)s[1],(char *)(LPCTSTR)s[2],(char *)(LPCTSTR)s[3],(char *)(LPCTSTR)s[4] );
  121. if( -1!=nIndex )
  122. {
  123. m_ctrlList.DeleteItem( i );
  124. CString sIndex;
  125. sIndex.Format("%d",nIndex );
  126. g_pDlgMain->m_pDlg_Card->m_List_Card.InsertItem( 0,sIndex );
  127. g_pDlgMain->m_pDlg_Card->m_List_Card.SetItemText( 0,1," "+s[0] );
  128. g_pDlgMain->m_pDlg_Card->m_List_Card.SetItemText( 0,2," "+s[1] );
  129. g_pDlgMain->m_pDlg_Card->m_List_Card.SetItemText( 0,3," "+s[2] );
  130. g_pDlgMain->m_pDlg_Card->m_List_Card.SetItemText( 0,4," "+s[3] );
  131. g_pDlgMain->m_pDlg_Card->m_List_Card.SetItemText( 0,5," "+s[4] );
  132. for( int i=0;i<CARD_NUM_MAX;i++ )
  133. {
  134. if( g_Card[i].nID<0 )
  135. {
  136. g_Card[i].nID = nIndex;
  137. g_Card[i].sName = s[0];
  138. g_Card[i].nNumber = atoi( s[1] );
  139. g_Card[i].sClass = s[2];
  140. g_Card[i].sJobNumber = s[3];
  141. g_Card[i].sRemarks = s[4];
  142. break;
  143. }
  144. }
  145. }
  146. }
  147. if( m_ctrlList.GetItemCount()==0 )
  148. OnOK();
  149. else
  150. {
  151. CString sShow;
  152. sShow.Format("%s","有重复的姓名或者有重复的卡号码,请点击相应的项编辑");
  153. MessageBox( sShow, g_strTip, MB_ICONINFORMATION);
  154. m_ctrlList.SetItemType( 0,TYPE_EDIT );
  155. m_ctrlList.SetItemType( 1,TYPE_EDIT );
  156. }
  157. }
  158. HBRUSH CDlg_CardInput::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
  159. {
  160. HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
  161. // TODO: 在此更改 DC 的任何属性
  162. int nID = pWnd->GetDlgCtrlID();
  163. //HBRUSH B1 = CreateSolidBrush( g_ColorGround );
  164. HBRUSH B1 = CreateSolidBrush( g_Color3 );
  165. CFont font;
  166. font.CreatePointFont( 120,"宋体" );
  167. if(nID == IDC_STA_MSG)
  168. {
  169. pDC->SelectObject(&font);
  170. pDC->SetTextColor(RGB(255, 0, 0));
  171. pDC->SetBkMode( TRANSPARENT );
  172. //pDC->SelectObject(pOldFont);
  173. DeleteObject( font );
  174. DeleteObject( B1 );
  175. return B1;
  176. }
  177. DeleteObject( font );
  178. DeleteObject( B1 );
  179. // TODO: 如果默认的不是所需画笔,则返回另一个画笔
  180. return hbr;
  181. }
  182. BOOL CDlg_CardInput::OnEraseBkgnd(CDC* pDC)
  183. {
  184. CBrush br1;
  185. CRect rect;
  186. GetWindowRect(&rect);
  187. ScreenToClient(&rect);
  188. br1.CreateSolidBrush(g_Color3);
  189. pDC->FillRect(rect,&br1);
  190. DeleteObject( br1 );
  191. return TRUE;
  192. //return CDialog::OnEraseBkgnd(pDC);
  193. }