⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 page1.cpp

📁 通讯录管理程序源代码
💻 CPP
字号:
// Page1.cpp : implementation file
//

#include "stdafx.h"
#include "tbvc.h"
#include "Page1.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CPage1 property page

IMPLEMENT_DYNCREATE(CPage1, CPropertyPage)

CPage1::CPage1() : CPropertyPage(CPage1::IDD)
{
	//{{AFX_DATA_INIT(CPage1)
	m_address = _T("");
	m_company = _T("");
	m_email = _T("");
	m_introduction = _T("");
	m_mobile = _T("");
	m_name = _T("");
	m_pager = _T("");
	m_position = _T("");
	m_relation = _T("");
	m_sex = _T("");
	m_telphone = _T("");
	m_age = 0;
	isAppend=FALSE;
	isEdit=FALSE;
	//}}AFX_DATA_INIT
	
}

CPage1::~CPage1()
{
	if(m_pSet!=NULL)
	{ 
		m_pSet->Close();
		m_database->Close();
		delete m_pSet;
		delete m_database;
	}

}

void CPage1::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPage1)
	DDX_Control(pDX, IDC_TELPHONE, m_edittelphone);
	DDX_Control(pDX, IDC_SEX, m_editsex);
	DDX_Control(pDX, IDC_RELATION, m_editrelation);
	DDX_Control(pDX, IDC_POSITION, m_editposition);
	DDX_Control(pDX, IDC_PAGER, m_editpager);
	DDX_Control(pDX, IDC_NAME, m_editname);
	DDX_Control(pDX, IDC_MOBILE, m_editmobile);
	DDX_Control(pDX, IDC_INTRODUCTION, m_editintroduction);
	DDX_Control(pDX, IDC_EMAIL, m_editemail);
	DDX_Control(pDX, IDC_COMPANY, m_editcompany);
	DDX_Control(pDX, IDC_AGE, m_editage);
	DDX_Control(pDX, IDC_ADDRESS, m_editaddress);
	DDX_Text(pDX, IDC_ADDRESS, m_address);
	DDX_Text(pDX, IDC_COMPANY, m_company);
	DDX_Text(pDX, IDC_EMAIL, m_email);
	DDX_Text(pDX, IDC_INTRODUCTION, m_introduction);
	DDX_Text(pDX, IDC_MOBILE, m_mobile);
	DDX_Text(pDX, IDC_NAME, m_name);
	DDX_Text(pDX, IDC_PAGER, m_pager);
	DDX_Text(pDX, IDC_POSITION, m_position);
	DDX_Text(pDX, IDC_RELATION, m_relation);
	DDX_Text(pDX, IDC_SEX, m_sex);
	DDX_Text(pDX, IDC_TELPHONE, m_telphone);
	DDX_Text(pDX, IDC_AGE, m_age);
	DDV_MinMaxInt(pDX, m_age, 0, 100);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPage1, CPropertyPage)
	//{{AFX_MSG_MAP(CPage1)
	ON_BN_CLICKED(IDC_NEXT, OnNext)
	ON_BN_CLICKED(IDC_FIRST, OnFirst)
	ON_BN_CLICKED(IDC_LAST, OnLast)
	ON_BN_CLICKED(IDC_PREV, OnPrev)
	ON_BN_CLICKED(IDC_EDITRECORD, OnEditrecord)
	ON_WM_CTLCOLOR()
	ON_BN_CLICKED(IDC_APPENDRECORD, OnAppendrecord)
	ON_BN_CLICKED(IDC_DELETERECORD, OnDeleterecord)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPage1 message handlers
BOOL CPage1::OnInitDialog() 
{   //MessageBox("CPage1::OnInitDialog","test");
	CPropertyPage::OnInitDialog();
	CWaitCursor wait;
	//Create Dialog BkColor Brush
    m_brush.CreateSolidBrush(RGB(0,170,170));
    
	//Set All Edits Control ReadOnly State
	SetEditReadOnly(TRUE);

	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);

        if(isEmpty())
		{
			SetNoRecordBtnState();
			return FALSE;
		}
        
        GetValue();
		SetButtonState();
		
	}
	catch(CDBException* pEx)
	{
		pEx->ReportError();
	} 
	
	return TRUE;  
	              
}
void CPage1::ClearEditText()
{
	m_address = _T("");
	m_company = _T("");
	m_email = _T("");
	m_introduction = _T("");
	m_mobile = _T("");
	m_name = _T("");
	m_pager = _T("");
	m_position = _T("");
	m_relation = _T("");
	m_sex = _T("");
	m_telphone = _T("");
	m_age = 0;
	UpdateData(FALSE);

}

