Visual C++环境下DBGrid控件的使用
浙江省温岭电信局:王骏
DBGrid数据表格控件以其短小精悍而深受大家的喜爱,但其如何在Visual
C++中使用
却很少有文章提及,本文将VC下使用DBGrid的具体步骤简要地介绍给大家。
一.前期准备
为了实现DBGrid控件的自动捆绑,我们需要建立一个数据库和与之关联的数据源,本例中我们用Access建立数据库mydata.mdb,在数据库中新建一张表users,包含三个字段username,address,email,并输入多条记录。
在控制面板ODBC数据源中建立名称为test的系统DSN,并将其指向mydata.mdb
二.创建工程
新建一个基于对话框的MFC
AppWizard (exe)工程,取名为GridTest,并在AppWizard
的第2步中确认已经提供ActiveX控件支持。
三.插入控件
我们需要插入Microsoft
RemoteData Control与DBGrid
Control两个控件,方法如下:
1)选择菜单->Project->Add
to Project->Components and Controls Gallery
2)在部件选择对话框中进入Registered
ActiveX Controls
3)选择Microsoft
RemoteData Control ,单击Insert按钮,确认后对类进行配置(可以按
默认),我们不做任何修改单击OK按钮,插入完成。
以同样的步骤,插入DBGrid
Control控件。
4)回到VC工作区,我们在ResourceView中选择GridTest对话框模板(即ID号为IDD_GRIDTEST_DIALOG的对话框模板)此时我们发现在Controls工具条中已经新增了两个按钮,分别表示刚才插入的两个控件。
5)现在我们在模板中画出这两个控件,如图所示:
四.更改控件属性
鼠标右键单击RemoteData
Control控件,在右键菜单中选择Properties,弹出属性对话框,
在Control选项卡中选择数据源test,在SQL中输入SQL语句例如:select
* from users
如下图所示:
用同样的方法我们打开DBGrid控件的属性对话框。
单击All选项卡,在DataSource项中选择RemoteData
Control的ID号:IDC_REMOTEDATACTL1,
如下图所示:
整个程序就已经完成了,我们可以编译运行看看效果如何!值得注意的是在运行前应先将Access关闭,否则将无法访问数据库。
本文较详细地介绍了DBGrid控件的基本使用方法,其它各类表格控件也可以参考这个过程,希望对大家有所启迪。
环境:Visual
C++6.0 ,Windows98
--------------------next---------------------
1、怎样动态地改变Datagrid中每一列头的文字?
2、怎样将Datagrid中的某一列设置为只读?
( dxy821 发表于 2004-6-15 11:24:00)
数据源是access的可以正常使用,但是如果是sql server,却是不能修改的,请问如何处理?我的邮箱为pgood_2000@163.net ( pgood_2000 发表于 2003-7-1 11:20:00)
使用ADO可以用如下两个控件:
Microsoft ADO Data Control,version 6.0 (OLEDB)
Microsoft DataGrid Control,version 6.0 (OLEDB)
控件加入方法如前面所述。 ( stkxwzh 发表于 2003-3-12 15:10:00)
请问如何和ADO相连呢。 ( youzhuwei 发表于 2002-11-13 14:21:00)
DBGrid是个很好的控件,我在此基础上增加一些功能:
添加、删除、刷新等。不知怎样实现?请多关照!!! ( rovefellow 发表于 2002-9-3 16:51:00)
我今天试出来了。
方法是:
在确认所要画的网格的行数后,利用如下的代码实现,(假设网格的变量名称是 m_grid,新的行数的变量名称是 nNewRows)
m_grid.SetRows(nNewRows);
m_grid.Refresh();
我原来失败的代码是:
m_grig.SetGridLines(nNewRows);
( gorva 发表于 2002-7-26 12:30:00)
你好,我是刚开始使用VC不久的。
有个问题想向你请教:
我现在是可以用 ODBC 把 SQL Server 2000中的数据取出来,并且可以把数据显示在对话框中的网格控件中。问题是,我在定义网格控件时,已经定义了它的行数(Row),我想在程序的运行过程中根据数据库资料的笔数动态地改变网格的行数,但一直无法成功。
我用 void SetGridLines(long nNewValue) 这个函数(用法是: GridMemberName.SetGridLines(20);),但在运行时却出现 Invalid property value 的错误,请问我该如何做呢?
谢谢!
我的地址是:gorva@163.com ( gorva 发表于 2002-7-25 17:43:00)
你好,我是刚开始使用VC不久的。
有个问题想向你请教:
我现在是可以用 ODBC 把 SQL Server 2000中的数据取出来,并且可以把数据显示在对话框中的网格控件中。问题是,我在定义网格控件时,已经定义了它的行数(Row),我想在程序的运行过程中根据数据库资料的笔数动态地改变网格的行数,但一直无法成功。
我用 void SetGridLines(long nNewValue) 这个函数(用法是: GridMemberName.SetGridLines(20);),但在运行时却出现 Invalid property value 的错误,请问我该如何做呢?
谢谢! ( gorva 发表于 2002-7-25 17:42:00)
为什么和ADO的DATA Ctrl没法关联起来 ( gucloud 发表于 2002-5-16 9:11:00)
.......................................................
--------------------next---------------------