www.gusucode.com > VC++动画翻页效果的电话簿程序源码程序 > VC++动画翻页效果的电话簿程序源码程序/code/DteailDlg.cpp
//Download by http://www.NewXing.com // DteailDlg.cpp : implementation file // #include "stdafx.h" #include "phonebook.h" #include "DteailDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // DteailDlg dialog DteailDlg::DteailDlg(CWnd* pParent /*=NULL*/) : CDialog(DteailDlg::IDD, pParent) { //{{AFX_DATA_INIT(DteailDlg) m_age = 0; m_email = _T(""); m_introduction = _T(""); m_position = _T(""); m_mobile = _T(""); m_name = _T(""); m_telphone = _T(""); m_address = _T(""); m_relation = _T(""); m_sex = _T(""); m_company = _T(""); m_code = _T(""); //}}AFX_DATA_INIT isAppend=FALSE; isEdit=FALSE; } void DteailDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(DteailDlg) DDX_Control(pDX, IDC_EDIT_CODE, m_editcode); DDX_Control(pDX, IDC_MOBYLE, m_editmobile); DDX_Control(pDX, IDC_JOB, m_editposition); DDX_Control(pDX, IDC_WORKPLACE, m_editcompany); DDX_Control(pDX, IDC_SEX, m_editsex); DDX_Control(pDX, IDC_RELATION, m_editrelation); DDX_Control(pDX, IDC_PHONE, m_edittelphone); DDX_Control(pDX, IDC_PLACE, m_editaddress); DDX_Control(pDX, IDC_NAME, m_editname); DDX_Control(pDX, IDC_INTRODUCTION, m_editintroduction); DDX_Control(pDX, IDC_EMAIL, m_editemail); DDX_Control(pDX, IDC_AGE, m_editage); DDX_Text(pDX, IDC_AGE, m_age); DDV_MinMaxInt(pDX, m_age, 0, 100); DDX_Text(pDX, IDC_EMAIL, m_email); DDX_Text(pDX, IDC_INTRODUCTION, m_introduction); DDX_Text(pDX, IDC_JOB, m_position); DDX_Text(pDX, IDC_MOBYLE, m_mobile); DDX_Text(pDX, IDC_NAME, m_name); DDX_Text(pDX, IDC_PHONE, m_telphone); DDX_Text(pDX, IDC_PLACE, m_address); DDX_Text(pDX, IDC_RELATION, m_relation); DDX_Text(pDX, IDC_SEX, m_sex); DDX_Text(pDX, IDC_WORKPLACE, m_company); DDX_Text(pDX, IDC_EDIT_CODE, m_code); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(DteailDlg, CDialog) //{{AFX_MSG_MAP(DteailDlg) ON_WM_CTLCOLOR() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // DteailDlg message handlers HBRUSH DteailDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = (HBRUSH)m_brush; if(nCtlColor==CTLCOLOR_STATIC) { pDC->SetBkMode(TRANSPARENT); return hbr; } if(nCtlColor==CTLCOLOR_EDIT) { return NULL; } return hbr; } BOOL DteailDlg::OnInitDialog() { CDialog::OnInitDialog(); m_brush.CreateSolidBrush(RGB(0,170,170)); try { CString sDSN="ODBC;DRIVER=Microsoft Access Driver (*.mdb);DSN='';DBQ=telbook.mdb"; m_database=new CDatabase; if(!m_database->Open(NULL,FALSE,FALSE,sDSN,FALSE)) { AfxMessageBox("ODBC Connection Faile!"); CDialog::EndDialog(0); GetParent()->PostMessage(WM_CLOSE); return FALSE; } CString strSQL="select * from personlist"; m_pSet=new CMyRecordset(m_database); m_pSet->Open(CRecordset::dynaset,strSQL); } catch(CDBException* pEx) { pEx->ReportError(); } return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void DteailDlg::ShowDetail(int nIndex) { switch(nIndex) { case -2://On first m_pSet->MoveFirst(); break; case -1://On prevew m_pSet->MovePrev(); break; case 1://On next m_pSet->MoveNext(); break; case 2://On Last m_pSet->MoveLast(); break; } GetValue(); } int DteailDlg::GetNUM() { int i=0; m_pSet->MoveFirst(); while(!m_pSet->IsEOF()) { i++; m_pSet->MoveNext(); } m_pSet->MoveFirst(); return i; } BOOL DteailDlg::DestroyWindow() { if(m_pSet!=NULL) { m_pSet->Close(); m_database->Close(); delete m_pSet; delete m_database; } return CDialog::DestroyWindow(); } void DteailDlg::ClearEditText() { m_address = _T(""); m_company = _T(""); m_email = _T(""); m_introduction = _T(""); m_mobile = _T(""); m_name = _T(""); m_position = _T(""); m_relation = _T(""); m_sex = _T(""); m_telphone = _T(""); m_age = 0; UpdateData(FALSE); } void DteailDlg::GetValue() { m_name = m_pSet->m_name; m_age = m_pSet->m_age; m_sex = m_pSet->m_sex; m_email = m_pSet->m_email; m_code = m_pSet->m_pager; m_relation = m_pSet->m_friendship; m_company = m_pSet->m_company; m_address = m_pSet->m_address; m_telphone = m_pSet->m_telphone; m_mobile = m_pSet->m_mobile; m_position = m_pSet->m_position; m_introduction = m_pSet->m_introduction; UpdateData(FALSE); } void DteailDlg::SetValue() { UpdateData(TRUE); m_pSet->m_name = m_name; m_pSet->m_age = m_age; m_pSet->m_sex = m_sex; m_pSet->m_email = m_email; m_pSet->m_pager = m_code; m_pSet->m_friendship= m_relation; m_pSet->m_company = m_company; m_pSet->m_address = m_address; m_pSet->m_telphone = m_telphone; m_pSet->m_mobile = m_mobile; m_pSet->m_position = m_position; m_pSet->m_introduction = m_introduction; } bool DteailDlg::IsFirstRecord() { if(m_pSet->IsBOF()&&m_pSet->IsEOF()) { return TRUE; } else if(m_pSet->IsBOF()) { m_pSet->MoveFirst(); return TRUE; } else return FALSE; } bool DteailDlg::IsLastRecord() { if(m_pSet->IsBOF()&&m_pSet->IsEOF()) { return TRUE; } else if(m_pSet->IsEOF()) { m_pSet->MoveLast(); return TRUE; } else return FALSE; } void DteailDlg::SetEditReadOnly(BOOL isReadOnly) { m_editname.SetReadOnlyState(isReadOnly); m_editage.SetReadOnlyState(isReadOnly); m_editsex.SetReadOnlyState(isReadOnly); m_editrelation.SetReadOnlyState(isReadOnly); m_editposition.SetReadOnlyState(isReadOnly); m_editemail.SetReadOnlyState(isReadOnly); m_edittelphone.SetReadOnlyState(isReadOnly); m_editmobile.SetReadOnlyState(isReadOnly); m_editaddress.SetReadOnlyState(isReadOnly); m_editcompany.SetReadOnlyState(isReadOnly); m_editintroduction.SetReadOnlyState(isReadOnly); } void DteailDlg::NewRecord() { try { if(!UpdateData(TRUE)) return; if(m_name.IsEmpty()) { MessageBox("[姓名] 字段必须填写内容!","注意",MB_ICONINFORMATION|MB_OK); return; } m_pSet->AddNew(); SetValue(); m_pSet->Update(); m_pSet->Requery(); m_pSet->MoveLast(); SetEditReadOnly(TRUE); isAppend=FALSE; isEdit=FALSE; } catch(CDBException* pEx) { pEx->ReportError(); } } void DteailDlg::DelRecord() { if(isAppend||isEdit) { m_pSet->CancelUpdate(); SetEditReadOnly(TRUE); isEdit=FALSE; isAppend=FALSE; } else if(MessageBox("确定要删除这条记录吗?","删除记录",MB_YESNO|MB_ICONINFORMATION) == IDYES) m_pSet->Delete(); } void DteailDlg::EditRecord(bool used) { if(!used) { SetEditReadOnly(FALSE); m_editname.SetFocus(); } else { m_pSet->Edit(); SetValue(); m_pSet->Update(); m_pSet->Requery(); SetEditReadOnly(TRUE); UpdateData(TRUE); } } UINT DteailDlg::Find(CString str,int ID,bool &re) { /*ID 1.姓名2.联系电话3.手机号4.E-mail 5.邮政编码6.地址 */ TRACE("\n%d",ID); UINT r=0; re=0;//显示是否有多个查找结果 m_pSet->MoveFirst(); CRecordsetStatus temp; m_pSet->GetStatus(temp); switch(ID) { case 1: while(!m_pSet->IsEOF()) { r++; if(str==m_pSet->m_name) return r; m_pSet->MoveNext(); } break; case 2: while(!m_pSet->IsEOF()) { r++; if(str==m_pSet->m_telphone) return r; m_pSet->MoveNext(); } break; case 3: while(!m_pSet->IsEOF()) { r++; if(str==m_pSet->m_mobile) return r; m_pSet->MoveNext(); } break; case 4: while(!m_pSet->IsEOF()) { r++; if(str==m_pSet->m_email) return r; m_pSet->MoveNext(); } break; case 5: while(!m_pSet->IsEOF()) { r++; if(str==m_pSet->m_pager) return r; m_pSet->MoveNext(); } break; case 6: while(!m_pSet->IsEOF()) { r++; if(str==m_pSet->m_address) return r; m_pSet->MoveNext(); } break; } return 0; }