void CPage1::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_relation  =   m_pSet->m_friendship;
		m_company   =   m_pSet->m_company;
		m_address   =   m_pSet->m_address;
		m_telphone  =   m_pSet->m_telphone;
		m_pager     =   m_pSet->m_pager;
		m_mobile    =   m_pSet->m_mobile;
		m_position  =   m_pSet->m_position;
		m_introduction  =  m_pSet->m_introduction;
		UpdateData(FALSE);


}
void CPage1::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_friendship=   m_relation;
	m_pSet->m_company   =   m_company;
	m_pSet->m_address   =   m_address;
	m_pSet->m_telphone  =   m_telphone;
	m_pSet->m_pager     =   m_pager;
	m_pSet->m_mobile    =   m_mobile;
	m_pSet->m_position  =   m_position;
	m_pSet->m_introduction  =  m_introduction;
}


void CPage1::OnFirst() 
{
	m_pSet->MoveFirst();
	OnPrev();
}
void CPage1::OnPrev() 
{
	m_pSet->MovePrev();
	GetValue();
	SetButtonState();
}
void CPage1::OnNext() 
{
	m_pSet->MoveNext();
	GetValue();
	SetButtonState();
}
void CPage1::OnLast() 
{
	m_pSet->MoveLast();
	OnNext();
}

void CPage1::SetButtonState()
{
    if(IsFirstRecord())
	{
		GetDlgItem(IDC_FIRST)->EnableWindow(FALSE);
	    GetDlgItem(IDC_PREV)->EnableWindow(FALSE);
	}
	else
	{
		GetDlgItem(IDC_FIRST)->EnableWindow(TRUE);
	    GetDlgItem(IDC_PREV)->EnableWindow(TRUE);

	}

	if(IsLastRecord())
	{	
		GetDlgItem(IDC_NEXT)->EnableWindow(FALSE);
	    GetDlgItem(IDC_LAST)->EnableWindow(FALSE);
	}
	else
	{
		GetDlgItem(IDC_NEXT)->EnableWindow(TRUE);
		GetDlgItem(IDC_LAST)->EnableWindow(TRUE);
	}
}
 
BOOL CPage1::IsFirstRecord()
{
	if(m_pSet->IsBOF()&&m_pSet->IsEOF())
	{
		return TRUE;
	}
	else if(m_pSet->IsBOF())
	{
		m_pSet->MoveFirst();
		return TRUE;
	}
	else
		return FALSE;
}

BOOL CPage1::IsLastRecord()
{
	if(m_pSet->IsBOF()&&m_pSet->IsEOF())
	{
		return TRUE;
	}
	else if(m_pSet->IsEOF())
	{
		m_pSet->MoveLast();
		return TRUE;
	}
	else
		return FALSE;
}
HBRUSH CPage1::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;
}




void CPage1::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_editpager.SetReadOnlyState(isReadOnly);
	m_editmobile.SetReadOnlyState(isReadOnly);
	m_editaddress.SetReadOnlyState(isReadOnly);
	m_editcompany.SetReadOnlyState(isReadOnly);
	m_editintroduction.SetReadOnlyState(isReadOnly);
}


void CPage1::SetNavButtonVisible(int isVisible)
{ 
	
		GetDlgItem(IDC_FIRST)->ShowWindow(isVisible);
	    GetDlgItem(IDC_PREV)->ShowWindow(isVisible);
		GetDlgItem(IDC_NEXT)->ShowWindow(isVisible);
		GetDlgItem(IDC_LAST)->ShowWindow(isVisible);
}

