SolidWorks机械工程师网——最大的SolidWorks学习平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 30097|回复: 30
打印 上一主题 下一主题

VBA表格神器VSFlexgrid

  [复制链接]

15

主题

129

帖子

359

金币

传奇

Rank: 8Rank: 8

积分
3821

最佳新人活跃会员热心会员宣传达人灌水之王

跳转到指定楼层
楼主
 楼主| 发表于 2021-10-21 11:35:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

   经典图书
vsFlexGrid常用功能介绍
vsFlexGrid是ComponentOne公司的一个ActiveX控件,它与MS的MSHFlexGrid控件在功能上是兼容的,即MSHFlexGrid所具备的属性和方法,它也都具备,只有少数几个属性名称略有不同,使用MSHFlexGrid编写的程序,只需要作较小的调整就可以转换过来;但相比MSHFlexGrid,vsFlexGrid多了很多功能,它的属性和事件非常丰富,可以实现非常灵活的控制和快捷的编码,下面主要对一些常用和实用的功能进行介绍:
一、数据批量操作
l  利用Cell属性批量存取数据
比如要清除一块区域的文本,或者设置一块区域的字体,不用循环处理,只需要一条语句就可以完成,如:
vsFlexGrid.Cell(flexcpText,1,1,5,5) = “” ‘设置(1,1)-(5,5)这块单元格区域的文本都为空
vsFlexGrid.Cell(flexcpFontBold,1,1,5,5)=True‘设置(1,1)-(5,5)这块单元格区域的字体都为粗体
类似还可以设置的有单元格对齐、图片、颜色等。

而语句:strText =vsFlexGrid.Cell(flexcpText,1,1,5,5)
返回一个用vbTab间隔列,vbCr间隔行的字符串,当然也可以反过来赋值,这样该区域内的每个单元格都可以赋不同的值。
l  使用-1对所有行列进行处理
RowHeight(-1)=300 ‘将所有行的高度设置为300Twip,可以类似使用的属性有:
RowHidden,ColWidth,ColHidden,ColAlignment等

与vsFlexGrid配合可以实现强大的打印相关功能)
二、大量数据存放
vsFlexGrid可以存放数据的地方有:CellText,CellData,ColData,RowData
除了CellText是String类型外,其他都是Variant类型,也就是说你可以将任意类型的数据存放在表格中,比如日期(Date),类型变量(Type),集合(Collection),数组,记录集(RecordSet),以及各种对象(Object),这对于关联数据比较多的程序非常有用。

注意:vsFlexGrid.Cell(flexcpText,1,1)= rsData!Name实际是存放了一个ADO.Field对象,应该使用CStr(rsData!Name)对类型进行明确。
三、编辑特性
vsFlexGrid的单元格是可以编辑的,并且有以下几种编辑形式:
l  文本框:只要Editable设置为可编辑,每个单元格缺省就是TextBox编辑样式
l  下拉框:
设置当前单元格的ComboList属性或者指定列的ColComboList属性,即可实现VB.ComboBox样式的单元编辑,而且下拉界面中可以显示多列,如:
vsFlexGrid.ComboList = _
“|#100*1;张三” & vbTab& “男” & vbTab & “28岁” & _
“|#101;李四” & vbTab& “男” & vbTab & “29岁” & _
“|#102;王五” & vbTab& “男” & vbTab & “30岁”
其中”|”间隔的是各行数据,vbTab间隔的是各列数据;第1个”|”表示下拉框可以输入,”#”后面的是每行的ItemData, 第一个ItemData后面”*1”表示是第1列的数据在选择后显示在ComboBox中。

l  复选框:
设置指定列的ColDataType =flexDTBoolean,或者指定当前元单格的CellChecked属性即可。
l  选择按钮:
设置当前单元格的ComboList属性或者指定列的ColComboList属性为”…”即可,主要配合CellButtonClick事件使用。
四、界面特性
1)        边框
除了表格线之外,vsFlexGrid还可以类似Excel一样,设置单元格式的边框线条,包括颜色、粗细,有无:
VSFlexGrid.CellBorder Color As OLE_COLOR,Left As Integer, Top As Integer, Right As Integer, Bottom As Integer, VerticalAs Integer, Horizontal As Integer

2)        自动行高,列宽
使用AutoSize方法,可以使列宽、或者行高根据单元格的内容进行自适应调整。
其中列宽也可以通过双击表头进行自适应调整。

3)        树形缩进(TreeList)
通过设置表格行的IsSubtotal、RowOutlineLevel属性,可以实现树形风格的缩进层次样式,这样vsFlexGrid就可以实现TreeView和ListView的结合。

4)        自绘
通过设置OwnerDraw属性,可对实现对单元格内容的自绘处理,主要结合DrawCell事件进行:
DrawCell(ByVal hDC As Long, ByVal Row AsLong, ByVal col As Long, ByVal left As Long, ByVal top As Long, ByVal right AsLong, ByVal bottom As Long, done As Boolean)

5)        背景
可以为vsFlexGrid设置背景图,背景图相对单元格式内容是透明的,并且可以设置对齐和平铺属性。

