一个好用的DBGRID
2010-06-04 20:37:47 来源:WEB开发网按照下面的步骤做一遍,你就能够知道它是不是很实用了。
步骤一
新建一个基于对话框的工程,命名为demo2,打开stdafx.h文件,加入#include<afxdb.h>,从例子中把OdbcDBGRIDFILE.h, OdbcDBGRIDFILE.cpp复制到这个工程的目录下,并且加入到工程中,方法是菜单project->add to project->files,选择这二个文件就可以了。不要忘了,你要把CGRIDCTRL类的文件都包含进来。
步骤二
在对话框上,按照上面的样例放上一个CURSTOMER CTROL(就是一个人头的那个控件),在属性的CLASS上输入MFCGridCtrl,ID为IDC_GRIDODBC,然后在放上其它编辑框和按钮控件,为四个编辑框控件通过CLASSWIZARD关联变量
CString m_strPass;//口令
CString m_strSource;//数据源名
CString m_strSql;//查询sql
CString m_strUser;//用户名
在类CDemo2Dlg中加入下面的几个成员变量
CGridCtrl m_Grid;
COdbcDBGRIDFILE *m_pMapFile;
CImageList m_ImageList;
CDatabase m_db;
当然你要在CDemo2Dlg的声明文件中加入
#include "gridctrl.h"
#include "OdbcDBGRIDFILE.h"
在CDemo2Dlg::DoDataExchange(CDataExchange* pDX)函数中加入DDX_Control(pDX, IDC_GRIDODBC, m_Grid);
在CDemo2Dlg的构造函数中加入
m_pMapFile = NULL;
步骤三
用ClassWizard生成CDemo2Dlg的CDemo2Dlg::OnNotify消息响应函数,在这个函数中,输入如下的代码
BOOL CDemo2Dlg::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
if (wParam == (WPARAM)m_Grid.GetDlgCtrlID())
{
*pResult = 1;
GV_DISPINFO *pDispInfo = (GV_DISPINFO*)lParam;
if (GVN_GETDISPINFO == pDispInfo->hdr.code)
{
SetGridItem(pDispInfo);
return TRUE;
}
}
return CDialog::OnNotify(wParam, lParam, pResult);
}
在上面的代码中,SetGridItem(pDispInfo)是我们自己加的函数,在这个函数里我们设置当前要显示的数据
步骤四
为CDemo2Dlg加入查询按钮的响应函数OnBtnquery()
下面是这个函数的代码
void CDemo2Dlg::OnBtnquery()
{
this->Release();/*这个函数用于释放资源的*/
CString strConn;
UpdateData(TRUE);
strConn.Format("ODBC;DSN=%s;UID=%s;PWD=%s",m_strSource,m_strUser, m_strPass);
BOOL bResult = m_db.Open(strConn);
if(bResult == FALSE)
{
return;
}/*上面的代码用于连接数据库*/
m_pMapFile = new COdbcDBGRIDFILE(&m_Grid, &m_db, m_strSql, "c:\\csl.txt");
m_pMapFile->InitGrid();/*初始化函数,用于创建内存映射文件等*/
}
更多精彩
赞助商链接