void CPage1::SetButtonText(BOOL blSet)
{
	if(blSet)
	{
		GetDlgItem(IDC_EDITRECORD)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_APPENDRECORD)->SetWindowText(_T("确  定"));
		GetDlgItem(IDC_DELETERECORD)->SetWindowText(_T("取  消"));
	}
	else
	{
		GetDlgItem(IDC_EDITRECORD)->ShowWindow(SW_SHOW);
		GetDlgItem(IDC_APPENDRECORD)->SetWindowText(_T("添加新记录"));
		GetDlgItem(IDC_DELETERECORD)->SetWindowText(_T("删除记录"));
	}

}
//添加新纪录功能  && 确定按钮事件
void CPage1::OnAppendrecord() 
{
	if(isAppend||isEdit)
	{
		try
		{   if(!UpdateData(TRUE)) return;
		    if(m_name.IsEmpty())
			{ 
				MessageBox("[姓名] 字段必须填写内容!","注意",MB_ICONINFORMATION|MB_OK);
			    return;
			}
            //if(!CheckData())
	         //	return;
			SetValue();
			m_pSet->Update();

			if(isAppend) 
			{
				m_pSet->Requery();
				m_pSet->MoveLast();
			}
			SetNavButtonVisible(SW_SHOW);  
			SetButtonText(FALSE);
			SetEditReadOnly(TRUE);
			isAppend=FALSE;
			isEdit=FALSE;

			GetValue();
			SetButtonState();

		}
		catch(CDBException* pEx)
		{
			pEx->ReportError();
		}
	}
	else
	{
		if(m_pSet->CanAppend())
		{
			SetNavButtonVisible(SW_HIDE);  
			SetButtonText(TRUE);
			m_pSet->AddNew();
			if(isEmpty())
			{
				GetDlgItem(IDC_EDITRECORD)->EnableWindow(TRUE);
				GetDlgItem(IDC_DELETERECORD)->EnableWindow(TRUE);
			}
			SetEditReadOnly(FALSE);
			ClearEditText();
			isAppend=TRUE;
			m_editname.SetFocus();
		}
		else
		{
			AfxMessageBox("Can't Append New Record");
		}

	}

	
}
//删除记录功能  && 取消功能
void CPage1::OnDeleterecord() 
{
	// TODO: Add your control notification handler code here
	if(isAppend||isEdit)
	{
		m_pSet->CancelUpdate();
	    SetNavButtonVisible(SW_SHOW);  
		SetButtonText(FALSE);
		SetEditReadOnly(TRUE);

		if(isEmpty()) 
			SetNoRecordBtnState();
		else
			GetValue();

		isEdit=FALSE;
		isAppend=FALSE;
	}
	else
	    
	    if(MessageBox("确定要删除这条记录吗?","删除记录",MB_YESNO|MB_ICONINFORMATION) == IDYES)
		{
			m_pSet->Delete();
			try
			{
				OnNext();
				if(isEmpty())
				{
					SetNoRecordBtnState();
					return;
				}
				
				SetButtonState();
				GetValue();
				
			}
			catch(CDBException* pEx)
			{
				pEx->ReportError();
			}

		}

}
void CPage1::OnEditrecord() 
{
	if(m_pSet->CanAppend())
	{
        SetNavButtonVisible(SW_HIDE);  
		SetButtonText(TRUE);
		SetEditReadOnly(FALSE);
      	m_pSet->Edit();
		isEdit=TRUE;
		m_editname.SetFocus();
	}
	else
	{
		AfxMessageBox("Can't Modify the Record");
	}
}



void CPage1::SetNoRecordBtnState()
{	
	GetDlgItem(IDC_FIRST)->EnableWindow(FALSE);
	GetDlgItem(IDC_PREV)->EnableWindow(FALSE);
	GetDlgItem(IDC_NEXT)->EnableWindow(FALSE);
	GetDlgItem(IDC_LAST)->EnableWindow(FALSE);
	GetDlgItem(IDC_EDITRECORD)->EnableWindow(FALSE);
	GetDlgItem(IDC_DELETERECORD)->EnableWindow(FALSE);
	ClearEditText();
}

BOOL CPage1::isEmpty()
{
	if(m_pSet->IsBOF() && m_pSet->IsEOF())
	{
		
		return TRUE;
	}
	else
		return FALSE;

}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -