DteailDlg.cpp
上传用户:cuijiu615
上传日期:2007-03-28
资源大小:45k
文件大小:8k
源码类别:

家庭/个人应用

开发平台:

Visual C++

  1. // DteailDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "phonebook.h"
  5. #include "DteailDlg.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // DteailDlg dialog
  13. DteailDlg::DteailDlg(CWnd* pParent /*=NULL*/)
  14. : CDialog(DteailDlg::IDD, pParent)
  15. {
  16. //{{AFX_DATA_INIT(DteailDlg)
  17. m_age = 0;
  18. m_email = _T("");
  19. m_introduction = _T("");
  20. m_position = _T("");
  21. m_mobile = _T("");
  22. m_name = _T("");
  23. m_telphone = _T("");
  24. m_address = _T("");
  25. m_relation = _T("");
  26. m_sex = _T("");
  27. m_company = _T("");
  28. m_code = _T("");
  29. //}}AFX_DATA_INIT
  30. isAppend=FALSE;
  31. isEdit=FALSE;
  32. }
  33. void DteailDlg::DoDataExchange(CDataExchange* pDX)
  34. {
  35. CDialog::DoDataExchange(pDX);
  36. //{{AFX_DATA_MAP(DteailDlg)
  37. DDX_Control(pDX, IDC_EDIT_CODE, m_editcode);
  38. DDX_Control(pDX, IDC_MOBYLE, m_editmobile);
  39. DDX_Control(pDX, IDC_JOB, m_editposition);
  40. DDX_Control(pDX, IDC_WORKPLACE, m_editcompany);
  41. DDX_Control(pDX, IDC_SEX, m_editsex);
  42. DDX_Control(pDX, IDC_RELATION, m_editrelation);
  43. DDX_Control(pDX, IDC_PHONE, m_edittelphone);
  44. DDX_Control(pDX, IDC_PLACE, m_editaddress);
  45. DDX_Control(pDX, IDC_NAME, m_editname);
  46. DDX_Control(pDX, IDC_INTRODUCTION, m_editintroduction);
  47. DDX_Control(pDX, IDC_EMAIL, m_editemail);
  48. DDX_Control(pDX, IDC_AGE, m_editage);
  49. DDX_Text(pDX, IDC_AGE, m_age);
  50. DDV_MinMaxInt(pDX, m_age, 0, 100);
  51. DDX_Text(pDX, IDC_EMAIL, m_email);
  52. DDX_Text(pDX, IDC_INTRODUCTION, m_introduction);
  53. DDX_Text(pDX, IDC_JOB, m_position);
  54. DDX_Text(pDX, IDC_MOBYLE, m_mobile);
  55. DDX_Text(pDX, IDC_NAME, m_name);
  56. DDX_Text(pDX, IDC_PHONE, m_telphone);
  57. DDX_Text(pDX, IDC_PLACE, m_address);
  58. DDX_Text(pDX, IDC_RELATION, m_relation);
  59. DDX_Text(pDX, IDC_SEX, m_sex);
  60. DDX_Text(pDX, IDC_WORKPLACE, m_company);
  61. DDX_Text(pDX, IDC_EDIT_CODE, m_code);
  62. //}}AFX_DATA_MAP
  63. }
  64. BEGIN_MESSAGE_MAP(DteailDlg, CDialog)
  65. //{{AFX_MSG_MAP(DteailDlg)
  66. ON_WM_CTLCOLOR()
  67. //}}AFX_MSG_MAP
  68. END_MESSAGE_MAP()
  69. /////////////////////////////////////////////////////////////////////////////
  70. // DteailDlg message handlers
  71. HBRUSH DteailDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
  72. {
  73. HBRUSH hbr = (HBRUSH)m_brush;
  74.    if(nCtlColor==CTLCOLOR_STATIC)
  75. {   pDC->SetBkMode(TRANSPARENT);
  76. return hbr;
  77. }
  78. if(nCtlColor==CTLCOLOR_EDIT)
  79. {  
  80. return NULL;
  81. }
  82. return hbr;
  83. }
  84. BOOL DteailDlg::OnInitDialog() 
  85. {
  86. CDialog::OnInitDialog();
  87. m_brush.CreateSolidBrush(RGB(0,170,170));
  88. try
  89. {
  90. CString  sDSN="ODBC;DRIVER=Microsoft Access Driver (*.mdb);DSN='';DBQ=telbook.mdb";
  91. m_database=new CDatabase;
  92. if(!m_database->Open(NULL,FALSE,FALSE,sDSN,FALSE))
  93. {
  94. AfxMessageBox("ODBC Connection Faile!");
  95. CDialog::EndDialog(0);
  96. GetParent()->PostMessage(WM_CLOSE);
  97. return FALSE;
  98. }
  99.         CString strSQL="select * from personlist";
  100. m_pSet=new CMyRecordset(m_database);
  101. m_pSet->Open(CRecordset::dynaset,strSQL);
  102. }
  103. catch(CDBException* pEx)
  104. {
  105. pEx->ReportError();
  106. }
  107. return TRUE;  // return TRUE unless you set the focus to a control
  108.               // EXCEPTION: OCX Property Pages should return FALSE
  109. }
  110. void DteailDlg::ShowDetail(int nIndex)
  111. {
  112. switch(nIndex)
  113. {
  114. case -2://On first
  115. m_pSet->MoveFirst();
  116. break;
  117. case -1://On prevew
  118. m_pSet->MovePrev();
  119. break;
  120. case 1://On next
  121. m_pSet->MoveNext();
  122. break;
  123. case 2://On Last
  124. m_pSet->MoveLast();
  125. break;
  126. }
  127. GetValue();
  128. }
  129. int DteailDlg::GetNUM()
  130. {
  131. int i=0;
  132. m_pSet->MoveFirst();
  133. while(!m_pSet->IsEOF())
  134. {
  135. i++;
  136. m_pSet->MoveNext();
  137. }
  138. m_pSet->MoveFirst();
  139. return i;
  140. }
  141. BOOL DteailDlg::DestroyWindow() 
  142. {
  143. if(m_pSet!=NULL)
  144. m_pSet->Close();
  145. m_database->Close();
  146. delete m_pSet;
  147. delete m_database;
  148. }
  149. return CDialog::DestroyWindow();
  150. }
  151. void DteailDlg::ClearEditText()
  152. {
  153. m_address = _T("");
  154. m_company = _T("");
  155. m_email = _T("");
  156. m_introduction = _T("");
  157. m_mobile = _T("");
  158. m_name = _T("");
  159. m_position = _T("");
  160. m_relation = _T("");
  161. m_sex = _T("");
  162. m_telphone = _T("");
  163. m_age = 0;
  164. UpdateData(FALSE);
  165. }
  166. void DteailDlg::GetValue()
  167. {
  168. m_name      =   m_pSet->m_name;
  169. m_age       =   m_pSet->m_age;
  170. m_sex       =   m_pSet->m_sex;
  171. m_email     =   m_pSet->m_email;
  172. m_code = m_pSet->m_pager;
  173. m_relation  =   m_pSet->m_friendship;
  174. m_company   =   m_pSet->m_company;
  175. m_address   =   m_pSet->m_address;
  176. m_telphone  =   m_pSet->m_telphone;
  177. m_mobile    =   m_pSet->m_mobile;
  178. m_position  =   m_pSet->m_position;
  179. m_introduction  =  m_pSet->m_introduction;
  180. UpdateData(FALSE);
  181. }
  182. void DteailDlg::SetValue()
  183. {
  184. UpdateData(TRUE);
  185. m_pSet->m_name      =   m_name;
  186. m_pSet->m_age       =   m_age;
  187. m_pSet->m_sex       =   m_sex;
  188. m_pSet->m_email     =   m_email;
  189. m_pSet->m_pager = m_code;
  190. m_pSet->m_friendship=   m_relation;
  191. m_pSet->m_company   =   m_company;
  192. m_pSet->m_address   =   m_address;
  193. m_pSet->m_telphone  =   m_telphone;
  194. m_pSet->m_mobile    =   m_mobile;
  195. m_pSet->m_position  =   m_position;
  196. m_pSet->m_introduction  =  m_introduction;
  197. }
  198. bool DteailDlg::IsFirstRecord()
  199. {
  200. if(m_pSet->IsBOF()&&m_pSet->IsEOF())
  201. {
  202. return TRUE;
  203. }
  204. else if(m_pSet->IsBOF())
  205. {
  206. m_pSet->MoveFirst();
  207. return TRUE;
  208. }
  209. else
  210. return FALSE;
  211. }
  212. bool DteailDlg::IsLastRecord()
  213. {
  214. if(m_pSet->IsBOF()&&m_pSet->IsEOF())
  215. {
  216. return TRUE;
  217. }
  218. else if(m_pSet->IsEOF())
  219. {
  220. m_pSet->MoveLast();
  221. return TRUE;
  222. }
  223. else
  224. return FALSE;
  225. }
  226. void DteailDlg::SetEditReadOnly(BOOL isReadOnly)
  227. {
  228. m_editname.SetReadOnlyState(isReadOnly);
  229. m_editage.SetReadOnlyState(isReadOnly);
  230. m_editsex.SetReadOnlyState(isReadOnly);
  231. m_editrelation.SetReadOnlyState(isReadOnly);
  232. m_editposition.SetReadOnlyState(isReadOnly);
  233. m_editemail.SetReadOnlyState(isReadOnly);
  234. m_edittelphone.SetReadOnlyState(isReadOnly);
  235. m_editmobile.SetReadOnlyState(isReadOnly);
  236. m_editaddress.SetReadOnlyState(isReadOnly);
  237. m_editcompany.SetReadOnlyState(isReadOnly);
  238. m_editintroduction.SetReadOnlyState(isReadOnly);
  239. }
  240. void DteailDlg::NewRecord()
  241. {
  242. try
  243. {   
  244. if(!UpdateData(TRUE))
  245. return;
  246. if(m_name.IsEmpty())
  247. MessageBox("[姓名] 字段必须填写内容!","注意",MB_ICONINFORMATION|MB_OK);
  248.     return;
  249. }
  250. m_pSet->AddNew();
  251.       SetValue();
  252. m_pSet->Update();
  253. m_pSet->Requery();
  254. m_pSet->MoveLast();
  255. SetEditReadOnly(TRUE);
  256. isAppend=FALSE;
  257. isEdit=FALSE;
  258. }
  259. catch(CDBException* pEx)
  260. {
  261. pEx->ReportError();
  262. }
  263. }
  264. void DteailDlg::DelRecord()
  265. {
  266. if(isAppend||isEdit)
  267. {
  268. m_pSet->CancelUpdate();
  269. SetEditReadOnly(TRUE);
  270. isEdit=FALSE;
  271. isAppend=FALSE;
  272. }
  273. else
  274.     if(MessageBox("确定要删除这条记录吗?","删除记录",MB_YESNO|MB_ICONINFORMATION) == IDYES)
  275. m_pSet->Delete();
  276. }
  277. void DteailDlg::EditRecord(bool used)
  278. {
  279. if(!used)
  280. {
  281. SetEditReadOnly(FALSE);
  282. m_editname.SetFocus();
  283. }
  284. else
  285. {
  286. m_pSet->Edit();
  287. SetValue();
  288. m_pSet->Update();
  289. m_pSet->Requery();
  290. SetEditReadOnly(TRUE);
  291. UpdateData(TRUE);
  292. }
  293. }
  294. UINT DteailDlg::Find(CString str,int ID,bool &re)
  295. {
  296. /*ID
  297. 1.姓名2.联系电话3.手机号4.E-mail
  298. 5.邮政编码6.地址
  299. */
  300. TRACE("n%d",ID);
  301. UINT r=0;
  302. re=0;//显示是否有多个查找结果
  303. m_pSet->MoveFirst();
  304. CRecordsetStatus temp;
  305. m_pSet->GetStatus(temp);
  306. switch(ID)
  307. {
  308. case 1:
  309. while(!m_pSet->IsEOF())
  310. {
  311. r++;
  312. if(str==m_pSet->m_name)
  313. return r;
  314. m_pSet->MoveNext();
  315. }
  316. break;
  317. case 2:
  318. while(!m_pSet->IsEOF())
  319. {
  320. r++;
  321. if(str==m_pSet->m_telphone)
  322. return r;
  323. m_pSet->MoveNext();
  324. }
  325. break;
  326. case 3:
  327. while(!m_pSet->IsEOF())
  328. {
  329. r++;
  330. if(str==m_pSet->m_mobile)
  331. return r;
  332. m_pSet->MoveNext();
  333. }
  334. break;
  335. case 4:
  336. while(!m_pSet->IsEOF())
  337. {
  338. r++;
  339. if(str==m_pSet->m_email)
  340. return r;
  341. m_pSet->MoveNext();
  342. }
  343. break;
  344. case 5:
  345. while(!m_pSet->IsEOF())
  346. {
  347. r++;
  348. if(str==m_pSet->m_pager)
  349. return r;
  350. m_pSet->MoveNext();
  351. }
  352. break;
  353. case 6:
  354. while(!m_pSet->IsEOF())
  355. {
  356. r++;
  357. if(str==m_pSet->m_address)
  358. return r;
  359. m_pSet->MoveNext();
  360. }
  361. break;
  362. }
  363. return 0;
  364. }