VSFlexGrid控件属性和常用方法 三

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
将数字转换为大写金额的函数:
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 系统编号", cn
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
深入了解VSFlexGrid Pro 8:C++开发者的指南 VSFlexGrid Pro 8是ComponentOne开发的一款高性能数据网格控件,适用于Windows平台的桌面应用程序。该控件支持丰富的数据操作功能,包括数据绑定、单元格编辑、排序、过滤、分组等,是开发复杂数据展示应用的理想选择。// 创建网格控件// 绑定数据源data.Add(_T("列1"));data.Add(_T("列2"));data.Add(_T("数据1"));data.Add(_T("数据2"));// 创建网格控件// 配置自定义样式。 阅读详情

相关推荐

VSFlexGrid Pro 8.0 中文手册,历经数月,全文翻译

作者原话: VSFlexGrid Pro 8.0 是一款功能强大的数据表格控件,无须依赖任何应用工具,便可高效、灵活地处理表格,广泛应用于数据库前端、ERP系统设计。VSFlexGrid并没有中文版的使用手册,网上极为少见的列举其属性方法的“强帖”,也不过是机器翻译的结果(Range能翻译成“山脉”,我想也不会有几个人看得懂),且只翻译了这些属性方法的名称,到底这些属性方法是什么意思,怎么使用,则没有任何信息。这对于英文不好的人来说,要翻看密密麻麻的英文手册,不得不说是件痛苦的事。于是我利用空余时间,每天翻译几条,花费数月,终于完成了VSFlexGrid英文用户手册的翻译。本手册为全文翻译,并经过全文复查,内容没有遗漏,但限于本人的英语水平计算机知识水平(均未达到业余爱好的水平),文中错误在所难免,在此,希望大方之家不吝斧正。 附件已经设置好完整的目录书签,方便大家查找阅读。作者见pdf

VSFlexGrid Pro 8_vsFlexGrid_vsflexgridpro8.0_VSFlexGridPro8.0_VS

vsflexgrid表格控件使用说明,详细解释事件,方法属性

VSFLEXGRID的TreeNode效果

VB VSFLEXGRID的TreeNode效果

天下文章一大抄看你会抄不会抄devGridView凭证金额录入(万仟百拾元)

先来个效果图 源代码晚点上传,赚点小分,万望理解 !!

cheungbill的专栏 330

vsFlexGrid常用功能介绍

vsFlexGrid是ComponentOne公司的一个ActiveX控件,它与MS的MSHFlexGrid控件在功能上是兼容的,即MSHFlexGrid所具备的属性方法,它也都具备,只有少数几个属性名称略有不同,使用MSHFlexGrid编写的程序,只需要作较小的调整就可以转换过来;但相比MSHFlexGrid,vsFlexGrid多了很多功能,它的属性事件非常丰富,可以实现非常灵活的控制...

weixin_30518397的博客 1189

VSFlexGrid控件属性常用方法

<br />VSFlexGrid控件属性常用方法二dayf,2009-08-13 10:10:41<br /><br />一、增加记录使用for来循环表格行。<br />     for i=1 to grid1.rows-1<br />           with rs<br />                  .addnew<br />                  .fileds(o)=grid1.textmariy(i,0)<br />                  .fileds(

HuangZ2350的专栏 1020

VSFlexGrid控件属性方法一览表

 VSFlexGrid 控件属性方法一览表(带()为方法)属性/方法名称         功能                           示例语法AddItem()             增加一行                       O.A String[, RowIndex]Aggregate             返回集合合计(总数,平均,等等)   O.A = (A,R

NetNing 2969

vsflexgrid 复选框_VB表格VSFlexGrid使用方法详解

VSFlexGrid控件用于创建一个表格,类似于excel的表格形式。对于显示大量数据,以及与用户实现交互,是非常必要有用的控件VSFlexGrid控件数据库结合,可以实现非常强大的功能。接下来,我们一起来学习VSFlexGrid控件常用属性方法,以及如何使用VSFlexGrid控件。(以下简称VS表格)如何添加VSFlexGrid控件?在工程-部件选项卡中找到componen...

weixin_39699070的博客 5380

Vb中VSFlexGrid控件的应用

说明:O代表VSFlexGrid控件的名称,A代表当前属性名称,|代表可选       属性/方法名称                                                 功能                                               示例语法    AddItem()                                

june905206961的专栏 8797

VSFlexGrid控件属性常用方法(1)

<br />1,如果想把某一列设置成下拉匡中选择,只能写成 grid.colcombolist(1) = "a|b|c" 吗?能不能把下拉框中的数据 recordset 或数组绑定。<br />答案:grid.colcombolist(1)=grid.buildcombolist(rs!abc)<br />2,怎样限定第列可编辑,其他列不可编辑?<br />答案:<br />Private Sub fg_BeforeEdit(ByVal Row As Long, ByVal Col As Long, C

AYongSoft的专栏 7940

VB控件VSFlexGrid 属性

VSFlexGrid 属性 方法 最近用到这个东西。 以下来自网络~     VSFlexGrid 控件属性方法一览表VSFlexGrid 控件属性方法一览表(带()为方法)   说明:O 表示 VSFlexGrid 对象的名,A 表示当前属性名,|表示可选 ---------------------------------------------------------------

dingjiajia_949的专栏 6381

VSFlexGrid控件属性常用方法

1113

Cskl1的专栏 630

VSFlexGrid控件收藏

  VSFlexGrid控件收藏 新一篇: 用金山词霸的dll文件实现屏幕取词  | 旧一篇: 如何使用 IPSec 阻止特定网络协议端口 function StorePage(){d=document;t=d.selection?(d.selection.type!=None?d.selection.createRange().text:):(d.getSele

skyremember的专栏 4510

VSFlexGrid 控件属性方法一览表(带()为方法)

VSFlexGrid 控件属性方法一览表(带()为方法) 属性/方法名称        功能                           示例语法 AddItem()            增加一行                       O.A String[, RowIndex] Aggregate            返回集合合计(总数,平均,等等)   O.A = (A

youfulan的专栏 6043

VSFlexGrid中文手册

 VSFlexGrid   控件属性方法一览表(带()为方法)     属性/方法名称                 功能                                                       示例语法     AddItem()                         增加一行                                    

Ivan Song的专栏 5520

VSFlexGrid控件属性常用方法

8,最下面的合计的那一行是怎么加的??希望楼主指点一下,谢谢!Ansewr:合计行添加代码:*****************************************显示计算合计行.Rows = .Rows + 1     Dim r&, c&, tot!     For c = 1 To .Cols - 1         tot = 0         For r = 1 To .

Cskl1的专栏 1965

VSFlexGrid控件属性常用方法(2)

一、增加记录使用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)                  .f

AYongSoft的专栏 3207
上一篇: VSFlexGrid控件属性和常用方法 四
下一篇: VSFlexGrid控件属性和常用方法二
Cskl1
博客等级 码龄17年 1粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值