MSFlexGrid表格控件详细说明
MSFlexGrid 表格控件详细说明
控件名:Microsoft FlexGrid Control
文 件:sys\\msflxgrd.ocx
============================= 属性
=========================================
■AllowBigSelection 属性 在行头或者列头上单击时,(是否)可以使得整个行或者列都被选中。
■AllowUserResizing 属性 (是否)可以用鼠标来对 MSFlexGrid 控件中行和列的大小进行重新调整。
-------------------------------------
■Appearance 属性 设计时的绘图风格
■BorderStyle 属性 边框样式
-------------------------------------
■BackColorBkg 属性 '表格多余部分颜色
■BackColorFixed 属性 '表格头部分颜色
■BackColorSel 属性 '选中部分颜色
■BackColor 属性 '所有未确定单元的颜色
■CellBackColor 和 CellForeColor 属性 返回或设置单个单元或者一群单元的背景和前景颜色。
-------------------------------------
■ForeColor、ForeColorFixed 以及 ForeColorSel 属性 各部分上文本的颜色。
■TextStyle 和 TextStyleFixed[= style ] 属性 返回或设置指定单元或者一群单元上文本的三维样式。
----------------------------------------
■FixedAlignment (index)= [value] 属性
列号,设置值
flexAlignLeftTop 0 左顶部
flexAlignLeftCenter 1 左中
flexAlignLeftBottom 2 左底部
flexAlignCenterTop 3 中顶部
flexAlignCenterCenter 4 中中
flexAlignCenterBottom 5 中底部
flexAlignRightTop 6 右顶部
flexAlignRightCenter 7 右中
flexAlignRightBottom 8 右底部
■ColAlignment(number) 属性 [= value ] 返回或设置某一列中数据的对齐方式
number=列号,或者 -1(一次性地对所有列进行设置)。 value 的设置值:
flexAlignLeft 0 左边对齐
flexAlignRight 1 右边对齐
flexAlignCenter 2 居中
■TextStyle 和 TextStyleFixed[= style ] 属性
返回或设置指定单元或者一群单元上文本的三维样式。
■CellTextStyle 属性 [= value ]单元或者一群单元上文本的三维样式
flexTextFlat 0 平面的(普通文本)
flexTextRaised 1 凸起的
flexTextInset 2 下陷的
flexTextRaisedLight 3 轻微凸起的
flexTextInsetLight 4 轻微下陷的
■CellPictureAlignment 属性 [= value ] 式
flexLeftTop 0 左边顶端对齐
flexLeftCenter 1 左边中间对齐
flexLeftBottom 2 左边底端对齐
flexCenterTop 3 居中顶端对齐
flexCenterCenter 4 居中中间对齐
flexCenterBottom 5 居中底端对齐
单元或者一群选定单元中图片的对齐方
flexRightTop 6 右边顶端对齐
flexRightCenter 7 右边中间对齐
flexRightBottom 8 右边底端对齐
■CellAlignment 属性 单元或者一群选定单元中的数据对齐方式。
flexLeftTop 0 左边顶端对齐
flexLeftCenter 1 左边中间对齐(对于字符串来说,这是缺省时的情况)
flexLeftBottom 2 左边底端对齐
flexCenterTop 3 居中顶端对齐
flexCenterCenter 4 居中中间对齐
flexCenterBottom 5 居中底端对齐
flexRightTop 6 右边顶端对齐
flexRightCenter 7 右边中间对齐(对于数字来说,这是缺省时的情况)
flexRightBottom 8 右边底端对齐
flexGeneral 9 一般的情况是:对于字符串来说,左边中间对齐,
对于数字来说,右边中间对齐
'设置所有单元的对齐方式
Static k As Integer
If k > 9 Then k = 0
For i = 0 To MSFlexGrid1.Rows - 1
For j = 0 To MSFlexGrid1.Cols - 1
MSFlexGrid1.Row = i
MSFlexGrid1.Col = j
MSFlexGrid1.CellAlignment = k
Next j
Next i
k = k + 1
----------------------------------------
■CellFontBold 当前单元文本的粗体样式
■CellFontItalic 当前单元文本的斜体样式
■CellFontName 当前单元文本的字体名
■CellFontSize 当前单元文本的尺寸
■CellFontStrikeThrough (是否)将 FontStrikeThrough 样式应用到当前单元文本中。
■CellFontUnderline 当前单元文本中(是否)下划线
■CellFontWidth 以点数表示的当前单元文本宽度
-------------------------------------
■CellHeight、CellLeft、CellTop 以及 CellWidth 属性
返回以缇为单位的当前单元的位置和大小。在设计时不可用。
■ColPos ( index ) 属性 该属性返回以缇为单位的控件左上角跟指定列左上角之间的距离。
■RowPos( index ) 属性 该属性返回以缇为单位的控件的左上角和指定行的左上角之间的距离。
■ColWidth( number ) [= value ] 属性 返回或设置以缇为单位的指定列的宽度
number 列号。如果是 -1,则一次对所有列进行设置。
value 列的宽度 0 创建不可见的列, -1宽度重置为其缺省值,这取决于当前字体的大小。
■RowHeight( number )[= value ] 属性 该属性返回或设置以缇为单位的指定行的高度。
若将 RowHeight 设置为 0,则创建不可见的行。
若设置为 -1,则将行的高度重置为其缺省值,这取决于当前字体的大小。
■RowHeightMin 属性 该属性返回或设置以缇为单位的整个控件的最小行高度。
----------------------------------------
■CellPicture 属性 当前单元或者一群单元中显示的图象[= picture ]
----------------------------------------
■Clip 属性 [= string ](当把数据放入MSFlexGrid 控件选定区域单元格)
该属性返回或设置 MSFlexGrid 控件的选定区域中单元的内容。在设计时不可用。
制表符Chr(9)移到右一格,回车换行符Chr(13)移到下一行
-------------------------------------------------------
■Col 和 Row [= number ] 属性 返回或设置活动单元的坐标(当前单元行、列)
■ColSel 和 RowSel[= value ] 属性 返回或设置一群单元的起始或结束的行或者列。在设计时不可用。
在设置了 Row 和 Col 属性之后,会自动对 RowSel 和 ColSel 进行重置
当前单元的值(由 Col 和 Row 的设置值所决定的),就是包含在那个单元中的文本。可以TextMatrix
属性在不改变已选定的 Row 和 Col 属性的情况下,对单元的值进行修改。
■Cols 和 Rows [= value ] 返回或设置 MSFlexGrid 中行或者列的总数。
■FixedCols 和 FixedRows [= value ] 固定列或者固定行的总数。缺省一个固定列和一个固定行
----------------------------------------------------------
■ColData(number) 和 RowData(number)属性[= value ]
返回或设置跟每个行和列相关联的一个任意的 long 类型的值
number 控件中的行号或者列号。
-------------------------------------------------------
■ColIsVisible(index) 属性 指定某列在当前(是否)是可见的
-------------------------------------------------------
■ColPosition(number)[= value ] 属性(横向移动)
■RowPosition(number)[= value ] 属性(纵向移动)
对行或者列的位置进行设置,从而允许将行和列移动到指定位置。
number 将被移动的行号或列号,value 行或者列的新位置。
当用这些属性来移动某一行或者列时,所有格式化信息都将随之一起移动。如果想只移动文本,
可以用 Clip 属性。例如,下面的代码当用户在某一行上单击时,将该行移动到第一个位置:
Sub MSFlexGrid1_Click ()
MSFlexGrid1.ColPosition(MSFlexGrid1.MouseCol) = 0
End Sub
-------------------------------------------------------
■Container [= container] 属性 返回或设置该控件的容器:Form、Frame、PictureBox
■DataBindings 属性 返回 DataBindings 集合对象,该对象包含了有用的可绑定属性。
■DataSource 属性 设置一个指定 Data 控件的值,通过这个控件将当前控件连结到数据库上。
在运行时不可用
要完成同 Data 控件所管理的 Recordset 中的字段的连接,还必须提供 DataField 属性中
Field 对象的名称。不同于 DataField 属性,DataSource 属性的设置在运行时不可用。
-------------------------------------------------------
■DragIcon [= icon]属性 返回或设置图标 ,它将在拖放操作中作为指针显示。
■DragMode [= number]属性 手动还是自动拖动方式。
■Enabled [= boolean] 属性 是否能够对用户产生的事件作出反应。
-------------------------------------------------------
■FillStyle [ = value ]属性
该属性返回或者设置一个值,该值决定了对 Text 属性或对 MSFlexGrid 的一个单元格式化属性
所进行的设置是否影响所有已选定的单元。
value 的设置值是: 0 单个(缺省的)。
1 重复。更改 Text 或者任何单元属性会影响所有已选定单元。
-------------------------------------------------------
■FocusRect [= value ]属性 是否应该在当前单元的周围画一个焦点矩形。
value 的设置值是:
flexFocusNone 0 无。 FlexFocusLight 1 细的(缺省的)。 FlexFocusHeavy 2 粗的。
■HighLight [= value ] 属性 该值决定了所选定的单元是否突出显示
value 的设置值是:
flexHighlightNever 0 从不突出显示所选定的单元。
flexHighlightAlways 1 总是突出显示所选定的单元。(缺省的)
flexHighlightWithFocus 2 当控件有焦点时,突出显示所选定的单元。
-------------------------------------------------------
■FontWidth [= value ] 属性 返回或设置以点数为单位文本显示使用的字体宽度。
0: 缺省宽度 其他:value的缺省
■Text [= string ]属性 返回或设置单元或者一群单元的文本内容。
检索时,Text 属性总是检索由 Row 和 Col 属性所定义的当前单元的内容。
设置时,Text 属性设置当前单元或者当前选定的内容,这取决于 FillStyle 属性的设置值。
■TextArray ( cellindex ) [= string ]属性该属性返回或设置任意单元的文本内容。
■TextMatrix ( rowindex, colindex ) [= string ]属性该属性返回或设置任意单元的文
本内容。
■FormatString [= string ]属性 固定行和固定列格式化的字符串
< ^ > 分别表示:左、中、右对齐,
| (竖线)表示单元分隔符
; (分号)表示列头和行头的分隔符。如
s$ =\"| s$ = s$ + \";|Robert|Jimmy|Bonzo|John Paul\" '设置行头 MSFlexGrid1.FormatString = s$ ------------------------------------------------------- ■GridColor 属性 ( GridLines 被设置为 1-普通线时有效) ■GridColorFixed 属性 (GridLinesFixed被设置为 1-普通线时有效) 返回或设置在各个单元之间画线所用到的颜色 ■GridLines 和 GridLinesFixed[= value ] 属性 返回或设置各单元之间的线的类型 value 的设置值是: flexGridNone 0 没有线。 flexGridFlat 1 普通线(对于 GridLines 来说是缺省的)。 flexGridInset 2 下陷线(对于 GridLinesFixed 来说是缺省的)。 flexGridRaised 3 凸起线。 ■GridLineWidth [= value] 属性 返回或设置网格线的像素数的宽度。1(缺省值)- 10。 ------------------------------------------------------- ■Height、Width 属性 外部高度和宽度 ■Left, Top 属性 对于窗体总以缇为单位来表达;对于控件决定于它的容器的坐标系统。 ■HelpContextID [= number]属性 返回或设置一个相关联上下文的帮助编号 0(缺省)没有上下文编号。 > 0用来指定有效上下文编号。 ■hWnd 属性 返回窗体或控件的句柄。用于Windows API调用 例如:强制窗体保持在最前面(见代码vb5-19,20) ■Index 属性 缺省时被设置成在集合中创建对象的次序。集合中的第一个对象的索引总是 1 ------------------------------------------------------- ■TopRow [= number ]属性 返回或设置最高的可见行(而不是固定行)。 ■LeftCol [= value ] 属性 返回或设置最左边的可见列(而不是固定列) 可以在代码中使用这个属性来有目的地滚动 MSFlexGrid。 ■RowIsVisible( index ) 属性 指示特定行当前是否可见。 ------------------------------------------------------- ■MergeCells [= value ]属性 该属性返回或者设置一个值,该值决定了是否应该将有同样内容的单元分组到横跨多个行或者列的同一个单元中。 value 的设置值是: flexMergeNever 0 (缺省的)不对有同样内容的单元进行分组 flexMergeFree 1 自由分组 flexMergeRestrictRows 2 对行有所限制 flexMergeRestrictColumns 3 对列有所限制 flexMergeRestrictBoth 4 行和列都限制 如:有限制的合并方式 MergeCells = 2 MergeRow(0) = True MergeRow(1) = True MergeRow(2) = True MergeRow(3) = False 这种合并单元的能力使得能以一种清晰、诱人的方式来显示数据。单元合并可以跟 MSFlexGrid 控件的分类和列排序能力协调使用。 为了利用 MSFlexGrid 控件的单元合并能力,必须做下面这两件事情: ■MergeCol 和 MergeRow ( number ) [= boolean ]属性 这两个属性返回或者设置一个值,该值决定了当 MergeCells 属性被设置为 0 (不合并)以外的值之后,哪些行和列的内容应当合并。如果 MergeCells 属性被设置为一个非 0 值,那么带有同样值的相邻单元,如果它们在 MergeRow 属性为 True 的同一行中,或者在 MergeCol 属性为 True 的同一列中,就被合并起来。 ------------------------------------------------------- ■MouseCol 和 MouseRow 属性 返回鼠标位于表格中的行、列号。 ------------------------------------------------------- ■MouseIcon 属性 = LoadPicture(pathname)[= picture] ■MousePointer 属性[= value] 鼠标指针的类型。 ■Name 属性 ------------------------------------------------------- ■Object 属性[.Property | .Method] 返回对象与/或对象的方法或属性的设置。用该属性指定要在 Automation 任务中使用的对象。 property 对象支持的属性。 method 对象支持的方法。 ------------------------------------------------------- ■OLEDropMode 属性 [= mode] ■Parent 属性 返回包含控件、或其它对象或者集合的窗体、对象、或集合。 ------------------------------------------------------- ■Picture 属性 [= picture] 返回或设置控件中要显示的图片 对于MSFlexGrid是只读的,用于将与MSFlexGrid一样的一幅图片赋给另一个不同控件 ■PictureType 属性 [= type ] 该属性返回或设置应当由 Picture 属性所产生的图片的类型。 flexPictureColor 0 显示兼容的位图。 flexPictureMonochrome 1 单色位图。 ------------------------------------------------------- ■Redraw 属性[= boolean ]缺省是 True。 每一次改动之后,是否应该重画 MSFlexGrid 控件。 在代码中可以用这个属性来减少更新控件的内容闪烁 ------------------------------------------------------- ■RightToLeft 属性 返回布尔值,指出文本显示方向并在双向系统上控制可见外观。 ■ScrollBars 属性[= value ] 是否有水平和/或垂直滚动条 ■ScrollTrack [= boolean ]属性 当用户沿着滚动条移动滚动框时,MSFlexGrid 是否应滚动其内容。 ------------------------------------------------------- ■Sort [=value]属性 选定准则来对已选定行进行排序。在设计时不可用 value 的设置值是: flexSortNone 0 不排序 flexSortGenericAscending 1 一般升序。猜出文本是字符串还是数字 flexSortGenericDescending 2 一般降序 flexSortNumericAscending 3 数字升序。将字符串转化为数字 flexSortNumericDescending 4 数字降序 flexSortStringNoCaseAsending 5 字符串升序。不区分大小写 flexSortNoCaseDescending 6 字符串降序。不区分大小写 flexSortStringAscending 7 字符串升序。区分大小写 flexSortStringDescending 8 字符串降序。区分大小写 9 自定义。用 Compare 事件来对行进行比较 ■TabIndex [= index] 属性 返回或设置父窗体中大部分对象的 tab 键次序。 ■TabStop[= boolean] 属性 TAB 键是否停在该对象上(缺省值True) ■Tag [= \"字符串\"]属性 返回或设置一个表达式用来存储程序中需要的额外数据 ■TextStyle 和 TextStyleFixed[= style ] 属性 返回或设置指定单元或者一群单元上文本的三维样式。 ■ToolTipText [= string] 属性 返回或设置一个工具提示。 ■Version 属性 该属性返回当前加载到内存中的 MSFlexGrid 控件的版本号(一个整数)。 ■Visible [= boolean]属性 返回或设置一指示对象为可见或隐藏的值。 ■WhatsThisHelpID[= number] 属性 \"这是什么\"弹出式窗口的上下文敏感的 Help。 0 (缺省值)无指定的上下文编号。 >0 一个整数,该整数给与对象关联的\"这是什么\"主题指定有效的上下文编号。 ------------------------------------------------------- ■WordWrap[= boolean ] 属性 boolean 决定了单元中的文本是否换行。缺省是 False。 ======================= 方法 =========================================== ■AddItem\"字符串\"[,index] 方法 \"字符串\" 必需的。可以用制表符 (vbTab) 来分隔每个字符串,从而将多个字符串(行中的多个列)添加进去。 Index 可选的。Long 类型,它代表了控件中放置新增行的位置。对于第一行来说,index = 0。如果省略 index,那么新增行将成为最后一行。 ------------------------------------------------------- ■RemoveItem index 方法 删除行号为index的一行。 要删除第一行,用 index = 0。但不能删除固定行 RemoveItem 方法删除指定的整个一行。而 Clear 方法只清除数据,不删除行本身。 ------------------------------------------------------- ■Clear 方法 清除 MSFlexGrid 的内容。这包括所有文本、图片和单元格式。 ------------------------------------------------------- ■Drag [action]方法 控件的开始、结束或取消拖动操作。 ■Move left[ , top, width, height ] 方法 ■OLEDrag 方法 引起部件初始化 OLE 拖放操作。 当调用 OLEDrag 方法时,部件的 OLEStartDrag 事件发生,允许向目标部件提供数据。 ■Refresh 方法 强制全部重绘一个窗体或控件。 ■SetFocus 方法 将焦点移至指定的控件或窗体。 ■ShowWhatsThis 方法 显示 \"这是什么\"弹出式窗口使用的 Help 文件中选定的一个主题。 ■ZOrder [ position ] 方法 指定的 MDIForm,Form 或控件放置在其图层的z-顺序的前端或后端。 0 或被省略 定位在Z-顺序前面。 1 定位在Z-顺序后面。 ============================= 事========================================= ---------一般事件--------- ■DragDrop 、DragOver 事件 ■GotFocus 、LostFocus 事件 ■MouseDown、MouseUp 事件 ■KeyDown、KeyUp 事件 ■MouseMove 事件 ■KeyPress 事件 ---------特有事件--------- ■Compare(row1 As Integer, row2 As Integer, cmp As Integer) 事件 件 在当 MSFlexGrid 控件的 Sort 属性被设置为9时,这样用户就可以自定义分类过程,该事件发生。 row1 它代表一对正被比较的行中的第一行。 row2它代表一对正被比较的行中的第二行。 Cmp 它代表每一对的分类顺序,就象在\"设置值\"中所述 ------------------------------ ■LeaveCell 事件 就在当前活动单元改变为另一个单元之前该事件发生。 ■EnterCell 事件 当前活动单元改变为另外一个单元时,该事件发生。 ■RowColChange 事件 在当前活动单元改变为另一个单元时该事件发生。 当活动单元改变时,被触发事件的顺序是:LeaveCell、EnterCell、RowColChange。 注意:LeaveCell:当焦点移动到另一个控件时,并不触发LeaveCell 事件。 EnterCell:将鼠标拖到单元上方并不会触发 EnterCell 事件。在固定行上单击鼠标将在那一行 的第一个非固定列上触发这个事件。 ■RowColChange:此事件发生在用户单击新单元时,但在用户拖过选定横跨 MSFlexGrid 控件时不生。 ----------------------------- ■Scroll 事件 当滚动其内容(通过滚动条、键盘,或者改变 TopRow 或者 LeftCol 属性的代码)时,该事件就会出现。 如果 ScrollTrack 属性被设置为 True,那么当用户拖动/滚动鼠标时,就会触发此滚动事件; 否则,在拖动完成之前不触发该事件。 ----------------------------- ■SelChange 事件 当所选定的范围改变时,该事件就会出现。 在代码中,可以用 Row、Col、RowSel,或者 ColSel 属性来改变选定区域,从而触发这个事件。 当用户单击新单元时,也会出现 RowColChange 事件,但是当用户拖动选定跨过 MSFlexGrid时, 该事件不会发生。 1,如果想把某一列设置成下拉匡中选择,只能写成 grid.colcombolist(1) = \"a|b|c\" 吗?能不能把下拉框中的数据和 recordset 或数组绑定。 答案:grid.colcombolist(1)=grid.buildcombolist(rs!abc) 2,怎样限定第三列可编辑,其他列不可编辑? 答案: Private Sub fg_BeforeEdit(ByVal Row As Long, ByVal Col As Long, Cancel As Boolean) '*******先将设editable=2 '限定不可编辑列,如有5列 If Col = 0 Then Cancel = True If Col = 1 Then Cancel = True If Col = 2 Then Cancel = True If Col = 4 Then Cancel = True If Col = 5 Then Cancel = True End Sub 3、怎么获得当前单元个的位置,比如某单元个获得焦点,弹出msgbox(\"你选的是第4行第5列\") Answer: Private Sub VSFlexGrid1_Click() Dim a, b As Long a = VSFlexGrid1.Row b = VSFlexGrid1.Col MsgBox \"你选的是\" & a & \"行\" & b & \"列\" End Sub 4,对vsflexgrid进行编辑的时候,让vsflexgrid的某列只能输入数字? Answer: Private Sub CheckData(KeyAscii As Integer) If KeyAscii >= 48 And KeyAscii <= 57 Then Exit Sub '如果是数字退出 If KeyAscii <> 8 Then KeyAscii = 0 End Sub Private Sub vsflexgrid_KeyPressEdit(ByVal Row As Long, ByVal Col As Long, KeyAscii As Integer) If col=1 Then '第一列只能输入数字 CheckData KeyAscii End If End Sub 5,限制某列只能输入数字 Answer: Private Sub fg_KeyPressEdit(ByVal Row As Long, ByVal Col As Long, KeyAscii As Integer) Dim Numbers As String '允许输入的字符 If fg.Col = 6 Then '第6列 Numbers = \"1234567890\" + Chr(46) + Chr(8) If InStr(Numbers, Chr(KeyAscii)) = 0 Then KeyAscii = 0 End If End If End Sub 6,如何指定一列的输入格式 VSFlexGrid 控件属性方法一览表VSFlexGrid 控件属性方法一览表(带()为方法) 属性/方法名称 功能 示例语法 AddItem() 增加一行 O.A String[, RowIndex] Aggregate 返回集合合计(总数,平均,等) O.A = (A,Row1,Col1,Row2,Col2) Align 对象在窗体上的显示位置 O.A = 0|1|2|3|4 等 AllowBigSelection 设定列头是否整行或整列选择 O.A = True|False AllowSelection 是否可多单元选择 O.A = True|False AllowUserFreezing 运行时用鼠标冻结行或列 O.A = 0|1|2|3 AllowUserResizing 调整(行/列)大小方式 O.A = 0|1|2|3|4 Appearance 边框平面/凹陷/凸起 O.A = 0|1|2 Archive() 存储或清除一个二进制文件容 O.A ArcFileName,FileName,0|1|2|3 ArchiveInfo 返回一个二进制文件息 O.A ArcFileName,0|1|2|3|4,LineIndex AutoReSize 是否自动调整大小 O.A = True|False AutoSearch 设置自动搜索 O.A = 0|1|2 AutoSearchDelay 设置AutoSearch多少秒刷新 O.A = 2 AutoSize() 自动调整列到指定宽度 O.A Col1,Col2,True|False,1000 AutoSizeMode 自动调整适合行列内容 O.A = 0|1 内 信 AutoSizeMouse 是否双击列首自动调整适合行列 O.A = True|False BackColor 所有非固定行列的背景色 O.A = Color BackColorAlternate 所有非固定行列的交替行颜色 O.A = Color BackColorBkg 表格背景坐底色 O.A = Color BackColorFixed 固定的行/列背景色 O.A = Color BackColorFrozen 冻结部分的行列背景色 O.A = Color BackColorSel 单元被选中的背景色 O.A = Color BindToArray() 绑定组 O.A ArrayStr,RowDim,ColDim,PageDim,CurrentPage Bookmark 返回ADO Recordset行书签(只读) O.A(Row) BorderStyle 边框粗细样式 O.A = 0|1 BottomRow 返回可见范围的最大行号(只读) O.A BuildComboList() 将数据库中的内容写框 O.A(rs, FieldList, KeyField, BackColor) 入下数 拉 CausesValidation 目标事件确认 O.A = False|True Cell 选择部分的相应准则值 O.A(准 则, Row1, Col1, Row2, Col2) = 准则值 CellAlignment 设定单元里数据的排列方式 O.A = 0 至 9 CellBackColor 指定单元范围的背景颜色 O.A = Color CellBorder() 选择单元范围的边界颜色 O.A Color,左,上,右,下,垂直,水平 CellButtonPicture 选择单元范围的按钮图 片 O.A = LoadPicture(\"D:\\Icon.ico\") CellChecked 选择单元范围的复选框 O.A = 0|1|2 CellFloodColor 选择单元范围的流程颜色 O.A = Color CellFloodPercent 选择单元范围的流程百分比 O.A = 1 至 100 CellFontBold 指定单元范围设为黑体字 O.A = False|True CellFontItalic 指定单元范围设为斜体字 O.A = False|True CellFontName 对象所使用的字体名称 O.A = FontName CellFontSize 对象文字像数大小(默认9pt) O.A = 9 CellFontStrikethru 选择范围是否有删除线 O.A = False|True CellFontUnderline 选择范围是否有下画线 O.A = False|True CellFontWidth 设定单元或指定范围字体的宽度 O.A = 2 CellForeColor 设定单元或指定范围字体的颜色 O.A = Color CellHeight 返回/显示到当前单元高度(只读) O.A CellLeft 返回当前单元的左端位置(只读) O.A CellPicture 显示在单元或指定范围中片 O.A = LoadPicture(\"D:\\Icon.ico\") CellPictureAlingment 单元或指定范围图片的显示位置 O.A = 0 至 10 CellTextStyle 设定单元文本的显示形式 O.A = 0|1|2|3|4 CellTop 返回当前单元的顶端位置(只读) O.A CellWidth 返回当前单元的宽度(只读) O.A Clear() 清除表格内容 O.A([0|1|2],[0|1|2|3]) 的图 ClientHeight 返回客户可见范围高度 O.A ClientWidth 返回客户可见范围宽度 O.A Clip 设置选择范围的内容 O.A = Text ClipSeparators Col 设置激活单元的列号 O.A = 2 ColAlignment 列对齐排列方式 O.A(Col) = 0 至 9 ColComboList 向下拉框写入管道字 符 O.A(Col) = \"|ListStr1|ListStr2|...\" ColData 设置用户定义的长整形数据 O.A(Col) = UserLong ColDataType 列数据类型 O.A(Col)=020(&H14),30(&H1E),31(&H1F) 至14到 ColEditMask 列编辑套用格式字符串 O.A(Col) = 指定的格式如:###### ColFormat 格式化显示列 O.A(Col) = \"Currency\"|\"#.###%\"... ColHidden 是否隐藏指定列 O.A(Col) = True|False ColImageList 设置图像列表句柄到列 ColIndent 缩进指定列 O.A Col= 100 ColIndex 返回列索引(只读) O.A Col ColIsVisible 返回列是否可见(只读) O.A Col ColKey 设置列钥匙 O.A(Col) = KeyStr ColPos 返回列距左边宽度(只读) O.A Col ColPosition 移动列的位置 O.A(Col) = ReCol Cols 返回/设置总列数 O.A = 2 ColSel 返回/设置最后选择的列 O.A = 3 ColSort 设置列种类 O.A(Col) = 0 至 10 ColWidth 返回/设置指定列宽 O.A(Col) = 100 ColWidthMax 最大列宽 O.A(Col) = 5000 ColWidthMin 最小列宽 O.A(Col) = 100 ComboCount 取得Combo下拉按钮总数(只读) O.A ComboData Combo下拉按钮数据(只读) O.A ComboIndex Combo下拉按钮索引 O.A = 1 ComboItem ComboComboList ComboSearch ComboContainer DataBindings DataMember DataMode DataRefresh() DataSource Drag() 下拉按钮项目(只读) O.A 向下拉框写入管道字符内容 O.A = \"a|b|c\" 下拉按钮搜寻方式 O.A = 0|1|2|3 返回/设置对象的容器 O.A.Caption = \"Forms\" 返回数据装入数(只读) O.A 返回/设置数据描述成员 O.A = DataStr 设置数据链接状态 O.A = 0|1|2|3|4 刷新数据源 O.A 设置数据源 Set O.A = DataDim 拖放 O.A [0|1|2] DragIcon 拖放图标 O.A = LoadPicture(\"D:\\Icon.ico\") DragMode 拖放方式 O.A = 0|1 DragRow() 拖放行(本示例在MouseDown过程) O.A O.RowSel Editable 设置表格是否可编辑修改 O.A = 0|1|2 EditCell() 当移动到当前单元时自动选择 O.A EditMask 当编辑时只能使用指定值 O.A = StrValue EditMaxLength 所有单元限制字节大小 O.A = 2 EditSelLength 编辑时选择长度 O.A = 5 EditSelStart 移动到单元时的光标位置 O.A = 0(或者Len(vsg.text)) EditSelText 编辑选择处放文本 O.A = \"Str\" EditText 编辑文本 O.A = \"Str\" EditWindow 返回编辑窗口(只读) O.A Ellipsis 超宽字符加省略号 O.A = 0|1|2 Enabled 对象是否激活可用 O.A = False|True ExplorerBar 单击列头的选择、拖动或排序样式 O.A = 0 至 15 ExtendLastCol 是否扩充最后的列到适合宽度 O.A = False|True FillStyle 是否改变当前范围的内容或格式 O.A = 0|1 FindRow 查找符和条件返回的行(只读) O.A FindStr,[Row],[Col],[敏感],[精度]) FinishEditing() 完成编辑的 O.A = False|True FixedAlignment 固定列的对齐方式 O.A(Col) = 0 至 9 FixedCols 固定几列 O.A = 1 FixedRows 固定几行 O.A = 1 FlexDataSource 流动数据源 O.A = rsDate FloodColor 设置流程颜色 O.A = Color FocusRect 单元的选择虚框样式类型 O.A = 0|1|2|3|4|5 Font 设定字体 O.A = FontName FontBold 设定字体粗体 O.A = False|True FontItalic 设定字体斜体 O.A = False|True FontName 设定字体名称 O.A = FontName FontSize 设定字体大小 O.A = 10 FontStrikethru 设定字体删除线 O.A = False|True FontUnderline 设定字体下划线 O.A = False|True FontWidth 设定字体的宽度(非间距) O.A = 2 ForeColor 设定字体前景颜色 O.A = Color ForeColorFixed 设定固定单元的文本颜色 O.A = Color ForeColorFrozen 设定字体冻结部分的前景颜色 O.A = Color ForeColorSel 设定选择单元的文本颜色 O.A = Color FormatString 设计管道符格式化行/列字符串 O.A = Format(1,\"#0.00\") FrozenCols 需要冻结的列数 O.A = 2 FrozenRows 需要冻结的行数 O.A = 2 GetMergedRange() 获得合并山脉 GetNode() 获得节点 GetNodeRow() 获得节点行 GetSelection() 获得选择 O.A Row1, Col1, Row2, Col2 GridColor 单元行列的网格线颜色 O.A = Color GridColorFixed 设定固定网格线的颜色 O.A = Color GridLines 可编辑区的网格线类型 O.A = 0 至 14 GridLinesFixed 固定行列网格效果类型 O.A = 0 至 14 GridLineWidth 编辑区的网格线线粗细 O.A = 1 Height 设置对象高度 O.A = 1000 HelpContextID 对象缺省上下文帮助ID O.A = HelpID HighLight 是否突出加亮显示选中单元 O.A = 0[无]|1[默认]|2[仅焦点时有] hWnd 获取对象句柄 O.A Index 对象索引号(运行时只读) O.A IsCollapsed IsSelected 是否已选择 O.A IsSubtotal 是否已小记 O.A Left 对象距左边位置 O.A = 100 LeftCol 指定显示在最左边的列 O.A = 1 LoadArray() 载入数组 LoadGrid() 载入网格 O.A FileName, 0 至 6[,True(含固定行列)|False] LoadGridURL() 载入网格URL MergeCells 相同内容的单元格合并类型 O.A = 0|1|2|3|4|5|6 MergeCol 是否上下列合并 O.A(Col) = True MergeCompare 返回/设置合并比较类型 O.A = 0|1|2 MergeRow 是否左右行合并 O.A(Row) = True MouseCol 返回鼠标指向的当前列号 O.A MouseIcon 设定鼠标指向的当前图形 O.A = LoadPicture(\"C:\\.ico\") MousePointer 设置对象的鼠标指针样式 O.A = 0 到 15|99 MouseRow 返回鼠标指向的当前行号 O.A Move() 移动对象 O.A Left,[Top],[Width],[Height] MultiTotals Multi总数 Name 对象名称(运行时只读) O.A NodeClosedPicture 节点封闭的图标 O.A = LoadPicture(\"C:\\.ico\") NodeOpenPicture 节点打开的图标 O.A = LoadPicture(\"C:\\.ico\") Object 返回/设置该对象变量 Set DimObjName = O.A OLEDrag() OLE拖拽数据 O.A OLEDragMode OLE拖拽方式 O.A = 0|1 OLEDropMode OLE拖拽落下方式 O.A = 0|1|2 Outline() 外面的线 OutlineBar 返回/设置显示目录树的线条 O.A = 0 至 6 OutlineCol OwnerDraw Parent Picture PicturesOver PictureType PrintGrid() 空] Redraw Refresh() RemoveItem() 外面的线列 返回或设置执行 DrawCell 事件 O.A = 0 至 6 返回该对象所在的对象(只读) O.A.Caption = \"Forms\" 返回控件的图片(只读) O.A.属性|方法 = 相应值 返回控件图片结束 O.A = False|True 用Picture属性生成的图片类型 O.A = 0|1 打印网格数据 O.A [\"主题\左右空,上下设定是否刷新控件 O.A = 0|1|2 刷新表格 O.A 删除指定行 O.A VSG1.RowSel RightCol 返回右边最大的可见列范围 O.A RightToLeft 是否将固定行放到右边 O.A = True Row 设置激活单元的行号 O.A = 2 RowData 设置用户定义的长整形数据 O.A(Row) = UserLong RowHeight 返回/设置指定行高 O.A(Row) = 100 RowHeightMax 行高的最大值 O.A(Row) = 500 RowHeightMin 行高的最小值 O.A(Row) = 230 RowHidden 是否隐藏指定行 O.A(2) = True|False RowIsVisible 返回行是否在可见范围中(只读) O.A(Row) RowOutlineLevel 返回/设置水平行小记 O.A(Row) = 0|1 RowPos 返回行距上边高度(只读) O.A Row RowPosition 移动行的位置 O.A(Row) = NewRow Rows 返回/设置总行数 O.A = 2 RowSel 返回/设置最后选择的行 O.A = 2 RowStatus 设置行状态 O.A = 0|1|2|3 SaveGrid() 保存网格内容到二进制文件 O.A FileName, 0 至 6[,True(含固定行列)|False] ScrollBars 设定卷动轴的方式 O.A = 0|1|2|3 ScrollTips 卷轴提示 O.A = False|True ScrollTipText 卷轴提示文本 O.A = \"Text\" ScrollTrack 行是否随拖动条卷动显示 O.A = False|True Select() 选择行列范围 O.A Row,Col[,RowSel][,ColSel] SelectedRow 已选择行(只读) O.A(Row) SelectedRows 返回所选总行数(只读) O.A SelectionMode 设置单元焦点选中方式 O.A = 0|1|2|3 SetFocus() 设置到对象焦点 O.A SheetBorder 表格边框颜色 O.A = Color ShowCell() 立刻显示到指定单元 O.A Row, Col ShowComboButton 是否显示当选择时拉下按钮 O.A = 0|1|2 ShowWhatsThis() 显示“这是什么” O.A Sort 按照选择的基准重新排序顺序方式 O.A = 0 到 10 Subtotal() 小计 O.A 属性名[,其它共9个可省略参数] SubtotalPosition 是否小计上面或下面的数值 O.A = 0|1 TabBehavior Tab键跳转顺序禁止 O.A = 0|1 TabIndex 对象的Tab选择顺序 O.A = 2 TabStop 是否允许Tab自动选择 O.A = True|False Tag 存储数据时所需的附加数据 O.A = Str Text 返回/写入当前单元的文字 O.A = Str TextMatrix 返回/写入指定单元的文字 O.A(Row, Col) = Str TextStyle 单元格文字效果 O.A = 0|1|2|3|4 TextStyleFixed 固定行列文本的3D效果 O.A = 0|1|2|3|4 ToolTipText 鼠标指向表格的说明消息 O.A = \"TextString\" Top 对象上边距 O.A = 100 TopRow 指定显示在最上面的行 O.A = 5 TreeColor 目录树颜色 O.A = Color Value 返回当前单元数值部分(只读) O.A ValueMatrix 返回指定单元数值部分(只读) O.A Row, Col Version 返回控件的版本号(只读) O.A VirtualData 虚拟数据 O.A = True|False Visible 是否显示对象 O.A = True|False WallPaper 表格壁纸背景图 O.A=LoadPicture(Image) | O.A.属性|方法 = 相应值 WallPaperAlignment 壁纸背景图墙报对齐方式 O.A(Col) = 0 至 10 WhatsThisHelpID 设置与对象相关联的上下文号 O.A = HelpIDString Width 设置对象宽度 O.A = 5000 WordWrap 设定单元中的文本是否换行 O.A = True|False ZOrder() 设置对象Z顺序 O.A 0|1 vsflexgrid技巧大全如何实现将vsflexgrid中修改的数据反馈到数据库中?? Private Sub vsflexgrid1_AfterEdit(ByVal Row As Long, ByVal Col As Long) rs.MoveFirst '//rs为记录集 rs.Move vsflexgrid1.Row - 1 rs.Edit If vsflexgrid1.text = \"\" Then rs.Fields(vsflexgrid1.Col - 1) = Null Else rs.Fields(vsflexgrid1.Col - 1) = vsflexgrid1.text End If rs.Update end sub 一、增加记录使用for来循环表格行。 for i=1 to grid1.rows-1 with rs .addnew .fileds(o)=grid1.textmariy(i,0) .fileds(1)=grid1.textmariy(i,1) .fileds(2)=grid1.textmariy(i,2) .fileds(3)=grid1.textmariy(i,3) .update end with next 二、添加行 grid1.additem row 三、删除当前行 with grid1 i=.row .removeitem i end with 四、要显示下拉框,可以使用vsflexgrid中列绑定功能 grid1.colcombolist(1)=grid.buildcombolist(rs,\"商品名称\") 跟楼上的相比,仅仅是datamode不一样(2-flexDMBoundBatch) 但这样做的优势是非常明显的:可以撤销包括新增删除在内的所有操作,按保存键才写入数据库 Private Sub CmdDel_Click() If fg.Row <> 0 Then fg.RemoveItem (fg.Row) fg.Refresh End Sub Private Sub CmdAdd_Click() On Error Resume Next Adodc1.Recordset.AddNew If Err.Number <> 0 Then MsgBox Err.Description End Sub Private Sub CmdUpdate() Adodc1.Recordset.UpdateBatch adAffectAllChapters End Sub Private Sub CmdCancel_Click() Adodc1.Recordset.CancelBatch fg.DataRefresh End Sub Private Sub Form_Load() Adodc1.ConnectionString = \"FILE NAME=\" & App.Path & \"\\conn.dsn\" Adodc1.LockType = adLockBatchOptimistic Adodc1.RecordSource = \"Your_Tablename\" Set fg.DataSource = Adodc1 End Sub 1、打印vsflexgrid可以使用vsprinter打印控件。跟vsflexgrid配套使用效果不错。 2、导出EXECL,可以使用grid.savegrid的方法。 用savegrid的方法 ,在导出execl时,如果碰到类似于银行帐号的列如:“6465456665”,导到EXECL中就不这样显示了,这个问题还不知道怎么解决?? 另外也可以写代码(这个方法比较实用,但慢一些): Dim excelApp As Excel.Application Set excelApp = New Excel.Application On Error Resume Next If excelApp Is Nothing Then Set excelApp = CreateObject(\"Excel.application\") If excelApp Is Nothing Then Exit Sub End If End If excelApp.Visible = True Me.MousePointer = vbHourglass excelApp.Workbooks.Add With excelApp.ActiveSheet Dim i As Integer, j As Integer For i = 1 To Grid1.rows For j = 1 To Grid1.Cols .Cells(i, j).value =\"'\"& Grid1.TextMatrix((i - 1), (j - 1))'加上“'”号则可以解决上面savegrid中银行帐号的导出问题。 Next j DoEvents Next i End With Me.MousePointer = vbDefault Set excelApp = Nothing End Sub EXCEL同Vsflexgrid通过 最近很多的朋友,都想知道EXCEL怎样同VSflexgrid交换数据。 实际上,利用“复制”、“粘贴”菜单即可实现。具体如下: (1)在Vsflexgrid上弹出右键菜单 Private Sub grid1_MouseDown(Button As Integer, Shift As Integer, X As Single, y As Single) if Button = 2 Then PopupMenu mnutccd End Sub (2)设置各菜单的内容 A 复制 Clipboard.Clear Clipboard.SetText grid1.Clip B 剪切 Dim rowc As Long Dim rowz As Long Dim colc As Long dim colz As Long dim i as long dim s as long If grid1.Rows = 1 Then Exit Sub Clipboard.Clear Clipboard.SetText grid1.Clip If grid1.RowSel > grid1.row Then rowc = grid1.row rowz = grid1.RowSel Else rowc = grid1.RowSel rowz = grid1.row End If If grid1.ColSel > grid1.Col Then colc = grid1.Col colz = grid1.ColSel Else colc = grid1.ColSel colz = grid1.Col End If For i = rowc To rowz For s = colc To colz grid1.TextMatrix(i, s) = \"\" Next Next C 粘贴(精华部分) Dim i As Long Dim s As Long Dim m As Long Dim t As Long If grid1.Rows = 1 Then Exit Sub t = Len(Clipboard.GetText) If t = 0 Then Exit Sub For i = 1 To t If Mid(Clipboard.GetText, i, 1) = Chr(9) Then s = s + 1 If Mid(Clipboard.GetText, i, 1) = Chr(13) Then m = m + 1 Next If s / (m + 1) + grid1.Col > grid1.Cols - 1 Then grid1.ColSel = grid1.Cols - 1 Else grid1.ColSel = s / (m + 1) + grid1.Col End If If grid1.row + m > grid1.Rows - 1 Then grid1.RowSel = grid1.Rows - 1 Else grid1.RowSel = grid1.row + m End If grid1.Clip = Clipboard.GetText VSFlexGrid 常用属性或方法: .FixedRows = 1 '固定几行 .FixedCols = 1 '固定几列 .Editable = True '允许修改 .AllowUserResizing = flexResizeBoth '可调整行/列 .FocusRect = flexFocusNone '无虚框 .SelectionMode = flexSelectionListBox '焦点选中样式 .BackColor = RGB(255, 255, 255) '单元背景色 .BackColorSel = vbBlue '单元选择色 .BackColorFixed = RGB(208, 192, 160) '固定单元色 .BackColorAlternate = RGB(255, 250, 230) '间隔行背景色 .GridColor = RGB(245, 240, 210) '单元线条色 .ForeColor = RGB(0, 0, 0) '单元前景色(字符色) .RowHeightMin = 260 '最小行高 .RowHeightMax = 800 '最大行高 .ColHeightMin = 50 '最小列宽 .ColHeightMax = 3000 '最大列宽 .ColWidth(Col) = 1000 '指定列宽 .RowHeight(Row) = 260 '指定行高 .TextMatrix(Row,Col) = \"Text\" '指定单元字符 .Text = \"Text\" '选定单元字符 .MergeCol(Col) = True '允许合并列 .MergeRow(Row) = True '允许合并行 .MergeCells = 0|1|2|3|4|5|6 '合并选项 .Cell(选项准则, Row1, Col1, Row2, Col2) '选择部分的相应准则值 .EditCell '当移动到当前单元时自动选择 .EditSelStart '移动到单元时的光标位置 .MousePointer '设置对象的鼠标指针样式 O.A = 0 到 15|99 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 几个特殊的属性方法的使用: FormatString 属性:管道符格式化字符串示例: 下面定义对齐方式同字意,列宽窄同距离 VSG1.FormatString = \"^ 中 |< 左 |> 右 |> 右 |^ 中 \" +++++++++++++++++++++++++ 搜索(查找)表格中符合条件的行: FindRow 属性:该属性返回一个行值 MsgBox VSG1.FindRow(关键词,[指定行],[指定列],[敏感],[精度]) 关键词:String,表示要搜索的字符串 指定行/指定列:Long,表示只在指定的行或列中找 敏感:Boolean, ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ '限制只能在指定列输入(这里默认倒数第2列) Private Sub VSG1_BeforeRowColChange(ByVal OldRow As Long, _ ByVal OldCol As Long, ByVal NewRow As Long, _ ByVal NewCol As Long, Cancel As Boolean) VSG1.Editable = flexEDKbd If VSG1.Redraw <> flexRDNone And NewCol <> VSG1.Cols - 2 Then Cancel = True VSG1.Select NewRow, VSG1.Cols - 2 End If End Sub ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 限制不能编辑某些列:(这里限制第1列和第3列) Private Sub VSG1_RowColChange() If VSG1.Col = 1 or VSG1.Col = 3 Then VSG1.FocusRect = flexFocusNone VSG1.Editable = flexEDNone 'SendKeys \"{TAB}\" Else VSG1.Editable = flexEDKbd SendKeys \"{ENTER}\" End If End Sub 或: Private Sub VSG1_RowColChange() If VSG1.Col = 1 or VSG1.Col = 3 Then SendKeys \"{RIGHT}\" Else SendKeys \"{ENTER}\" End If End Sub 或: Private Sub VSG1_RowColChange() If VSG1.Col = 1 or VSG1.Col = 3 Then VSG1.Editable = flexEDNone Else VSG1.Editable = flexEDKbd VSG1.EditCell '自动选择单元内容 VSG1.EditSelStart = 0[选到最前]|1[选到指定]|Len(VSG1.Text)[选到最后] End If End Sub ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ '对齐方式(-1标示所有) .ColAlignment(-1) = flexAlignLeftCenter|flexAlignCenterCenter|flexAlignRightCenter 示例1:(最后一行的第3列靠右对齐) VSG1.Select VSG1.Rows - 1, 2 VSG1.CellAlignment = flexAlignRightCenter 示例2: VSG1.Row = VSG1.Rows - 1: VSG1.Col = 1 VSG1.CellAlignment = flexAlignRightCenter 示例3: VSG1.Cell(flexcpAlignment, VSG1.Rows - 1, 1, VSG1.Rows - 1, 3) = flexAlignRightCenter ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 本对象拖放: Private Sub VSG1_MouseDown(Button As Integer, _ Shift As Integer, X As Single, Y As Single) VSG1.Drag VSG1.DragIcon = LoadPicture(\"D:\\Icon.ico\") VSG1.DragRow VSG1.RowSel End Sub 或从其它对象拖: Private Sub VSG2_MouseDown(Button As Integer, _ Shift As Integer, X As Single, Y As Single) VSG2.OLEDrag VSG1.OLEDropMode = flexOLEDropAutomatic End Sub ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Public Sub VSGridCount(Optional SelRow As Long, Optional SelCol As Long) Dim X As Long, i As Long Dim Hj1, Hj2, Hj3 As String Const A1 = -922337203685477#, A2 = 922337203685477# On Error GoTo ErrTransact With frmFG.VSG1 X = .Rows - 1 .MergeCells = flexMergeFree .MergeRow(X) = True .Cell(flexcpText, X, 0, X, 1) = \"合 计\" If .Rows = 3 Then .TextMatrix(X, 0) = 0 .Cell(flexcpText, X, 2, X, 14) = \" \" .Cell(flexcpText, X, 16, X, 17) = \"¥0.00\" Exit Sub End If 'Hj1 = Val(.Aggregate(flexSTSum, 2, 2, X - 1, 2)) 'Hj2 = Val(.Aggregate(flexSTSum, 2, 16, X - 1, 16)) 'Hj3 = CurrencyToStr(Hj2) For i = 2 To X - 2 Hj1 = Hj1 + Val(.TextMatrix(i, 15)) If Val(.TextMatrix(i, 16)) > 0 Then Hj2 = Hj2 + Val(.TextMatrix(i, 15)) * Val(.TextMatrix(i, 16)) End If Next i If Hj2 <= A1 or Hj2 >= A2 Then GoTo ErrTransact End If Hj3 = CurrencyToStr(Hj2) .TextMatrix(X, 2) = Hj1 .Cell(flexcpText, X, 3, X, 15) = IIf(Hj3 = \"\ .Cell(flexcpText, X, 16, X, 17) = Format(Hj2, \"¥0.00\") .Cell(flexcpAlignment, X, 2, X, 14) = flexAlignLeftCenter '.Select X, 3 '.CellAlignment = flexAlignLeftCenter If SelRow > 1 And SelCol > 0 Then .Select SelRow, SelCol End With Exit Sub ErrTransact: MsgBox \"你输入的数字过大无法计算!请修改!!!\" End Sub ------------------------------------------------ 将数字转换为大写金额的函数: Function CurrencyToStr(ByVal Number As Currency) As String Number = Val(Trim(Number)) If Number = 0 Then CurrencyToStr = \"\": Exit Function Dim str1Ary As Variant, str2Ary As Variant str1Ary = Split(\"零 壹 贰 叁 肆 伍 陆 柒 捌 玖\") str2Ary = Split(\"分 角 元 拾 佰 仟 万 拾 佰 仟 亿 拾 佰 仟 万 拾 佰\") Dim a As Long, b As Long '循环基数 Dim tmp1 As String '临时转换 Dim tmp2 As String '临时转换结果 Dim Point As Long '小数点位置 If Number <= -922337203685477# or Number >= 922337203685477# Then Exit Function End If tmp1 = Round(Number, 2) tmp1 = Replace(tmp1, \"-\先去掉“-”号 Point = InStr(tmp1, \".\") '取得小数点位置 If Point = 0 Then '如果有小数点,最大佰万亿 b = Len(tmp1) + 2 '加2位小数 Else b = Len(Left(tmp1, Point + 1)) '包括点加2位小数 End If ''先将所有数字替换为中文 For a = 9 To 0 Step -1 tmp1 = Replace(Replace(tmp1, a, str1Ary(a)), \".\ Next For a = 1 To b b = b - 1 If Mid(tmp1, a, 1) <> \"\" Then If b > UBound(str2Ary) Then Exit For tmp2 = tmp2 & Mid(tmp1, a, 1) & str2Ary(b) End If Next If tmp2 = \"\" Then CurrencyToStr = \"\": Exit Function ''〓下面为非正式财务算法,可以去掉〓 For a = 1 To Len(tmp2) tmp2 = Replace(tmp2, \"零亿\亿零\") tmp2 = Replace(tmp2, \"零万\万零\") tmp2 = Replace(tmp2, \"零仟\零\") tmp2 = Replace(tmp2, \"零佰\零\") tmp2 = Replace(tmp2, \"零拾\零\") tmp2 = Replace(tmp2, \"零元\元\") tmp2 = Replace(tmp2, \"零零\零\") tmp2 = Replace(tmp2, \"亿万\亿\") Next ''〓上面为非正式财务算法,可以去掉〓 If Point = 1 Then tmp2 = \"零元\" + tmp2 If Number < 0 Then tmp2 = \"负\" + tmp2 If Point = 0 Then tmp2 = tmp2 + \"整\" CurrencyToStr = tmp2 End Function ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Cell 属性的使用: Cell 的作用是给以选定区块的特定的设置值,具体值可参阅相应属性值。 语法:Cell(条件准则, Row1, Col1, Row2, Col2) = 相应准则值 其中的“条件准则”有以下准则常数,根据准则的不同而设置相应准则的值: flexcpAlignment 对齐方式 flexcpBackColor 背景色 flexcpChecked 选择框 flexcpCustomFormat 格式设置 flexcpData 日期 flexcpFloodColor 颜色 flexcpFloodPercent 背景色 flexcpFont 字体 flexcpFontBold 粗体 flexcpFontItalic 斜体 flexcpFontName 字体名 flexcpFontSize 字体大小 flexcpFontStrikethru 删除线 flexcpFontUnderline 下划线 flexcpFontWidth 字符宽 flexcpForeColor 字符色 flexcpHeight 高 flexcpLeft 左 flexcpPicture 添加图 flexcpPictureAlignment 图对齐 flexcpRefresh 刷新 flexcpSort 分类 flexcpText 字符 flexcpTextDisplay 显示字符 flexcpTextStyle 文本样式 flexcpTop 返回顶端高,同 RowPos 和 valueMatrix 属性 flexcpvalue 返回字符值 flexcpVariantvalue 返回字符值 flexcpWidth 返回单元宽 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ flexSTSum 方法:每行增加小计行[这个方法还不会用]语法: VSG.flexSTSum 常数名, [GroupOn As Long], :标签列 [TotalOn As Long], :计算列 [Format As String], :格式,例 \"$0.00\" [BackColor As Color], :Color [ForeColor As Color], :Color [FontBold As Boolean], :False|True [Caption As String], :例 \"数 %s\" [MatchFrom As Integer], :0|1|2|3 [TatalOnly As Boolean] :False|True 常数名: 常数 常数值 说明 flexSTNone 0 大纲唯一的,没有合计价值 flexSTClear 1 清除全部的小计 flexSTSum 2 总数 flexSTPercent 3 总数的百分比 flexSTCount 4 行数 flexSTAverage 5 平均 flexSTMax 6 最大的 flexSTMin 7 最小的 flexSTStd 8 标准偏差 flexSTVar 9 方差 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ MousePointer、MouseIcon 鼠标指针的应用: 0=flexDefault 1=flexArrow 2=flexCross 3=flexIBeam 4=flexIcon 5=flexSize 6=flexSizeNESW 7=flexSizeNS 8=flexSizeNWSE 9=flexSizeEW 10=flexUpArrow 11=flexHourglass 12=flexNoDrop 13=flexArrowHourGlass 14=flexArrowQuestion 15=flexSizeAll 50=flexPointerCopy '(&H32) '拖动带拷贝 51=flexPointerMove '(&H33) '拖动 52=flexSizeHorz '(&H34) '左右调整 53=flexSizeVert '(&H35) '上下调整 54=flexHand '(&H36) 手型 99=flexCustom '自定义 Const MA = \"50,51,52,53,54\" Dim xy As Integer xy = Val(Text1.Text) If xy > 15 And xy <> 99 And InStr(MA, xy) = 0 Then xy = 15 VSG1.MousePointer = xy If xy = 99 Then VSG1.MouseIcon = LoadPicture(\"C:\\icon\\Icon.ico\") End If ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 单击列头将列互相拖动调换: 方法一: VSG1.ExplorerBar = flexExMove '2 这是最简单的方法了 注意这个属性在VB属性表中只设置了0、1、2、3、5、7、8种常数值 ExplorerBar 属性(value=0|1|2|3|5|7|8): 0-flexExNone:默认,单击列头选择整列,单击行头选择整行 1-flexExSort:单击列头可正反排序该列,单击行头选择整行 2-flexExMove:单击列头可交换列顺序,单击行头选择整行 3-flexExSortAndMove:具有 1 和 2 的功能 4:单击列头可正反排序该列并在列头显示相应箭头,单击行头选择整行 5-flexExSortShow:好像与 4 相同也 6:具有 2 和 4 的功能 7-flexExSortShowAndMove:好像与 6 相同也 8-flexExMoveRows:单击列头选择整列,可拖动行 9:单击列头可正反排序该列,可拖动行 10:可拖动行与列 11:可排序列及拖动行列 12:可排序列并在列头显示相应箭头,还可拖动行 13:同 12。 14:除 12 功能外,可拖动列 15:同 14。 方法二: Private Sub VSG1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim r%, c% r = VSG1.MouseRow c = VSG1.MouseCol If r = 0 And c > 0 Then VSG1.Tag = c VSG1.Cell(flexcpBackColor, 0, c) = vbYellow VSG1.MousePointer = flexPointerMove End If End Sub Private Sub VSG1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If Len(VSG1.Tag) Then Dim r%, c%, p% r = VSG1.MouseRow c = VSG1.MouseCol If r = 0 And c > 0 Then p = flexPointerMove If VSG1.MousePointer <> p Then VSG1.MousePointer = p End If End Sub Private Sub VSG1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) If Len(VSG1.Tag) Then Dim r%, c%, target% target = VSG1.Tag VSG1.Cell(flexcpBackColor, 0, target) = 0 VSG1.Tag = \"\" VSG1.MousePointer = 0 r = VSG1.MouseRow c = VSG1.MouseCol If r = 0 And c > 0 And c <> target Then VSG1.ColPosition(target) = c End If End If End Sub ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ VSFlexString控件属性一览表 CaseSensitive Error 失败时取得错误信息 Index 索引 MatchCount 取得与检索条件相一致的字符串数量 MatchIndex 设定与检索条件相一致的字符串的索引 MatchLength 取得与检索条件相一致的字符串长度 MatchStart 取得与检索条件相一致的字符串起始位置 MatchString 取得与检索条件相一致的字符串 Name Object Parent Pattern 设定检索条件 Replace Soundex Tag TagCount TagIndex TagLength TagStart TagString Text Version 设定置换字符串 取得代表当前检索字符的声音代码 取得与检索条件相一致的标签数量 在多个标签情况下,设定/取得与检索条件相一致的标签索引取得与检索条件相一致的标签长度 取得与检索条件相一致的标签起始位置 取得与检索条件相一致的标签的字符串 设定成为检索对象 取得FlexString的版本号 -------------------------------------------------------- MSFlexGrid与VSFlexGrid的单元格合并例子: Private Sub Form_Load() Dim i As Long With fg .WordWrap = True .Rows = 6 .Cols = 6 .FixedRows = 2 .FixedCols = 0 .ColWidth(0) = 1500 .RowHeight(0) = 300 .RowHeight(1) = 300 .TextMatrix(1, 1) = \"进货\" .TextMatrix(1, 2) = \"销售\" .TextMatrix(1, 3) = \"退货\" .TextMatrix(1, 4) = \"结存\" For i = 1 To .Rows - 1 .RowHeight(i) = 300 '设置行高 Next i For i = 0 To 1 .TextMatrix(i, 0) = \"上月\" & vbCrLf & \"结存数量\" '//.FixedAlignment(0) = 4 Next i For i = 0 To 1 .TextMatrix(i, 5) = \"月末结存\" 换行 .FixedAlignment(5) = 4 Next i For i = 1 To 4 .TextMatrix(0, i) = \"本月进销存数量\" .ColAlignment(i) = 4 Next i .MergeCells = flexMergeFree ' .MergeCells = flexMergeFixedOnly .MergeCol(0) = True .MergeRow(0) = True .MergeCol(5) = True End With End Sub 请问:如何使用 VSFlexGrid Pro 分级显示和存取数据库中的数据。类似于《让 TreeView 支持无限级分类》帖子中所介绍的使用树形控件显示和存取数据库的数据。 Dim cn as New ADODB.Recordset Dim rs As New ADODB.Recordset Dim lngY As Long Dim intT As Integer cn.open \"............\" rs.Open \"select 系统编号 from test order by 系统编号\ With VSFlexGrid1 Set .DataSource = rs .RowOutlineLevel(1) = 1 .IsSubtotal(1) = True For lngY = 1 To .Rows - 1 intT = Len(.TextMatrix(lngY, 0)) - Len(Replace(.TextMatrix(lngY, 0), \".\ .RowOutlineLevel(lngY) = intT .IsSubtotal(lngY) = True Next .OutlineCol = 0 .OutlineBar = flexOutlineBarSimpleLeaf End With Set VSFlexGrid1.DataSource = Rs'这一步一定要有, With VSFlexGrid1 .DataRefresh .Sort = flexSortGenericDescending'排序 End With 例如:显示有小数点后3位(是整数的话显示.000;没有达到3位显示.200(追加0);超过的4舍五入) Answer: if fg.col=5 then '第五行 for i=1 to fg.rows-1 fg.TextMatrix(i,5)=format(fg.TextMatrix(i,5),\"##0.000\") next i end if 7,在一个单元格输入好数字回车,下一单元格(或者下一行第一个)自动获得焦点。 这个怎么实现? Answer: 试试这个,,,,, ' With fg ' If .Col = .Cols - 1 Then ' '如果到了最右边的列就跳到下一行第一个可非固定列 ' '.Row = Row + 1 ' .Col = .FixedCols ' Else ' '向右移动一列 ' .Col = Col + 1 ' End If ' End With 8,最下面的合计的那一行是怎么加的??希望楼主指点一下,谢谢! Ansewr: 合计行添加代码: '***************************************** '显示计算合计行 .Rows = .Rows + 1 Dim r&, c&, tot! For c = 1 To .Cols - 1 tot = 0 For r = 1 To .Rows - 2 tot = tot + .valueMatrix(r, c) Next .TextMatrix(r, c) = tot Next '***************** ,'在合计头列标明合计,合并单元格 ' For I = 0 To 1 .TextMatrix(.Rows - 1, 0) = \"合 计\" ' .FixedAlignment(I) = 4 ' Next .MergeCells = flexMergeFixedOnly .MergeRow(r) = True 9,怎么样点击一条VSFlexgrid控件里的记录时下面的TEXT控件就显示相应的内容? Ansewr: text1=fg.TextMatrix(fg.RowSel, 2) '显示第二列信 10,如果想把某一列设置成下拉匡中选择,只能写成 grid.colcombolist(1) = \"a|b|c\" 吗?能不能把下拉框中的数据和 recordset 或数组绑定。 Answer: grid.colcombolist(1)=grid.buildcombolist(rs!abc) 11,我用的是VsFlexGrid 8 如何把表格里面的Name变成我指定的文字, 以前用的是DataGrid,实现的方法是DataGrid1.Columns.Caption=\"名字\" 现在学用VsFlexGrid,请高手指点. Answer: 我来了,这段时间实在太忙了,,,没能及时回答大家的问题,,,, 指定name可以这样表示: vfg.TextMatrix(0,1)=\"我的名字\" 12,如何让我选择的不是一个框,而是一整行,还有就是如何能把我选择的这一行的第一个框里的字添加到text1.text里. Answer: 1,有一个属性可以让你的选择是一行的. SelectionMode=1 2,text1=fg.TextMatrix(fg.RowSel,1) 在click事件里实现 13,运行时如何调整调行或列宽度? Answer: AllowUserResizing=1 '可调列 AllowUserResizing=2 '可调行 AllowUserResizing=3 '可调行和列 最近很多朋友问我关于VSflexgrid的问题,,,由于我很忙,没能及时回答,请多谅解; 特此,我找来了一些资料,供大家参考: VSFLEXgrid控件概况】 [主要特点] VSFlexGrid Pro 7.0 是一功能强大的数据表格控件,高速、紧凑、灵活、轻便、无须依赖任何应用工具,支持数据化格式选项,能将表格列连接到图象列和墙纸属性上以提高应用工具的实现程度。如果应用工具无须数据库的支持,如果你的应用程序不需要数据库的支持,那么使用VSFlexGrid Pro新的非绑定版本可以使应用程序的尺寸最小,而且发布应用程序时也不需要发布相应的ADO动态链接库. VSFlexGrid Pro 7.0可代替任何简单的列表框,浏览器,记事本等等,所以说它不仅仅只是一个表格控件。 FLexArray网格扩展控件 能够设置每个单元格的颜色和字体/能够对单元内容能进行快速有效的排序/设置 RowPosition和ColPosition属性,即可在运行状态移动行列的位置/使用MergeCell属性,无须改写代码即可将内容一致的单元格加以合并/能够在设计过程定义行列的页眉、宽度和位置,进行界面设计/改变缺省字体大小,能够自动调整与之相对应的单元格尺寸/支持2000行以上表格,单元格内容可达32k以上/能够进行行列的隐藏/能够进行字体的微调整(参考FontWidth属性)/具有多种多样的网格形式和色彩/支持图文混排/多种光标和被选择内容的显示方式等等。 FlexString字符串处理控件 能够设定检索字符串与置换字符串, 在表格中找到与检索字符串相符的字符并将其置换为置换字符串中设置的字符/可以将检索字符串分成几个字段,给每个字段加入标签,使用标签代替字符串进行检索与置换/使用规范化表达式,规范化表达式是一个设定和匹配字符串的注释,类似于数学公式里的运算符。 [功能] 最新功能 提供了丰富的功能可以迅速创建灵活、功能强大的前端,无须用户额外支出。VSFlexGrid Pro 7.0 100%向下兼容VB环境下的MSFlexGrid,所以对于目前的版本升级非常容易。 提供的新功能可显示、模块编辑、格式化、组织、概括、打印表格数据。数据可以按条件初始化,对于超出指定范围的数据会加强表示。可用户化输入网格和单个单元外观几乎所有的方面,并利用相似值合并邻近单元,使得表格更容易读取分析。 支持ADO和OLE DB VSFlexGrid Pro支持ADO和OLE DB,支持统一的字符编码以及DAO数据的 存取,提供多重数据连接的选择。 ADO/OLEDB、DAO可连接到二维、三维 数组或其他VSFlexGrid控件,用户也可创建用户自己的数据源类。甚至可以 在无界模式中使用表格,或将表格连接到变量数组及一用户可自己开发的数据 源。 完整的打印功能 可以保存、检索多张表格和打印格式。最新的PrintGrid方法可让用户打印单 条语句,能够控制纸张定位、页边、文本字体,显示一对话框让用户选择设 置打印机。同时也可控制页中断,添加表头,并在每一页上添加用户单元。 支持分层数据 可进行排序, 模块编辑,转化组合框和图表框和自动数据聚合。甚至可使用 VSFlexGrid Pro 分级显示数据。类似于树形控件,通过显示删除或扩张的结点 用来表示含有附加数据的分支。分级显示树可在任一列中出现,甚至可出现 在异步分支上。分级显示树的外观可用NodeOpenPicture 和NodeClosedPicture 的属性用户化。 更简单的版本 如果用户的应用工具无须数据库的支持,VSFlexGrid Pro包含了表格控件更简 单的版本。使用VSFlexGrid Pro新的非绑定版本可以使应用程序的尺寸最小, 发布应用程序时也不需要发布相应的ADO动态链接库.消除了DLL版本的问题。 其他功能 合并单元 VSFlexGrid控件允许跨越多重行与列合并值相同的邻近单元。提高了数据在表 格中显示,提高了数据的读取和分析。单元合并可用于创建合并的图表表头、 合并的数据视图,以及创建能将文本溢出到相邻列的表格。 屏蔽模块 输入模板可说明自动控件以及有效数据的输入,减少了数据输入的错误。模块 语法类似于Microsoft MaskedEdit 控件和 Microsoft Access中的模块语法。 Component One Vs-Flex Grid pro 7.0 VB标准网络控件和文本控件的扩展 版本:7.0 标准价格:41,300.00 元 使用权限:发布免费 近期推出Videosoft公司一款全新的ActiveX控件 ---VSFlexGridPro7.0。 VSFlexGrid Pro 7.0 是一功能强大 的数据表格控件,高速、紧凑、灵活、轻便、无须依赖任何应用工具,支持数据化格式选项,能将表格列连接到图象列和 墙纸属性上以提高应用工具的实现程度。如果应用工具无须数据库的支持,如果你的应用程序不需要数据库的支持,那么使用VSFlexGrid Pro新的非绑定版本可以使应用程序的尺寸最小,而且发布应用程序时也不需要发布相应的ADO动态链接库. VSFlexGrid Pro 7.0可代替任何简单的列表框,浏览器,记事本等等,所以说它不仅仅只是一个表格控件。 [主要特点] FLexArray网格扩展控件 能够设置每个单元格的颜色和字体/能够对单元内容能进行快速有效的排序/设置RowPosition和ColPosition属性,即可在运行状态移动行列的位置/使用MergeCell属性,无须改写代码即可将内容一致的单元格加以合并/能够在设计过程定义行列的页眉、宽度和位置,进行界面设计/改变缺省字体大小,能够自动调整与之相对应的单元格尺寸/支持2000行以上表格,单元格内容可达32k以上/能够进行行列的隐藏/能够进行字体的微调整(参考FontWidth属性)/具有多种多样的网格形式和色彩/支持图文混排/多种光标和被选择内容的显示方式等等 FlexString字符串处理控件 能够设定检索字符串与置换字符串, 在表格中找到与检索字符串相符的字符并将其置换为置换字符串中设置的字符/可以将检索字符串分成几个字段,给每个字段加入标签,使用标签代替字符串进行检索与置换/使用规范化表达式,规范化表达式是一个设定和匹配字符串的注释,类似于数学公式里的运算符。 [新特性] 最新功能 提供了丰富的功能可以迅速创建灵活、功能强大的前端,无须用户额外支出。VSFlexGrid Pro 7.0 100%向下兼容VB环境下的MSFlexGrid,所以对于目前的版本升级非常容易。 提供的新功能可显示、模块编辑、格式化、组织、概括、打印表格数据。数据可以按条件初始化,对于超出指定范围的数据会加强表示。可用户化输入网格和单个单元外观几乎所有的方面,并利用相似值合并邻近单元,使得表格更容易读取分析。 支持ADO和OLE DB VSFlexGrid Pro支持ADO和OLE DB,支持统一的字符编码以及DAO数据的 存取,提供多重数据连接的选择。 ADO/OLEDB、DAO可连接到二维、三维 数组或其他VSFlexGrid控件,用户也可创建用户自己的数据源类。甚至可以 在无界模式中使用表格,或将表格连接到变量数组及一用户可自己开发的数据 源。 完整的打印功能 可以保存、检索多张表格和打印格式。最新的PrintGrid方法可让用户打印单 条语句,能够控制纸张定位、页边、文本字体,显示一对话框让用户选择设 置打印机。同时也可控制页中断,添加表头,并在每一页上添加用户单元。 支持分层数据 可进行排序, 模块编辑,转化组合框和图表框和自动数据聚合。甚至可使 用 VSFlexGrid Pro 分级显示数据。类似于树形控件,通过显示删除或扩张的结点 用来表示含有附加数据的分支。分级显示树可在任一列中出现,甚至可出现 在异步分支上。分级显示树的外观可用NodeOpenPicture 和NodeClosedPicture 的属性用户化。 更简单的版本 如果用户的应用工具无须数据库的支持,VSFlexGrid Pro包含了表格控件更简 单的版本。使用VSFlexGrid Pro新的非绑定版本可以使应用程序的尺寸最小, 发布应用程序时也不需要发布相应的ADO动态链接库.消除了DLL版本的问题。 其他功能 合并单元 VSFlexGrid控件允许跨越多重行与列合并值相同的邻近单元。提高了数据在表 格中显示,提高了数据的读取和分析。单元合并可用于创建合并的图表表头、 合并的数据视图,以及创建能将文本溢出到相邻列的表格。 屏蔽模块 输入模板可说明自动控件以及有效数据的输入,减少了数据输入的错误。模块 语法类似于Microsoft MaskedEdit 控件和 Microsoft Access中的模块语法 [控件属性一览表] FlexString控件属性一览表 Error失败时取得错误信息 MatchCount取得与检索条件相一致的字符串数量 MatchIndex设定与检索条件相一致的字符串的索引 MatchLength取得与检索条件相一致的字符串长度 MatchStart 取得与检索条件相一致的字符串起始位置 MatchString取得与检索条件相一致的字符串 Pattern 设定检索条件 Replace设定置换字符串 SoundexText取得代表当前检索字符的声音代码 TagCount取得与检索条件相一致的标签数量 TagIndex在多个标签情况下,设定/取得与检索条件相一致的标签索引 TagLength取得与检索条件相一致的标签长度 TagStart取得与检索条件相一致的标签起始位置 TagString取得与检索条件相一致的标签的字符串 Text设定成为检索对象 Version取得FlexString的版本号 FlexString控件属性一览表 AllowBigSelection设定行列头的选择 AllowUserResizing设定行列大小的设定 BackColor设定FlexArray所有表格的背景颜色 BackColorBkg设定背景颜色 BackColorFixed设定固定行/列的背景颜色 BackColorSel设定选择单元的背景颜色 CellAlignment设定单元里数据的排列方式 CellBackColor设定单元或指定范围的背景颜色 CellFontBold把单元或指定范围的字体设定为黑体字 CellFontItalic把单元或指定范围的字体设定为斜体字 CellFontName设定单元或指定范围的字体 CellFontSize设定单元或指定范围字体的大小 CellFontWidth设定单元或指定范围字体的宽度 CellForeColor设定单元或指定范围字体的颜色 CellHeight返回当前单元的高度 CellLeft返回当前单元的左端位置 CellTop返回当前单元的顶端位置 CellWidth返回当前单元的宽度 CellPicture指定显示在单元或指定范围中的图片 CellPicture Alingment指定单元或范围中图片的显示位置 CellTextStyle设定单元文本的显示形式 Clip<设定/返回选择范围的内容 Col设定/返回激活单元的列号 ColAlingment( )设定/返回列的排列方式 ColData( )设定/返回一个用户定义信息的长整形数据 ColPosition( )移动列的位置 Cols指定返回列的总数 ColSel指定选择范 ColWidth( )设定所指定列的宽度 FillStyle指定是否改变当前单元或选择范围的内容或单元格式 FixedCols设定固定列的总数 FixedRows设定固定行的总数 FocusRect设定选中单元周围的Focus Rectangle类型 FontWidth设定字体的宽度 ForeColorFixed设定固定单元的文本颜色 ForeColorSel设定选择单元的文本颜色 FormatString在设计过程中设定列宽、排列方式及固定的行/列 GridColor指定网格线的颜色 GridColorFixed设定固定网格线的颜色 GridLines指定网格线的类型 GridLinesFixed指定固定单元的网格线形式 HighLight设定是否突出显示选中单元 LeftCol指定显示在最左边的列 MergeCells设定是否合并内容相同的单元格 MergeCol( )设定指定列的单元合并 MergeRow( )设定指定行的单元合并 MouseCol设定鼠标指向的列号 MouseRow设定鼠标指向的行号 ReDraw设定是否刷新FlexArray控件 Picture返回FlexArray控件的图片 PictureType指定用Picture属性生成的图片类型 Row设定/返回激活单元的行号 RowData( )设定/返回一个用户定义信息的长整形数据 RowHeight( )设定指定行的高度 RowHeightMin设定行高的最小值 RowPosition( )移动行的位置 Rows指定行的总数 RowSel指定行的选择范围 SelectionMode设定行、列或单元的选择方式 ScrollBars设定卷动轴的类型 ScrollTrack设定卷动方式 Sort按照选择的基准重新排列行的顺序 Text设定/取得单元的文本 TextArray( )设定/取得任意单元的文本 TextMatrix( )设定/取得任意单元的文本 TextStyle显示单元中文本的3D效果 TextStyleFixed显示固定行/列中文本的3D效果 TopRow指定显示在最上面的行 Version FlexArray控件的版本号 WordWrap设定单元中的文本是否换行 VSflexgrid的破解方法 注册方法:编辑注册表 HKEY_CLASSES_ROOT\\Licenses\\403E0785-49A9-11d3-9BD5-D2DC2DD96072 听过vsview7.0没有?这是破解方法,只需要在注册表里建立三个键就可以.如下: REGEDIT4 VSVIEW 7 [HKEY_CLASSES_ROOT\\Licenses\\04589820-F8F4-11d3-9A1F-AE842F4A083B] @=\"\" [HKEY_CLASSES_ROOT\\Licenses\\F403E0785-49A9-11d3-9BD5-D2DC2DD96072] @=\"\" [HKEY_CLASSES_ROOT\\Licenses\\403E0785-49A9-11d3-9BD5-D2DC2DD96072] @=\"\" 在vsflexgrid中单元格输入完毕后,设置按回车键跳到同一行的下一个单元 Private Sub VSFlexGrid1_AfterEdit(ByVal Row As Long, ByVal Col As Long) With VSFlexGrid1 If .Col = .Cols - 1 Then '如果到了最右边的列就跳到下一行第一个可非固定列 .Row = Row + 1 .Col = .FixedCols Else '向右移动一列 .Col = Col + 1 End If End With End Sub vsflexGrid 如何只能让某些特定列可编辑 '修改前看到是否需要修改 Private Sub Grid_BeforeEdit(ByVal Row As Long, ByVal Col As Long, Cancel As Boolean) 'On Error GoTo err If UiI10101.valueInt > 2 Then '*************定义允许修改的状态,需修改 Cancel = True Exit Sub End If If Grid.Col = Grid.cols - 8 or Grid.Col = Grid.cols - 7 Then '*************定义可以修改的列,需修改 Cancel = False '使其有效 Else Cancel = True '使其无效为真 End If Exit Sub Err: RaiseErr \"frmY005-Grid_MouseDown()\" End Sub '修改后判断是否合法 'cancel=true 取消修改的 Private Sub Grid_ValidateEdit(ByVal Row As Long, ByVal Col As Long, Cancel As Boolean) On Error Resume Next If Not IsNumeric(Grid.EditText) Then MsgBox \"输入不合法,应输入一个数值\提示\" Cancel = True Exit Sub End If End Sub '修改后来更改别的一些数据 Private Sub Grid_AfterEdit(ByVal Row As Long, ByVal Col As Long) On Error Resume Next '进货数量=包装数量 * 整装数量 + 零装数量 Grid.TextMatrix(Row, Grid.cols - 6) = Grid.TextMatrix(Row, Grid.cols - 9) * Grid.TextMatrix(Row, Grid.cols - 8) + Grid.TextMatrix(Row, Grid.cols - 7) End Sub VSFLEXGRID7 中文输入法自动关闭问题提示 同种数据类型的单元格之间变换不要重启输入法..... 还有可以看看这代码 Private Declare Function GetKeyboardLayoutList Lib \"user32\" (ByVal nBuff As Long, _ lpList As Long) As Long Private Declare Function GetKeyboardLayoutName Lib \"user32\" Alias \"GetKeyboardLayoutNameA\" _ (ByVal pwszKLID As String) As Long Private Declare Function GetKeyboardLayout Lib \"user32\" (ByVal dwLayout As Long) As Long Private Declare Function ImmGetDescription Lib \"imm32.dll\" Alias \"ImmGetDescriptionA\" (ByVal _ hkl As Long, ByVal lpsz As String, ByVal uBufLen As Long) As Long Private Declare Function ActivateKeyboardLayout Lib \"user32\" (ByVal hkl As Long, ByVal _ flags As Long) As Long Const IME_CONFIG_GENERAL = 1 Const KLF_REORDER = &H8 Const KLF_ACTIVATE = &H1 Dim la(1 To 16) As Long '输入法列表 Dim ActIme As Long '当前输入法 Dim X% '当单前输入法数量 Private Sub Form_Load() X = GetKeyboardLayoutList(32, la(1)) end sub Private Sub vs1_AfterEdit(ByVal Row As Long, ByVal Col As long) 'vsflexgrid控件存在输入问题? 以下为避免方法 Dim colNumber As Long Dim i As Long Dim strName$ if col=1 then ActivateKeyboardLayout la(1), 1 else ActivateKeyboardLayout la(2), 2 end if end Sub 用.AddItem在最后一行显示数据 Rst_Hj.Open HjSQL, Cnn_Zl, adOpenDynamic, adLockOptimistic 'RST_hj是合计的记录集 Main_YX.VSFlexGrid1.AddItem vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & \" 合 计 \" & vbTab & Rst_Hj.Fields(0) & vbTab & Rst_Hj.Fields(1) & vbTab & Rst_Hj.Fields(2) & vbTab & Rst_Hj.Fields(3) 'VBTAB是跳过一格填写 Rst_Hj.Close '删除连续选择的记录 If VSFlexGrid1.Row <> -1 And VSFlexGrid1.RowSel <> -1 Then msg = MsgBox(\"你真的要删除这些记录吗?\ Select Case msg Case vbYes For I = VSFlexGrid1.Row To VSFlexGrid1.RowSel Str = Str + VSFlexGrid1.TextMatrix(I, 1) + \ Next Str = Mid(Str, 1, Len(Str) - 1) Cmd_Zl.ActiveConnection = Cnn_Zl Cmd_Zl.CommandText = \"delete from zlk where 序号 in (\" + Str + \")\" Cmd_Zl.Execute Set Cmd_Zl = Nothing Case vbNo Command6.Enabled = True Rst_Zl.Close Exit Sub End Select Else MsgBox \"请选择您要删除的记录!!!\ Exit Sub End If 这是用vsprinter打印vsflexgrid内容的例子,你可做参考。页面设置的功能我也正在查找,如果找到肯定共享。 With VSPrinter1 '设置表头,创建打印文档 .Header = \"|\" & strTitle & vbCrLf & \"|Page %d \" '显示Page n功能 .StartDoc .Zoom = 100'显示比例 .RenderControl = vsFlexGrid1.Hwnd'把网格内容传递给vsView显示 .EndDoc End With 因篇幅问题不能全部显示,请点此查看更多更全内容