現我有一些字串(是 Recordset 中的兩個欄位中的值組合而已)﹐如下﹕
頭庄              0001
前心              0002
頭庄內裡            0003
頭庄補強            0004
頭庄飾片            0005
頭庄外片            0006
頭庄內片            0007
頭庄內裡內           0008
頭庄內裡外           0009
頭庄補強外           0010
頭庄補強內           0011
頭庄飾片外           0012
頭庄飾片內           0013
頭庄接片            0014
頭庄接片補           0015現我要將其對齊顯示﹐我用的方法如下﹕
rs.MoveFirst
Do While Not rs.EOF
    strNodeName = rs.Fields("part_nm").Value
    Debug.Print strNodeName & Space(16 - Len(strNodeName)) & rs.Fields("part_no").Value
    Set Nod = tvwTree.Nodes.Add(, , , strNodeName & Space(16 - Len(strNodeName)) & rs.Fields("part_no").Value)
    rs.MoveNext
Loop可顯示出來的值為什么總是沒對齊呢﹐我算了一下﹐差不多每一個字相差1.5 個字位。
顯示如上所貼。其中 rs.fields("part_nm") 的欄位寬度為16 (varchar) ; rs.fields("part_no") 的欄位寬度為 4 (varchar )  .
以前我做過這對齊方式﹐但沒有出現這種巽常情況的呀。
是不是VB 的問題還是我哪里有寫錯的問題呢。

解决方案 »

  1.   

    使用len()获得的是 unicode 字符个数
    如果只有中文字符在strNodeName中,可将
    Debug.Print strNodeName & Space(16 - Len(strNodeName)) & rs.Fields
    改为
    Debug.Print strNodeName & Space(16 - 2*Len(strNodeName)) & rs.Fields
    也可以使用测字节长度的函数,好像是blen(),你自己查msdn吧
      

  2.   

    rs.MoveFirst
    Do While Not rs.EOF
        strNodeName = rs.Fields("part_nm").Value
        Debug.Print strNodeName & Space(16 - LenB(strNodeName)) & rs.Fields("part_no").Value
        Set Nod = tvwTree.Nodes.Add(, , , strNodeName & Space(16 - LenB(strNodeName)) & rs.Fields("part_no").Value)
        rs.MoveNext
    Loop
      

  3.   

    你位兩位說的方法其實是一個原理﹐但是那樣做的話﹐我的16 就要改成32 了。
    不然會出現錯誤。因為當我的 part_nm  中的值超出 8 個漢字時就會出問題。
    本來在開始時我也想這么做的﹐但我如果那樣的話﹐會用掉很多的空間來顯示空格列了。
    除了這還有其他辦法嗎﹖
      

  4.   

    type tagPostion
        A001  As String * 30
        A002  As Strinf * 10
    end type'///////定义////////////
    dim CharDeal as tagPostionrs.MoveFirst
    Do While Not rs.EOF
        CharDeal.A001= rs.Fields("part_nm").Value
        CharDeal.A002= rs.Fields("part_no").Value
        Debug.Print CharDeal.A001 & CharDeal.A002
        rs.MoveNext
    Loop
      

  5.   

    更正:
    "Strinf"为"String"
    笔误。
      

  6.   

    to alicky(周松) :
    不行啊。我測試了用定長﹐顯示的還是一樣的﹐位置對不齊。to a_cer(玩家) , xz8000(小熊) :
    我用lenb 可以在debug.print 中顯示正常﹐可為什么當我放到 TreeView 控件中時
    顯示的又不對齊了昵﹐是不是TreeView 控件本身不支持這樣的對齊方式還是在處理字串時
    有其他的規則呢﹖