示例程序1演示了DBGrid控件在类CFormView的派生类中的使用方法,在对话框中使用DBGrid控件的方法与此完全相同。
以上示例是DBGrid控件最简单地使用,因为它们都是把控件添加到控件容器内,然后再设定其属性,所以RemoteData和DBGrid控件可以像Button、Edit控制一样,用鼠标点几下就可以了。下面再介绍DBGrid控件在类Cview或其派生类等非控件容器中的使用方法。这时就不能用上面的方法向视图类中添加控件了,也就不能在设计时设定它们的属性,必须在运行时使用DBGrid和RemoteData控件的Create()函数创建对象,然后再设置属性。请看示例程序2。
二示例程序
按如下步骤创建:
运行AppWizard生成项目DBGrid。选择MultipleDocument,CDBGridView的基类为Cview不变,其他仍然按默认设置处理。
在项目DBGrid中添加DBGrid控件和MicrosoftRemoteData控件。与示例程序1相同。
在CDBGridView类中加入两个数据成员。一个是类CRdc变量m_rdcstudent,另一个是类CMsDgridCtrl变量m_dbgstudent。
加入这两个控件的子窗口ID常数。从DeveloperStudio的View菜单中选择ResourceSysbols命令,然后加入ID符号ID_RDCSTUDENT和ID_DBGSTUDENT。
用ClassWizard映射视图的WM_CREATE和WM_SIZE函数。编辑DBGidView.cpp中的消息处理函数如下:
intCDbgridView::OnCreate(LPCREATESTRUCTlpCreateStruct)
{
if(Cview::OnCreate(lpCreateStruct)==-1)
return-1;
RECTr={0,0,100,30};
//createtheRDC
m_rdcstudent.Create(_T(“Student"),
WS_CHILD,r,this,IDC_RDCSTUDENT);
m_rdcstudent.SetDataSourceName(_T(“Student"));
m_rdcstudent.SetSql
(_T(“Select*fromstudent,section"));
m_rdcstudent.SetUserName(_T(“admin"));
m_rdcstudent.SetPassword(_T(“"));
m_rdcstudent.SetCursorDriver(2);
//createtheDBGridcontrol
&connectittoIDC_RDCSTUDENT
m_dbgstudent.Create(_T(“"),WS_VISIBLE|WS_CHILD,r,
this,IDC_DBGSTUDENT);
LPUNKNOWNpCursor=m_rdcstudent.GetDSCCursor();
ASSERT(pCursor!=NULL);
m_dbgstudent.SetDataSource(pCursor);//bindthegrid
m_dbgstudent.BindProperty(0x9,&m_rdcstudent);
return0;
}
voidCDbgridView::OnSize(UINTnType,intcx,intcy)
{
Cview::OnSize(nType,cx,cy);
//TODO:Addyourmessagehandlercodehere
Crectrect;
GetClientRect(rect);
::SetWindowPos(m_dbgstudent,HWND_TOP,0,0,rect.right
-rect.left,rect.bottom-rect.top,SWP_SHOWWINDOW);
}
编译并测试程序。
以上所述只是谈及DBGrid控件在绑定方式下使用方法,那么如何在在非绑定方式下使用呢?还请朋友们多指教。