VSFlexGrid控件

    技术2022-05-11  9

    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 = TrueEnd 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 = 0End Sub

    Private Sub vsflexgrid_KeyPressEdit(ByVal Row As Long, ByVal Col As Long, KeyAscii As Integer)   If col=1  Then    '第一列只能输入数字      CheckData KeyAscii   End IfEnd 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 IfEnd 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|4AllowBigSelection    设定列头是否整行或整列选择     O.A = True|FalseAllowSelection       是否可多单元选择               O.A = True|FalseAllowUserFreezing    运行时用鼠标冻结行或列         O.A = 0|1|2|3AllowUserResizing    调整(行/列)大小方式            O.A = 0|1|2|3|4Appearance           边框平面/凹陷/凸起             O.A = 0|1|2Archive()            存储或清除一个二进制文件内容   O.A ArcFileName,FileName,0|1|2|3ArchiveInfo          返回一个二进制文件信息         O.A ArcFileName,0|1|2|3|4,LineIndexAutoReSize           是否自动调整大小               O.A = True|FalseAutoSearch           设置自动搜索                   O.A = 0|1|2AutoSearchDelay      设置AutoSearch多少秒刷新       O.A = 2AutoSize()           自动调整列到指定宽度           O.A Col1,Col2,True|False,1000AutoSizeMode         自动调整适合行列内容           O.A = 0|1AutoSizeMouse        是否双击列首自动调整适合行列   O.A = True|FalseBackColor            所有非固定行列的背景色         O.A = ColorBackColorAlternate   所有非固定行列的交替行颜色     O.A = ColorBackColorBkg         表格背景坐底色                 O.A = ColorBackColorFixed       固定的行/列背景色              O.A = ColorBackColorFrozen      冻结部分的行列背景色           O.A = ColorBackColorSel         单元被选中的背景色             O.A = ColorBindToArray()        绑定数组        O.A ArrayStr,RowDim,ColDim,PageDim,CurrentPageBookmark             返回ADO Recordset行书签(只读)  O.A(Row)BorderStyle          边框粗细样式                   O.A = 0|1BottomRow            返回可见范围的最大行号(只读)   O.ABuildComboList()     将数据库中的内容写入下拉框     O.A(rs, FieldList, KeyField, BackColor)CausesValidation     ???目标事件确认                O.A = False|TrueCell                 选择部分的相应准则值           O.A(准则, Row1, Col1, Row2, Col2) = 准则值CellAlignment        设定单元里数据的排列方式       O.A = 0 至 9CellBackColor        指定单元范围的背景颜色         O.A = ColorCellBorder()         选择单元范围的边界颜色         O.A Color,左,上,右,下,垂直,水平CellButtonPicture    选择单元范围的按钮图片         O.A = LoadPicture("D:/Icon.ico")CellChecked          选择单元范围的复选框           O.A = 0|1|2CellFloodColor       选择单元范围的流程颜色         O.A = ColorCellFloodPercent     选择单元范围的流程百分比       O.A = 1 至 100CellFontBold         指定单元范围设为黑体字         O.A = False|TrueCellFontItalic       指定单元范围设为斜体字         O.A = False|TrueCellFontName         对象所使用的字体名称           O.A = FontNameCellFontSize         对象文字像数大小(默认9pt)      O.A = 9CellFontStrikethru   选择范围是否有删除线           O.A = False|TrueCellFontUnderline    选择范围是否有下画线           O.A = False|TrueCellFontWidth        设定单元或指定范围字体的宽度   O.A = 2CellForeColor        设定单元或指定范围字体的颜色   O.A = ColorCellHeight           返回/显示到当前单元高度(只读)  O.ACellLeft             返回当前单元的左端位置(只读)   O.ACellPicture          显示在单元或指定范围中的图片   O.A = LoadPicture("D:/Icon.ico")CellPictureAlingment 单元或指定范围图片的显示位置   O.A = 0 至 10CellTextStyle        设定单元文本的显示形式         O.A = 0|1|2|3|4CellTop              返回当前单元的顶端位置(只读)   O.ACellWidth            返回当前单元的宽度(只读)       O.AClear()              清除表格内容                   O.A([0|1|2],[0|1|2|3])ClientHeight         返回客户可见范围高度           O.AClientWidth          返回客户可见范围宽度           O.AClip                 设置选择范围的内容             O.A = TextClipSeparators       ???Col                  设置激活单元的列号             O.A = 2ColAlignment         列对齐排列方式                 O.A(Col) = 0 至 9ColComboList         向下拉框写入管道字符           O.A(Col) = "|ListStr1|ListStr2|..."ColData              设置用户定义的长整形数据       O.A(Col) = UserLongColDataType          列数据类型                     O.A(Col)=0至14到20(&H14),30(&H1E),31(&H1F)ColEditMask          列编辑套用格式字符串           O.A(Col) = 指定的格式如:######ColFormat            格式化显示列                   O.A(Col) = "Currency"|"#.###%"...ColHidden            是否隐藏指定列                 O.A(Col) = True|FalseColImageList         设置图像列表句柄到列ColIndent            缩进指定列                     O.A Col= 100ColIndex             返回列索引(只读)               O.A ColColIsVisible         返回列是否可见(只读)           O.A ColColKey               设置列钥匙                     O.A(Col) = KeyStrColPos               返回列距左边宽度(只读)         O.A ColColPosition          移动列的位置                   O.A(Col) = ReColCols                 返回/设置总列数                O.A = 2ColSel               返回/设置最后选择的列          O.A = 3ColSort              设置列种类                     O.A(Col) = 0 至 10ColWidth             返回/设置指定列宽              O.A(Col) = 100ColWidthMax          最大列宽                       O.A(Col) = 5000ColWidthMin          最小列宽                       O.A(Col) = 100ComboCount           取得Combo下拉按钮总数(只读)    O.AComboData            Combo下拉按钮数据(只读)        O.AComboIndex           Combo下拉按钮索引              O.A = 1ComboItem            Combo下拉按钮项目(只读)        O.AComboList            向下拉框写入管道字符内容       O.A = "a|b|c"ComboSearch          Combo下拉按钮搜寻方式          O.A = 0|1|2|3Container            返回/设置对象的容器            O.A.Caption = "Forms"DataBindings         返回数据装入数(只读)           O.ADataMember           返回/设置数据描述成员          O.A = DataStrDataMode             设置数据链接状态               O.A = 0|1|2|3|4DataRefresh()        刷新数据源                     O.ADataSource           设置数据源                     Set O.A = DataDimDrag()               拖放                           O.A [0|1|2]DragIcon             拖放图标                       O.A = LoadPicture("D:/Icon.ico")DragMode             拖放方式                       O.A = 0|1DragRow()            拖放行(本示例在MouseDown过程)  O.A O.RowSelEditable             设置表格是否可编辑修改         O.A = 0|1|2EditCell()           当移动到当前单元时自动选择     O.AEditMask             当编辑时只能使用指定值         O.A = StrValueEditMaxLength        所有单元限制字节大小           O.A = 2EditSelLength        编辑时选择长度                 O.A = 5EditSelStart         移动到单元时的光标位置         O.A = 0(或者Len(vsg.text))EditSelText          编辑选择处放文本               O.A = "Str"EditText             编辑文本                       O.A = "Str"EditWindow           返回编辑窗口(只读)             O.AEllipsis             超宽字符加省略号               O.A = 0|1|2Enabled              对象是否激活可用               O.A = False|TrueExplorerBar          单击列头的选择、拖动或排序样式 O.A = 0 至 15ExtendLastCol        是否扩充最后的列到适合宽度     O.A = False|TrueFillStyle            是否改变当前范围的内容或格式   O.A = 0|1FindRow              查找符和条件返回的行(只读)     O.A FindStr,[Row],[Col],[敏感],[精度])FinishEditing()      完成编辑的                     O.A = False|TrueFixedAlignment       固定列的对齐方式               O.A(Col) = 0 至 9FixedCols            固定几列                       O.A = 1FixedRows            固定几行                       O.A = 1FlexDataSource       流动数据源                     O.A = rsDateFloodColor           设置流程颜色                   O.A = ColorFocusRect            单元的选择虚框样式类型          O.A = 0|1|2|3|4|5Font                 设定字体                       O.A = FontNameFontBold             设定字体粗体                   O.A = False|TrueFontItalic           设定字体斜体                   O.A = False|TrueFontName             设定字体名称                   O.A = FontNameFontSize             设定字体大小                   O.A = 10FontStrikethru       设定字体删除线                 O.A = False|TrueFontUnderline        设定字体下划线                 O.A = False|TrueFontWidth            设定字体的宽度(非间距)         O.A = 2ForeColor            设定字体前景颜色               O.A = ColorForeColorFixed       设定固定单元的文本颜色         O.A = ColorForeColorFrozen      设定字体冻结部分的前景颜色     O.A = ColorForeColorSel         设定选择单元的文本颜色         O.A = ColorFormatString         设计管道符格式化行/列字符串    O.A = Format(1,"#0.00")FrozenCols           需要冻结的列数                 O.A = 2FrozenRows           需要冻结的行数                 O.A = 2GetMergedRange()     ???获得合并山脉GetNode()            ???获得节点GetNodeRow()         ???获得节点行GetSelection()       ???获得选择                   O.A Row1, Col1, Row2, Col2GridColor            单元行列的网格线颜色           O.A = ColorGridColorFixed       设定固定网格线的颜色           O.A = ColorGridLines            可编辑区的网格线类型           O.A = 0 至 14GridLinesFixed       固定行列网格效果类型           O.A = 0 至 14GridLineWidth        编辑区的网格线线粗细           O.A = 1Height               设置对象高度                   O.A = 1000HelpContextID        对象缺省上下文帮助ID           O.A = HelpIDHighLight            是否突出加亮显示选中单元       O.A = 0[无]|1[默认]|2[仅焦点时有]hWnd                 获取对象句柄                   O.AIndex                对象索引号(运行时只读)         O.AIsCollapsed          ???IsSelected           是否已选择                     O.AIsSubtotal           是否已小记                     O.ALeft                 对象距左边位置                 O.A = 100LeftCol              指定显示在最左边的列           O.A = 1LoadArray()          载入数组LoadGrid()           载入网格                       O.A FileName, 0 至 6[,True(含固定行列)|False]LoadGridURL()        载入网格URLMergeCells           相同内容的单元格合并类型       O.A = 0|1|2|3|4|5|6MergeCol             是否上下列合并                 O.A(Col) = TrueMergeCompare         返回/设置合并比较类型          O.A = 0|1|2MergeRow             是否左右行合并                 O.A(Row) = TrueMouseCol             返回鼠标指向的当前列号         O.AMouseIcon            设定鼠标指向的当前图形         O.A = LoadPicture("C:/.ico")MousePointer         设置对象的鼠标指针样式         O.A = 0 到 15|99MouseRow             返回鼠标指向的当前行号         O.AMove()               移动对象                       O.A Left,[Top],[Width],[Height]MultiTotals          ???Multi总数Name                 对象名称(运行时只读)           O.ANodeClosedPicture    节点封闭的图标                 O.A = LoadPicture("C:/.ico")NodeOpenPicture      节点打开的图标                 O.A = LoadPicture("C:/.ico")Object               返回/设置该对象变量            Set DimObjName = O.AOLEDrag()            OLE拖拽数据                    O.AOLEDragMode          OLE拖拽方式                    O.A = 0|1OLEDropMode          OLE拖拽落下方式                O.A = 0|1|2Outline()            ???外面的线OutlineBar           返回/设置显示目录树的线条       O.A = 0 至 6OutlineCol           ???外面的线列OwnerDraw            返回或设置执行 DrawCell 事件   O.A = 0 至 6Parent               返回该对象所在的对象(只读)     O.A.Caption = "Forms"Picture              返回控件的图片(只读)           O.A.属性|方法 = 相应值PicturesOver         返回控件图片结束               O.A = False|TruePictureType          用Picture属性生成的图片类型    O.A = 0|1PrintGrid()          打印网格数据                   O.A ["主题",True|False,1|2,左右空,上下空]Redraw               设定是否刷新控件               O.A = 0|1|2Refresh()            刷新表格                       O.ARemoveItem()         删除指定行                     O.A VSG1.RowSelRightCol             返回右边最大的可见列范围       O.ARightToLeft          是否将固定行放到右边           O.A = TrueRow                  设置激活单元的行号             O.A = 2RowData              设置用户定义的长整形数据       O.A(Row) = UserLongRowHeight            返回/设置指定行高              O.A(Row) = 100RowHeightMax         行高的最大值                   O.A(Row) = 500RowHeightMin         行高的最小值                   O.A(Row) = 230RowHidden            是否隐藏指定行                 O.A(2) = True|FalseRowIsVisible         返回行是否在可见范围中(只读)   O.A(Row)RowOutlineLevel      返回/设置水平行小记            O.A(Row) = 0|1RowPos               返回行距上边高度(只读)         O.A RowRowPosition          移动行的位置                   O.A(Row) = NewRowRows                 返回/设置总行数                O.A = 2RowSel               返回/设置最后选择的行          O.A = 2RowStatus            设置行状态                     O.A = 0|1|2|3SaveGrid()           保存网格内容到二进制文件       O.A FileName, 0 至 6[,True(含固定行列)|False]ScrollBars           设定卷动轴的方式               O.A = 0|1|2|3ScrollTips           卷轴提示                       O.A = False|TrueScrollTipText        卷轴提示文本                   O.A = "Text"ScrollTrack          行是否随拖动条卷动显示         O.A = False|TrueSelect()             选择行列范围                   O.A Row,Col[,RowSel][,ColSel]SelectedRow          已选择行(只读)                 O.A(Row)SelectedRows         返回所选总行数(只读)           O.ASelectionMode        设置单元焦点选中方式           O.A = 0|1|2|3SetFocus()           设置到对象焦点                 O.ASheetBorder          表格边框颜色                   O.A = ColorShowCell()           立刻显示到指定单元             O.A Row, ColShowComboButton      是否显示当选择时拉下按钮       O.A = 0|1|2ShowWhatsThis()      显示“这是什么”               O.ASort                 按照选择的基准重新排序顺序方式  O.A = 0 到 10Subtotal()           小计                           O.A 属性名[,其它共9个可省略参数]SubtotalPosition     是否小计上面或下面的数值       O.A = 0|1TabBehavior          Tab键跳转顺序禁止              O.A = 0|1TabIndex             对象的Tab选择顺序              O.A = 2TabStop              是否允许Tab自动选择            O.A = True|FalseTag                  存储数据时所需的附加数据       O.A = StrText                 返回/写入当前单元的文字        O.A = StrTextMatrix           返回/写入指定单元的文字        O.A(Row, Col) = StrTextStyle            单元格文字效果                 O.A = 0|1|2|3|4TextStyleFixed       固定行列文本的3D效果           O.A = 0|1|2|3|4ToolTipText          鼠标指向表格的说明消息         O.A = "TextString"Top                  对象上边距                     O.A = 100TopRow               指定显示在最上面的行           O.A = 5TreeColor            目录树颜色                     O.A = ColorValue                返回当前单元数值部分(只读)     O.AValueMatrix          返回指定单元数值部分(只读)     O.A Row, ColVersion              返回控件的版本号(只读)         O.AVirtualData          虚拟数据                      O.A = True|FalseVisible              是否显示对象                   O.A = True|FalseWallPaper            表格壁纸背景图  O.A=LoadPicture(Image) | O.A.属性|方法 = 相应值WallPaperAlignment   壁纸背景图墙报对齐方式         O.A(Col) = 0 至 10WhatsThisHelpID      设置与对象相关联的上下文号     O.A = HelpIDStringWidth                设置对象宽度                   O.A = 5000WordWrap             设定单元中的文本是否换行       O.A = True|FalseZOrder()             设置对象Z顺序                  O.A 0|1vsflexgrid技巧大全如何实现将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.Updateend 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.RefreshEnd SubPrivate Sub CmdAdd_Click()On Error Resume NextAdodc1.Recordset.AddNewIf Err.Number <> 0 Then MsgBox Err.DescriptionEnd SubPrivate Sub CmdUpdate()Adodc1.Recordset.UpdateBatch adAffectAllChaptersEnd SubPrivate Sub CmdCancel_Click()    Adodc1.Recordset.CancelBatch    fg.DataRefreshEnd Sub

    Private Sub Form_Load()Adodc1.ConnectionString = "FILE NAME=" & App.Path & "/conn.dsn"Adodc1.LockType = adLockBatchOptimisticAdodc1.RecordSource = "Your_Tablename"Set fg.DataSource = Adodc1End 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 = NothingEnd 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.ClipB 剪切   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    NextC 粘贴(精华部分)  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 IfEnd 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 IfEnd Sub或:Private Sub VSG1_RowColChange()If VSG1.Col = 1 Or VSG1.Col = 3 Then   SendKeys "{RIGHT}"Else   SendKeys "{ENTER}"End IfEnd Sub或:Private Sub VSG1_RowColChange()If VSG1.Col = 1 Or VSG1.Col = 3 Then   VSG1.Editable = flexEDNoneElse   VSG1.Editable = flexEDKbd   VSG1.EditCell  '自动选择单元内容   VSG1.EditSelStart = 0[选到最前]|1[选到指定]|Len(VSG1.Text)[选到最后]End IfEnd Sub━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'对齐方式(-1标示所有).ColAlignment(-1) = flexAlignLeftCenter|flexAlignCenterCenter|flexAlignRightCenter示例1:(最后一行的第3列靠右对齐)VSG1.Select VSG1.Rows - 1, 2VSG1.CellAlignment = flexAlignRightCenter示例2:VSG1.Row = VSG1.Rows - 1: VSG1.Col = 1VSG1.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.DragVSG1.DragIcon = LoadPicture("D:/Icon.ico")VSG1.DragRow VSG1.RowSelEnd Sub或从其它对象拖:Private Sub VSG2_MouseDown(Button As Integer, _        Shift As Integer, X As Single, Y As Single)VSG2.OLEDragVSG1.OLEDropMode = flexOLEDropAutomaticEnd Sub━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━Public Sub VSGridCount(Optional SelRow As Long, Optional SelCol As Long)Dim X As Long, i As LongDim Hj1, Hj2, Hj3 As StringConst A1 = -922337203685477#, A2 = 922337203685477#On Error GoTo ErrTransactWith 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 = "", " ", 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, SelColEnd WithExit SubErrTransact:     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 = tmp2End 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=flexDefault1=flexArrow2=flexCross3=flexIBeam4=flexIcon5=flexSize6=flexSizeNESW7=flexSizeNS8=flexSizeNWSE9=flexSizeEW10=flexUpArrow11=flexHourglass12=flexNoDrop13=flexArrowHourGlass14=flexArrowQuestion15=flexSizeAll50=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 Integerxy = Val(Text1.Text)If xy > 15 And xy <> 99 And InStr(MA, xy) = 0 Then xy = 15VSG1.MousePointer = xyIf 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 IfEnd SubPrivate 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 IfEnd SubPrivate 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 IfEnd Sub━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━VSFlexString控件属性一览表CaseSensitive        ???Error                失败时取得错误信息Index                索引MatchCount           取得与检索条件相一致的字符串数量MatchIndex           设定与检索条件相一致的字符串的索引MatchLength          取得与检索条件相一致的字符串长度MatchStart           取得与检索条件相一致的字符串起始位置MatchString          取得与检索条件相一致的字符串NameObjectParentPattern              设定检索条件Replace              设定置换字符串Soundex              取得代表当前检索字符的声音代码TagTagCount             取得与检索条件相一致的标签数量TagIndex             在多个标签情况下,设定/取得与检索条件相一致的标签索引TagLength            取得与检索条件相一致的标签长度TagStart             取得与检索条件相一致的标签起始位置TagString            取得与检索条件相一致的标签的字符串Text                 设定成为检索对象Version              取得FlexString的版本号--------------------------------------------------------  MSFlexGrid与VSFlexGrid的单元格合并例子:

    Private Sub Form_Load()Dim i As LongWith 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) = TrueEnd With End Sub

    请问:如何使用 VSFlexGrid Pro 分级显示和存取数据库中的数据。类似于《让 TreeView 支持无限级分类》帖子中所介绍的使用树形控件显示和存取数据库的数据。

    Dim cn as New ADODB.RecordsetDim rs As New ADODB.RecordsetDim lngY As LongDim intT As Integer cn.open "............"rs.Open "select 系统编号 from test order by 系统编号", cnWith 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 iend 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指定显示在单元或指定范围中的图片CellPictureAlingment指定单元或范围中图片的显示位置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指定显示在最上面的行 VersionFlexArray控件的版本号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 WithEnd 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 SubErr:    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 "输入不合法,应输入一个数值", vbInformation, "提示"        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 LongPrivate Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" _        (ByVal pwszKLID As String) As LongPrivate Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As LongPrivate Declare Function ImmGetDescription Lib "imm32.dll" Alias "ImmGetDescriptionA" (ByVal _        hkl As Long, ByVal lpsz As String, ByVal uBufLen As Long) As LongPrivate Declare Function ActivateKeyboardLayout Lib "user32" (ByVal hkl As Long, ByVal _        flags As Long) As Long        Const IME_CONFIG_GENERAL = 1Const KLF_REORDER = &H8Const 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 LongDim i As LongDim strName$if col=1 then   ActivateKeyboardLayout la(1), 1else  ActivateKeyboardLayout la(2), 2end ifend 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("你真的要删除这些记录吗?", vbYesNo + vbQuestion)   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 SelectElse    MsgBox "请选择您要删除的记录!!!", vbExclamation    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


    最新回复(0)