找回密码
 立即注册

QQ登录

只需一步,快速开始

wzzlfok

中级会员

6

主题

29

帖子

647

积分

中级会员

积分
647

活字格认证

wzzlfok
中级会员   /  发表于:2012-1-17 11:58  /   查看:9309  /  回复:8
如题

我的系统是WIN XP 中文版,控制面板里的区域和语言选项中的默认货币符号是人民币。但是我想在程序里显示美元符号,又不想在区域和语言选项中改,

FlexGrid.ColFormat()  不能显示美元符号,好像不支持微软的 format 函数

FlexGrid.ColFormat(1) = "#,###.##"  支持显示
FlexGrid.ColFormat(2) = "#.###%"   ' 支持显示
FlexGrid.ColFormat(4) = "Currency" ' 显示的是‘控制面板里的区域和语言选项中的默认货币符’

我换成 FlexGrid.ColFormat(4) = $#,##0.00  显示的还是 ‘控制面板里的区域和语言选项中的默认货币符’

再换成欧元符号 FlexGrid.ColFormat(4) =

8 个回复

倒序浏览
gw0506
超级版主   /  发表于:2012-1-17 14:52:00
沙发
你可以设置 EditMask 属性为
回复 使用道具 举报
wzzlfok
中级会员   /  发表于:2012-1-18 03:44:00
板凳
[code]
Private Sub Form_Load()
With
.Editable = flexEDKbdMouse
.EditMask = "
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-1-18 17:15:00
地板

回复 3# wzzlfok 的帖子

如果想退出编辑状态按Esc键
[code]Private Sub VSFlexGrid1_StartEdit(ByVal Row As Long, ByVal Col As Long, Cancel As Boolean)

    If Col = 6 Then
        VSFlexGrid1.ColEditMask(6) = "
回复 使用道具 举报
wzzlfok
中级会员   /  发表于:2012-1-19 02:03:00
5#
你这个是开始编辑的事件里, 我指的是用数据绑定后,再指定的列显示欧元美元和人民币符号。而不是编辑输入。再说了,这种编辑输入也太难用了
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-1-19 12:14:00
6#

回复 5# wzzlfok 的帖子

在显示状态下对数据进行格式化,通过ColFormat的确无法满足你同时显示3中货币符号的要求,看通过以下方法是否满足你的需求:
[code]Private Sub Form_Load()
   
    ' 设置表格的自画方法
    VSFlexGrid1.OwnerDraw = flexODContent
   
    ' 设置表格的行数
    VSFlexGrid1.Rows = 21
    VSFlexGrid1.Cols = 5
        
    VSFlexGrid1.TextMatrix(1, 1) = 1234.5
    VSFlexGrid1.TextMatrix(1, 2) = 1234.5
    VSFlexGrid1.TextMatrix(1, 3) = 1234.5
End Sub


Private Sub VSFlexGrid1_DrawCell(ByVal hDC As Long, ByVal Row As Long, ByVal Col As Long, ByVal Left As Long, ByVal Top As Long, ByVal Right As Long, ByVal Bottom As Long, Done As Boolean)
   
    If Row < VSFlexGrid1.FixedRows Then
        Exit Sub
    End If
   
    ' 设置货币符号
    If Col = 1 Then
        If Val(VSFlexGrid1.TextMatrix(Row, Col)) <> 0 Then
            VSFlexGrid1.TextMatrix(Row, Col) = Format(Val(VSFlexGrid1.TextMatrix(Row, Col)), "$###,###.##")
        End If
    ElseIf Col = 2 Then
        If Val(VSFlexGrid1.TextMatrix(Row, Col)) <> 0 Then
            VSFlexGrid1.TextMatrix(Row, Col) = Format(Val(VSFlexGrid1.TextMatrix(Row, Col)), "¥###,###.##")
        End If
    ElseIf Col = 3 Then
        If Val(VSFlexGrid1.TextMatrix(Row, Col)) <> 0 Then
            VSFlexGrid1.TextMatrix(Row, Col) = Format(Val(VSFlexGrid1.TextMatrix(Row, Col)), "
回复 使用道具 举报
wzzlfok
中级会员   /  发表于:2012-1-20 05:12:00
7#
此方法如果只做显示的话是可以的。但是我的程序有时候也要入单的
入单的时候也要输入价格的,是编辑态的时候不显示货币符号,推出编辑态的时候就自动显示货币符号,也就和Excel一样的,在Excel里如果把一列设置成货币型同时设置符号为欧元,,,,我就的是这样的效果。遗憾啊,这么好的表格想实现这样的功能还这么费劲。
回复 使用道具 举报
wzzlfok
中级会员   /  发表于:2012-1-20 19:09:00
8#
谢谢您的在另外帖子里的回答,一样,我正在评估 Spread 8 的产品
回复 使用道具 举报
gw0506
超级版主   /  发表于:2012-1-21 10:38:00
9#
好的。
Spread 8相关的帖子我们还是建议您发到Spread板块的求助中心。评估过程中如有需要,欢迎随时提出,我们共同讨论交流。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部