6)        列排序,行、列拖动
设置vsFlexGrid.ExplorerBar属性,就可以实现类似Windows的资源管理器一样,点击列头进行列数据排序,或者用鼠标拖动改变列、行的顺序。
7)        冻结行列
除了固定行列头外,还可以类似Excel一样,通过vsFlexGrid.FrozenCols/FrozenRows设置冻结行列,冻结行列在滚动时,和固定行列是一样的效果,但是光标可以进入到冻结行列范围内的单元格中去。

五、丰富的事件控制:
vsFlexGrid一共有50多个事件,这些事件主要用于编辑和界面控制,在使用过程中,经常可能会发现某个事件特别有用;因此充分利用这些事件,可以很方便地实现很多功能,下面是它支持的事件及对应列表,粗体是较常用的,从定义基本就可以看出它的作用;详细的事件说明,可以查看帮助。 VSFlexGrid Pro 8.0 中文手册.zip (1.02 MB, 下载次数: 219)
VSFlexGrid Pro 8.0基础教程.zip (691.23 KB, 下载次数: 112)
VSFLEXGRID控件.zip (275.11 KB, 下载次数: 185, 售价: 10 金币)

评分

参与人数 1威望 +5 金币 +40 贡献 +5 收起 理由
马老大 + 5 + 40 + 5 赞一个!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏6 转播转播 分享教程|习题|模型|技巧 点赞点赞1 拍砖拍砖
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复

使用道具 举报

15

主题

129

帖子

359

金币

传奇

Rank: 8Rank: 8

积分
3821

最佳新人活跃会员热心会员宣传达人灌水之王

沙发
 楼主| 发表于 2021-10-21 11:36:42 | 只看该作者
二、大量数据存放
vsFlexGrid可以存放数据的地方有:CellText,CellData,ColData,RowData
除了CellText是String类型外,其他都是Variant类型,也就是说你可以将任意类型的数据存放在表格中,比如日期(Date),类型变量(Type),集合(Collection),数组,记录集(RecordSet),以及各种对象(Object),这对于关联数据比较多的程序非常有用。

注意:vsFlexGrid.Cell(flexcpText,1,1) = rsData!Name实际是存放了一个ADO.Field对象,应该使用CStr(rsData!Name)对类型进行明确。


补充内容 (2021-10-21 16:34):
待续

补充内容 (2021-10-29 17:19):
六、附加功能:
1)         属性页:
在vsFlexGrid的属性页中,可以对表格进行格式和内容设计,这样可以省去一些代码(这部分属性页处理的内容保存在窗体的frx文件中)。

2)         导入/导出:
通过LoadGrid/SaveGrid方法,可以对表格内容进行导入导出;导入导出的格式有几种:
l  它自已的二进制格式。
l  带一定分隔符的文本文件。
l  Excel97格式(不需要安装 Excel,速度很快,但有一些属性不支持)。
3)         打印
通过PrintGrid方法,可以将vsFlexGrid按照当前的格式和数据进行打印输出,但这个功能比较简单,比如不能进行预览,设置页眉页脚等。(ComponentOne的另一套控件vsView与vsFlexGrid配合可以实现强大的打印相关功能)

作为一个只有600多K大小的控件(vsFlexGrid.ocx),功能这么强大确实非常不错,在ZLHIS中也进行了大量的使用,上面只是简略列举了它的部分功能,更详细的功能可以运行它的Demo进行展示,也可以查看它的帮助文件,都比较详尽
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复 支持 反对

使用道具 举报

9

主题

48

帖子

1004

金币

长老

Rank: 6Rank: 6Rank: 6

积分
1501
QQ
板凳
发表于 2021-10-22 12:13:10 | 只看该作者

   经典图书
很不错,顶一下!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

3

主题

125

帖子

58

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
447

最佳新人活跃会员热心会员宣传达人灌水之王

地板
发表于 2021-10-22 13:02:44 | 只看该作者
感谢楼主分享,很不错!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

516

帖子

16

金币

长老

Rank: 6Rank: 6Rank: 6

积分
2172

最佳新人活跃会员热心会员宣传达人灌水之王突出贡献

5#
发表于 2021-10-22 15:05:27 | 只看该作者

   经典案例图书
很不错,找到组织了!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

0

主题

50

帖子

1040

金币

长老

Rank: 6Rank: 6Rank: 6

积分
2939

最佳新人活跃会员宣传达人

6#
发表于 2021-10-25 12:48:38 | 只看该作者
楼主很专业,写得很好!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

15

主题

129

帖子

359

金币

传奇

Rank: 8Rank: 8

积分
3821

最佳新人活跃会员热心会员宣传达人灌水之王

7#
 楼主| 发表于 2021-10-25 17:40:27 | 只看该作者

   经典案例图书
用右键菜单操控表格 2.3右键菜单.zip (26.69 KB, 下载次数: 197, 售价: 20 金币)
合并单元格做出复杂的表头 2.4合并单元格做出复杂表头.zip (9.88 KB, 下载次数: 110, 售价: 10 金币)



SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

22

主题

1819

帖子

51

金币

传奇

Rank: 8Rank: 8

积分
6924

最佳新人活跃会员热心会员宣传达人灌水之王突出贡献

8#
发表于 2021-10-26 08:25:01 | 只看该作者
楼主很专业,写得很好!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

15

主题

129

帖子

359

金币

传奇

Rank: 8Rank: 8

积分
3821

最佳新人活跃会员热心会员宣传达人灌水之王

9#
 楼主| 发表于 2021-10-26 10:46:11 | 只看该作者
单元格内组合各种控件示例

2.2复选框.下拉列表.组合框和自定义编辑模式.zip (157.58 KB, 下载次数: 130, 售价: 30 金币)

SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

15

主题

129

帖子

359

金币

传奇

Rank: 8Rank: 8

积分
3821

最佳新人活跃会员热心会员宣传达人灌水之王

10#
 楼主| 发表于 2021-10-26 10:50:31 | 只看该作者

   经典图书
拖曳行列.排序和滚动条提示的示例

2.5拖曳行列.排序和滚动条提示.zip (19.75 KB, 下载次数: 198, 售价: 30 金币)


SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

15

主题

129

帖子

359

金币

传奇

Rank: 8Rank: 8

积分
3821

最佳新人活跃会员热心会员宣传达人灌水之王

11#
 楼主| 发表于 2021-10-26 10:57:54 | 只看该作者
汇总小计示例

2.6汇总小计.zip (13.07 KB, 下载次数: 168, 售价: 20 金币)
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

15

主题

129

帖子

359

金币

传奇

Rank: 8Rank: 8

积分
3821

最佳新人活跃会员热心会员宣传达人灌水之王

12#
 楼主| 发表于 2021-10-26 11:01:01 | 只看该作者
示例所用数据库,注意:该数据库必须与上面各宏文件放置在同一个目录

NWind.zip

(497.29 KB, 下载次数: 128

SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

15

主题

129

帖子

359

金币

传奇

Rank: 8Rank: 8

积分
3821

最佳新人活跃会员热心会员宣传达人灌水之王

13#
 楼主| 发表于 2021-10-26 11:09:44 | 只看该作者
注意:如果安装的vsFlexGrid版本可以直接绑定记录集,可以直接使用Set fg.DataSource = rst语句,便可直接绑定。
如果安装的vsFlexGrid版本不能直接绑定数据库,我增加了一个子过程Sub FillTable(fg As Object, ByRef rs As Object)可以将数据库填进表格。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

1

主题

217

帖子

2509

金币

传奇

Rank: 8Rank: 8

积分
7633

最佳新人活跃会员热心会员宣传达人灌水之王突出贡献

14#
发表于 2021-10-26 12:47:57 | 只看该作者
好帖!!!!!
SolidWorks机械工程师网
回复

使用道具 举报

2

主题

516

帖子

16

金币

长老

Rank: 6Rank: 6Rank: 6

积分
2172

最佳新人活跃会员热心会员宣传达人灌水之王突出贡献

15#
发表于 2021-10-26 13:28:10 | 只看该作者
加入QQ群
参与讨论和学习

SolidWorks技术交流群

或扫描二维码加入

SW机械工程师网,找到组织了!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

516

帖子

16

金币

长老

Rank: 6Rank: 6Rank: 6

积分
2172

最佳新人活跃会员热心会员宣传达人灌水之王突出贡献

16#
发表于 2021-10-26 13:32:12 | 只看该作者

   经典案例图书
SW机械工程师网,找到组织了!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

5

主题

44

帖子

423

金币

堂主

Rank: 4

积分
677
QQ
17#
发表于 2021-10-26 17:46:39 | 只看该作者
加入QQ群
参与讨论和学习

SolidWorks技术交流群

或扫描二维码加入

很不错,找到组织了!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

5

主题

134

帖子

789

金币

传奇

Rank: 8Rank: 8

积分
3072

最佳新人活跃会员热心会员宣传达人灌水之王

18#
发表于 2021-12-1 14:40:49 | 只看该作者

   经典案例图书
感谢楼主分享。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

0

主题

15

帖子

19

金币

天使

Rank: 2Rank: 2

积分
70

最佳新人

19#
发表于 2021-12-1 15:42:10 | 只看该作者
大神摩拜…………
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

0

主题

73

帖子

8

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
205

最佳新人活跃会员热心会员宣传达人

20#
发表于 2022-6-1 00:06:15 | 只看该作者
感谢楼主分享,很不错!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

SOLIDWORKS 2023 机械设计从入门到精通

手机版|小黑屋| GMT+8, 2025-5-26 03:49 , Processed in 0.261983 second(s), 28 queries , Memcache On.

SolidWorks机械工程师网 ( 鲁ICP备14025122号-2 ) 鲁公网安备 37028502190335号

声明:本网言论纯属发表者个人意见,与本网立场无关。
如涉版权,可发邮件: admin@swbbsc.com

快速回复 返回顶部 返回列表