Foxtable(狐表)用户栏目专家坐堂 → [灌水] 如何让Output的显示效果排整齐点


  共有13764人关注过本帖树形打印复制链接

主题:[灌水] 如何让Output的显示效果排整齐点

帅哥哟,离线,有人找我吗?
gdlgh
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:449 积分:3506 威望:0 精华:5 注册:2008/9/1 2:32:00
  发帖心情 Post By:2011/10/23 14:42:00 [显示全部帖子]

'这个System.Text.Encoding.Default.GetByteCount可以解决

 

Dim n1,n2,n3 As Integer
Dim str As String
For Each dc As DataCol In DataTables("表A").DataCols
    n1=System.Text.Encoding.Default.GetByteCount(dc.name)
    If n1>n2 Then
        n2=n1
    End If
Next
For Each dc As DataCol In DataTables("表A").DataCols
    n1=System.Text.Encoding.Default.GetByteCount(dc.name)
    str = "第 " & format(n3,"000") & " 列:  "
    str &= "【" & dc.name & left("                 ",n2-n1) & "】"
    str &=  "  的字符个数是:   " &  dc.name.length
    n3 +=1
    Output.Show(str)
Next

[此贴子已经被作者于2011-10-23 14:43:31编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
gdlgh
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:449 积分:3506 威望:0 精华:5 注册:2008/9/1 2:32:00
  发帖心情 Post By:2011/10/25 1:51:00 [显示全部帖子]

以下是引用mr725在2011-10-24 20:00:00的发言:

gdlgh前辈厉害!

这个是关键:n1=System.Text.Encoding.Default.GetByteCount(dc.name)   以前lxl版主教过,呵呵。

不需要空格: str &= "【" & dc.name.Padright(n2-n1+dc.name.length)  & "】"

 

不需要空格,但多用了一个函数的计算开销!

 

另一思路,改进为只用一个循环!显示结果一样!

 

Dim n1,n2,n3,n As Integer
Dim str As String
n=20 '设定最大列名长度是10个中文字符,一般不会大过这个数吧^v^
For Each dc As DataCol In DataTables("表A").DataCols
    n1=System.Text.Encoding.Default.GetByteCount(dc.name)
    If n1>n2 Then
        n2=n1
    End If
    str &= "第 " & format(n3+1,"000") & " 列:  "
    str &= "【" & dc.name & left(Space(n),n-n1)& "】"
    str &=  "  的字符个数是:   " &  dc.name.length & vbcrlf

    n3 +=1
Next
Output.Show(str.Replace("】".PadLeft(n-n2+1),"】"))


 回到顶部