MS控件使用详解
下载本文的示例源代码或材料
。 该控件是一个优秀的网格控件,VC可以方便地使用它来显示数据。 我不否认网上有很多优秀的网格控件,但是我一直喜欢用微软自己的东西。 除非不能满足我的需求。 并不是我太依赖它。 想想看,如果你最常用的开发工具是VC。 VC是微软的主要开发工具。 它与 W 系统(包括其控件)具有出色的兼容性。 为什么不先选择它呢? 成熟的代码,如果升级了,你的系统几乎不需要任何改动就可以继续为你工作。 怎么了? 这并不完全是不必要的依赖,而是利用。 更重要的是,您可以更多地关注系统的功能而不是代码的细节。
1.先解释一下主要内容
在网格控件中显示查询数据结果。
控制网格控件的显示(如列宽)。
控制网格内容格式(例如将小于1的小数显示为百分比)
2、准备工作
首先创建一个项目,我的主框架选择对话框,然后插入你的控件,如图1
图1
找到OLEDB 6.0控件,确认,会出现如图所示的对话框。 在此对话框中,您需要根据需要选择类别。 这些类封装了该控件的几乎所有功能和方法。 这里我只选择了三个类:CD、,如图2(我们知道A是基于COM的,这三个类是对这个控件的COM查询接口的封装,这样当你几乎不知道自己在做什么的时候)使用它。您使用的是COM控件。因此,您无法直接查看该控件的源代码。)
图2
3.功能实现及代码
1. 在网格控件中显示查询数据结果。
连接数据库并获取查询数据结果。 这里我使用了一个ADO封装类(当然你可以使用其他方法来访问数据库而不影响控件的使用)。
;//数据库对象
m_Rs;//记录集对象
;//控制对象
...
; .(_T("=.Jet.OLEDB.4.0;")
_T("数据=note.mdb"));
。打开(()); //打开程序数据库
太太。(&); m_Rs.Open(_T(" * 来自测试;")); //执行查询
.(()m_Rs.());//在控件中显示
如图3所示:
图3
2.控制网格控件的显示(如列宽)。 要控制列,首先必须获取列对象。
cols = .();//先获取列集
列 = 列。(vt); //获取列集合中的列,并使用vt变量指出该列的索引号
然后,您可以对当前列执行任何您想要的操作。 这里我给它设置了列宽 col.();//指定列宽如图4
图4
3.控制网格内容格式(例如将小于1的小数显示为百分比)
设置某列的显示格式,仍然需要先获取该列,然后对其进行格式化。 柱的获取方法同上。
col.(_T("0.0%"));//百分比格式如图5
图5
4、另外我们还可以多行显示,如图6
图6
5、另外,还可以利用消息机制来处理控件的消息,以便对控件进行排序。 (详细见源码)
4。结论
细心的朋友会发现,通过查看相关类的方法名(函数名),就能理解名称的含义,看到控件的功能。 另外,在插入控件的时候,通常都会有帮助文件,不过是针对VB的,而VB的调用方法和VC的有很大不同,不过只要对比一下VC和VB的方法名的相似之处,您仍然可以快速开始使用此控件并将其应用到您的项目中。
本文源程序已在VC6.0英文版和XP下调试过,附源程序(工程名)。
========
VC++应用实例详解系列(一)——基本功能
下载本文源码:
1)简单演示组件和Data组件的使用;
2)介绍如何设置数据源的相对路径;
3)控制控件的显示
文本:
该控件是一个网格控件,主要用于显示数据。 本文使用的控件全称是:6.0(SP6)(OLEDB),以下简称辅助控件数据6.0(SP6)(OLEDB),以下简称ADODC,其中ADODC主要是它用于绑定数据源并过滤所需字段。 该组件用于根据需要显示过滤后的字段。
VC++6.0本身没有这些控件。 有关添加控件的详细信息,请参阅:
其中,类很多,只需添加自己需要的几个即可。 这里添加以下三个:,,。 ADODC 类较少,默认添加。
根据MFC创建一个基础工程文件,命名,添加组件和ADODC组件。
ADODC组件设置如下:
在“”选项卡中,使用“使用”选项,点击构建,按照向导选择数据源,测试通过后,修改连接字符串如下:
=.Jet.OLEDB.4.0;Data =//Demo.mdb;Mode=|共享拒绝无; 信息=假
其中:Data使用的路径是相对路径,也就是说:数据源是源代码文件夹下文件夹中的Demo.mdb文件。
然后右键该组件,选择,选择Class:,在标签页中设置成员变量如下:
添加成员变量:;
添加成员变量:.
确认无误后,在.cpp中的初始化成员函数::()中添加如下代码:
布尔::()
::();
//为此设置图标。 这样做的
// 当 的 main 不是 a 时
(, 真的); // 设置大图标
(, 错误的); // 设置小图标
// TODO: 在这里添加额外的内容
//添加的代码
=.(); //查找列集合对象
;
.添加(2); //最后添加1列,注意:列号从0开始
.添加(3); //再添加1列
=.((长(0))); //获取第一列对象
.(80); //将列宽设置为80(像素pi?)
。(“姓名”); //设置列标题
//.(2); //列内容对齐设置:0在左边,1在中间,2在右边
。(“姓名”); //设置列绑定字段
=.((长(1))); //设置第二列
.(80); //设置列宽为80
。(“年龄”); //设置列标题
。(“年龄”); //设置该列的绑定字段
=.((长(2))); //设置第三列
.(40); //设置列宽为40
。(“性别”); //设置列标题
.(""); //设置列绑定字段
=.((长(3))); //设置第四列
.(120); //设置列宽为120
。(“住宅”); //设置列标题
。(“城市”); //设置列绑定字段
.(); //实现表绑定
.(); //刷新列表显示
真的; // TRUE 将焦点设置为
以上就是该组件基本功能的实现。 其他功能如添加列下拉组合框、搜索、分页、打印、导出Excel等功能将在本系列中介绍。
========
VC简单使用示例
本文是VC6.0中控件的使用的基本示例。 主要功能是插入一行数据并在控件中显示,删除一行数据并在控件中显示。
1 在VC6.0中创建(exe)工程;
2 进口管制:
路径:-->添加到-->和
选择一个集合:
选择组件,选择后不要忘记“”:
要演示当前的功能,只需选择图中的三个类别即可:
此时,该组件就被导入到工具箱中了。 在Form中绘制完成后,为其添加一个控制变量;
3 实现数据绑定:
对于数据库操作,我这里使用ADO来执行;
如果您想使用 ADO,请不要忘记将其导入到您的 .h 中:
#“c:/files/files//ado/.dll”
我用的是开发版自带的数据库连接字符串。 数据库连接字符串设置如下:
=“=.1;=SSPI;信息=False;=;数据=.//”;
注:Data的设置与2005年之前的版本略有不同;
初始化对话框时的数据绑定代码:
布尔::()
...{
//............上面省略了几行
// TODO: 在这里添加额外的内容
;
.(_T());
。打开(()); //打开程序数据库
太太。(&);
m_Rs.Open(_T(" * 来自 ;"));
.(_T("添加")); //设置标题
。(()太太。()); //绑定数据源
真的; // TRUE 将焦点设置为
4 插入操作:
这个很简单,代码如下:
布尔::()
...{
;
.( _T(" INTO (, em_id, , )('%s', '%s', '%s', '%s');")
, , , , );
m_Rs.Open(());
m_Rs.Open(_T(" * 来自 ;"));
。(()太太。());
真的;
5 删除操作:
这需要一点思考。
这里,我将em_id设置为我的数据库中的主键,所以我只能获取指定行的ID值作为删除条件。 如果您的需求发生变化,您需要组合更多几个关键值:
布尔::()
...{
指数;
;
;
索引.vt=;
=.(); //获取当前选中行的列集
长= .(); //列数
索引.lVal = 1;
= .(index);//依次获取单元格的值
大步走;
步长=.();
跨步。('');
;
.( _T(" 来自 em_id='%s'")
,跨步);
m_Rs.Open(());
m_Rs.Open(_T(" * 来自 ;"));
。(()太太。());
真的;
========
VC++应用实例详解系列(二)——过滤查询
下载本文源码:
1)在系列(1)的基础上添加日期时间组件,并使用该组件+按钮实现数据查询;
2)简单介绍Date Time的用法;
3)简单介绍一下按钮组件的事件中从其他组件接收变量以及更新变量的基本过程。
上一篇文章的补充(一):
1)如何设置数据源绑定:在Data组件中设置好数据源后,右键单击该组件,选择“”,点击属性页右上角的三角箭头,拉至“全部”选项卡,找到Data属性,下拉列表框中选择“IDC”,如下图:
数据源绑定
2)关于vc6.0补丁:使用上述控件之前最好先打vc6.0 sp6补丁。
文本:
在对话框窗体上添加日期时间组件,并添加两个按钮,并将按钮设置为“查询”和“显示全部”。
右键单击Date Time控件,设置该控件的成员变量,选择类型,并为变量命名。 基本用法与设置成员变量类似。
在.cpp文件中添加代码:
1)在对话框初始化函数中添加新列,并添加日期列的代码。 按照上面(1)介绍的方法即可,这里不再赘述。
2)为查询按钮添加事件如下:
空白 ::()
// TODO: 在此处添加您的代码
尝试
//获取控件当前的数据,(false):更新控件中的数据(根据已有的变量值)
(真的);
//定义CTime类型变量vTime并初始化
CTime vTime(2011,3,1,3,3,3);
//从Date Time控件中获取时间值()并赋值给vTime
.(vTime);
//将vTime转换为ymd格式的字符串,并赋值给字符串变量
=vTime.("%Y-%m-%d");
/* 你可以在这里设置另一个连接字符串*/
//.("=.Jet.OLEDB.4.0;Data =//Demo.mdb;Mode=Read;Info=False");
/* 输出记录过滤语句 */
.(" * 来自 []=#"++"#");
//更新组件中的数据()
.();
捕获(&e)
(e.());
对于上面的代码,这里专门介绍一下()函数的用法:
(TRUE):获取控件的当前数据
(FALSE):更新控件中的数据
例如:编辑控件将变量设置为 ,该变量是控件中的变量,定义为:
;
(真的);
= ;
含义:只有调用(TRUE)后,才能获取控件当前输入的值(如果没有输入,则为默认值),否则仍为上次赋值的值(如果没有输入,则为默认值)输入,将显示默认值)。
如果在 和 then 中输入一个值 (FALSE),则表示:
控件接收输入值。 如果不是 (FALSE),则控件仍显示原始值。
另外,我们简单解释一下上面()函数的参数含义:
vTime.("%Y-%m-%d");
其中:第一个参数“Y”代表4位年份(例如:2011),如果是“y”则只取最后两位数字(例如:11),第二个参数“m”代表2 -数字月份(例如:03),这里显示的结果大小写相同。 第三个参数“d”必须是小写,表示第2天。 如果改成大写就不会显示。
另外,需要注意CTime与CTime之间的转换。 参考上面的代码就可以了。
根据上面的设计,查询完成后,无法显示所有数据,所以这里添加了一个显示所有数据的按钮。 代码如下:
空白 ::()
// TODO: 在此处添加您的代码
尝试
(真的);
。(“ * 从 ”);
.();
捕获(&e)
(e.());
如果您想查看所有数据,请单击此按钮。
========