分享一个VB6表格控件
vb吧
全部回复
仅看楼主
level 13
之前一直在用VSFlexGrid做数据处理,自由度很高,但网上基本都是盗版,如果涉及软件分发难免会有版权风险。于是前阵子找到一个国外开发的表格控件。
控件名字叫VBFlexGrid,基于MSFlexGrid开发,可完全平替,属性、方法、事件相当丰富,功能强大可媲美VSFlexGrid,关键是开源免费,开发者(Krool)从2017年一直到现在仍在持续更新。
开源地址:
https://github.com/Kr00l/VBFLXGRD
2025年06月09日 11点06分 1
level 13
• 可以滚动超过65535行。(MSHFlexGrid中的16位限制)
• 即使没有滚动条,也可以更改TopRow/LeftCol属性。(MSFlexGrid和 MSHFlexGrid的限制)
• RemoveItem方法允许删除最后一个非固定行。(与VSFlexGrid类似)
• 可以使用鼠标滚轮滚动。(MSFlexGrid和 MSHFlexGrid的限制)
• 支持水平鼠标滚轮。
• 包含AllowReaderMode属性,以支持自动滚动和平移的阅读模式。
• 单元格数量没有350000的限制,单元格数量限制仅由可用内存空间决定。(MSFlexGrid的限制)
• 包含FrozenRows/FrozenCols属性。
• 包含AllowUserFreezing属性。
• 包含AfterUserFreeze事件。
• 包含RowSizingMode属性。(与 MSHFlexGrid类似)
• 包含Align属性。
• 包含DisableNoScroll属性。
• 在Compare事件中添加了Col参数,这在进行多列排序时很有帮助。
• 可以在子类中拦截WM_ERASEBKGND以填充自定义背景(如果需要)。
• 包含BackColorAlt属性,用于设置交替行的背景颜色。(设置BackColor会自动将BackColorAlt设置为相同的值)
• 包含DoubleBuffer属性。
• 包含RightToLeft属性。
• 包含AllowMultiSelection属性,以及相关的RowSelected/SelectedRow/SelectedRows属性和MultiSelChange事件。
• 包含AllowSelection属性。
• 包含TabBehavior属性。
• 包含DirectionAfterReturn属性。
• 包含WantReturn属性。
• 包含ExtendLastCol属性。
• 包含SheetBorder属性。(默认为True,行为类似于MSFlexGrid,否则无边框,类似于 MSHFlexGrid)
• 包含WrapCellBehavior属性。
• 包含ClipSeparators属性。
2025年06月09日 11点06分 3
level 13
• 包含ClipSeparatorCol/ClipSeparatorRow属性(仅在运行时)用于更改默认值并支持超过1个字符的分隔符。
• 包含ClipMode属性,用于确定在剪贴命令中是否包含(默认)或排除隐藏单元格。
• 包含ClipCopyMode属性,用于确定复制到剪贴板或由剪贴命令返回的部分。
• 包含ClipPasteMode属性,用于确定如何从剪贴板或通过剪贴命令粘贴内容。
• 包含ParseClip/ConstructClip函数。(将剪贴字符串解析/构造为二维数组)
• 包含BeforeClipboardAction/AfterClipboardAction事件。
• 包含ShowInfoTips、ShowLabelTips和CellToolTipText属性。
• 包含ShowScrollTips属性以及相关的ScrollTip事件和ScrollTipText属性。(仅在运行时)
• 包含ScrollTipFollowThumb属性。
• 包含ScrollTrack属性。
• 包含EllipsisFormat/EllipsisFormatFixed属性。
• 包含ColImageList属性(Variant,可以是控件或句柄)以及相关的CellImageCallback事件。
• 包含ColTextIndent属性以及相关的CellTextIndent事件。
• 包含ColWordWrapOption/ColWordWrapOptionFixed属性。(与 MSHFlexGrid类似)
• 包含MimicTextBox和ColMimicTextBox/ColMimicTextBoxFixed属性。
• 在GridLine属性中包含Dashes/Dots枚举。(与 MSHFlexGrid类似)
• 包含FontFixed属性。(与 MSHFlexGrid类似)
• 包含FontQuality属性。
• 包含GridLineWidthFixed属性。(与 MSHFlexGrid类似)
• 包含FixGridLineOffsets属性和GetGridLineOffsets方法。
• 包含GetMetrics方法。
• 包含MirrorAlignGeneral属性。
• 包含SingleLine属性。
• 在FocusRect属性中包含Flat枚举。
• 包含Cell属性,允许直接获取或设置任意单元格或单元格范围的设置,而无需选择它们。
• CellTextStyle返回Control中的TextStyle/TextStyleFixed,当未预设时,而不是0。
• CellAlignment返回列(ColAlignment或FixedAlignment)中的对齐方式,当未预设时,而不是0。
• CellBackColor/CellForeColor返回Control中的BackColor/ForeColor,当未预设时,而不是0。
• 当设置值为-1时,CellTextStyle/CellAlignment/CellBackColor/CellForeColor不再预设。
• CellChecked属性用于复选框,以及CellBeforeCheck/CellCheck事件。
• 包含ColCheckBoxAlignment/FixedCheckBoxAlignment/ColCheckBoxes属性。
• 包含ColCheckBoxesHitTestInvisible/ColCheckBoxesHitTestInvisibleFixed属性。(无法与鼠标光标交互)
• 包含CheckBoxDrawMode属性以及相应的CheckBoxOwnerDraw事件。
2025年06月09日 11点06分 4
level 13
• 包含ColWidthMin属性。(类似于RowHeightMin属性)
• 包含RowHeightMax/ColWidthMax属性。
• 包含RowHeightUniform(仅在运行时)属性。(用于FlexRowSizingModeUniform)
• 包含MouseEnter/MouseLeave事件。
• 包含HitTest方法,指定X和Y。返回值在HitRow/HitCol/HitRowDivider/HitColDivider/HitResult属性中。
• DragRow/DragCol函数用于通过拖动指定的行/列到新位置来重新排列行/列。
• 包含OLEDragDropScroll/OLEDragDropScrollOrientation属性。
• 包含DropHighlight/DropHighlightMode属性(仅在运行时)。
• 包含InsertMark/InsertMarkMode属性(仅在运行时)。
• HitTestInsertMark函数包含指定的X和Y以及可选的After参数。
• 包含InsertMarkColor属性。
• 包含FindItem函数。
• FixedAlignment属性接受索引-1(类似于ColAlignment)以将值应用于所有列。
• 当设置值为-1时,FixedAlignment不再预设。
• 用户调整行和列大小时,鼠标光标现在被剪切。
• CellHasCustomFormatting/CellHasTag属性如果分配了内存则返回True。设置为False以释放内存或设置为True以强制分配。
• CellTag属性用于存储任何额外数据的变体。
• 包含CellEnsureVisible方法,具有可选的可见性参数。(默认为FlexVisibilityCompleteOnly)
• 包含BottomRow/RightCol属性,具有可选的可见性参数。(默认为FlexVisibilityPartialOK)
• RowsVisible/ColsVisible/FixedRowsVisible/FixedColsVisible/FrozenRowsVisible/FrozenColsVisible属性具有可选的可见性参数。(默认为FlexVisibilityCompleteOnly)
• RowIsVisible/ColIsVisible属性包含可选的可见性参数。(默认为FlexVisibilityPartialOK)
• 包含RowHidden/ColHidden属性。(与将RowHeight/ColWidth设置为0相同,但此方法保留原始设置)
• 包含ColKey/ColIndex和RowID/RowIndex属性。(用于标识指定的列/行)
• 包含ColDataType/ColNullable/ColNumericPrecision/ColNumericScale/ColDataCapacity属性。
• 包含ColResizable属性。
• 包含ColLookup属性和LookupConv函数。
• 包含ColFormat/FixedFormat属性。
2025年06月09日 11点06分 5
level 13
• 包含RowsPerPage/ColsPerPage属性,返回当前页面上显示的非固定列/行的数量以滚动。(此处没有可见性参数)
• 包含GetSelRange方法,用于检索单元格的选择范围,顺序为Row1<=Row2和Col1<=Col2。
• 包含SelectRange方法,通过单个命令选择一系列单元格或单元格(通过省略RowSel/ColSel)。
• 包含SelectAll方法,通过单个命令选择所有单元格。
• 包含GetMergedRange方法,用于检索给定行/列上的合并单元格。
• 当用户通过鼠标扩展选择时,SelChange事件也会触发。(MSFlexGrid和 MSHFlexGrid的限制)
• 滚动事件在TopRow/LeftCol属性更改时触发。(MSFlexGrid和 MSHFlexGrid的限制)
• 包含BeforeUserResize/AfterUserResize/AfterUserResizeEnd事件。
• 包含BeforeRowColChange/BeforeSelChange事件。
• 复制/剪切/粘贴/删除方法,AutoClipboard属性以及BeforeClipboardAction/AfterClipboardAction事件。
• 包含撤销/重做/重置撤销队列方法,可以撤销/可以重做函数以及撤销限制属性。
• 清除方法包含可选的Where/What参数。
• 清除行信息/清除列信息方法用于清除信息结构。索引-1将清除所有行/列的信息结构。
• 当MergeCells设置为非0值(从不)时,仍然可以选择高亮显示。(MSFlexGrid和 MSHFlexGrid的限制)
• MergeCells可以将多个行和列合并在一起。(MSFlexGrid和 MSHFlexGrid的限制或错误)
• 在MergeCells属性中包含FixedOnly枚举。
• 在Sort属性中包含UseColSort枚举以及相应的ColSort属性。
• 包含ColSortArrow/ColSortArrowAlignment/ColSortArrowColor属性。
• 包含SortArrowColor/RowSortArrows属性。
• 在Sort/ColSort属性中包含货币升序/货币降序和日期升序/日期降序枚举。
• 包含单元格泛洪百分比/单元格泛洪颜色/泛洪颜色属性。
• 包含AutoSize方法。
• 包含BestFitMode属性,用于AutoSize/FormatString。
• 在PictureType属性中包含增强型图元文件枚举。包含壁纸/壁纸对齐属性。
• 包含AllowIncrementalSearch属性以及事件和运行时属性。(增量搜索功能)
• 包含TextWidth/TextHeight函数。
• 包含分隔符双击事件。
• 包含数据刷新方法。
• 包含FlexDataSource属性(仅在运行时)用于通过IVBFlexDataSource接口设置自定义数据源。
• 包含AllowUserEditing属性以及事件和运行时属性。(单元格内编辑功能)
• 包含AllowScrollLock属性,用于检查vbKeyScrollLock的切换状态,以便用户使用箭头键滚动。(类似于Excel)
• 还有一些其他 minor 改进。
2025年06月09日 11点06分 6
level 13
链接:网页链接提取码:1z41
GitHub上不去的可以看这里
2025年06月09日 11点06分 7
level 9
太棒了!一直在找这个
2025年06月11日 00点06分 8
level 13
前不久跟作者反馈希望加入loadarray方法,现已发布更新,测试10000*20的数组加载只需要几十毫秒,相当不错了
2025年06月13日 08点06分 9
level 5
感谢大佬分享
2025年07月04日 00点07分 10
level 5
简单试了一下,不知道一些高级用法,楼主有示例么,比如插入图片、图表,单行高度调整,鼠标框选复制数据含标题
2025年08月07日 12点08分 11
'插入图片 Set VBFlexGrid1.CellPicture = Picture1.Picture '行高调整 VBFlexGrid1.RowHeight(1) = 300 '复制选中区域数据 VBFlexGrid1.Copy 图表不知道有没有,我没用到这个,里面有个demo你可以运行看看
2025年08月08日 00点08分
@空中熬翔🌴 谢谢,下载的工程老报错呢。自己调用,一些高级功能不会用
2025年08月08日 05点08分
回复 电脑知识爱好者 :试试手动注册一下控件,以及作者有提到,IDE环境下对OLEGuids.tlb有依赖,尝试引用。我用它给公司做了两个小型软件,有些用法可以问我,或许可以帮到你。或者可以去vbforums论坛回帖问开发者,他基本都会回复,帖子链接在GitHub主页
2025年08月08日 06点08分
@空中熬翔🌴 谢谢。他这个可以脱离ocx,直接引用OLEGuids.tlb加载界面么?MSFlexGrid要带上ocx才能用,感觉不方便
2025年08月08日 07点08分
level 7
我也做了一个自用,基于MSFlexGrid,有些bug给补上。比如设FixedRows=1,Rows=1,但row得1,我想要的是0。
2025年08月10日 01点08分 12
这也不算bug吧,不管是VBFlexGrid还是Vsflexgrid,总行都是包含固定行的
2025年08月10日 01点08分
@空中熬翔🌴 说的是get到的row=1
2025年08月11日 00点08分
1