10.表示位置・印字位置(文字列)を揃える |
1.表示位置・印字位置(文字列)を揃える 2. 3. 4. 5. 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6) Option :[Option Explicit] 参照設定:追加なし 使用 API:なし その他 : : |
1.表示位置・印字位置(文字列)を揃える |
リストボックスに表示したり、印刷した時に文字列を揃えたい所にうまく揃わなかったり、微妙にずれる事があるかと思います。そのような時には、下記のプロシージャと等幅文字を使って見て下さい。 Option Explicit 'SampleNo=090 2002.05.17 Private Sub sFontSet(myObj As Object, _ Optional FName As String = "MS ゴシック", _ Optional FSize As Integer = 12, _ Optional FBold As Boolean = False) With myObj .FontName = FName .FontSize = FSize .FontBold = FBold End With End Sub Private Function StrCut(ByRef myString As String, _ ByVal LenN As Long) As String Dim i As Long Dim j As Long Dim k As Long Dim myStringLen As Long Dim strTemp As String If LenN < 1 Then myString = "": Exit Function myStringLen = LenB(StrConv(myString, vbFromUnicode)) If LenN = myStringLen Then '全部半角文字の場合 StrCut = myString Exit Function ElseIf myStringLen < LenN Then '文字数が足りない時 StrCut = myString & String$(LenN - myStringLen, " ") Else strTemp = "": k = 0 For i = 1 To Len(myString) '文字数(半角換算)のカウント j = Asc(Mid$(myString, i, 1)) If j >= 0 And j <= 255 Then '半角の場合のカウント k = k + 1 If k > LenN Then Exit For strTemp = strTemp & Mid$(myString, i, 1) Else k = k + 2 '全角の場合のカウント If k <= LenN Then strTemp = strTemp & Mid$(myString, i, 1) ElseIf k - 1 = LenN Then '漢字分断の処理 strTemp = strTemp & " " Else Exit For End If End If Next StrCut = strTemp End If End Function Private Sub Command1_Click() Dim PostalNo(2) As String Dim Address(2) As String Dim strName(2) As String Dim i As Integer Picture1.AutoRedraw = True PostalNo(0) = "〒527-0000" Address(0) = "滋賀県 IW 八日市市 1-2-3" strName(0) = "蚊取 新語" PostalNo(1) = "〒527-1111" Address(1) = "滋賀県 HW 大津市 1-2" strName(1) = "仲居 摩砂廣" PostalNo(2) = "〒527-1234" Address(2) = "滋賀県 IW 彦根市 10-2" strName(2) = "草名木 剛史" sFontSet Picture1, "MS Pゴシック", 12 For i = 0 To 2 Picture1.Print PostalNo(i) & " " & Address(i) & " " & strName(i) Next i Picture1.Print sFontSet Picture1, "MS ゴシック", 12 For i = 0 To 2 Picture1.Print StrCut(PostalNo(i), 12) & _ StrCut(Address(i), 28) & StrCut(strName(i), 14) Next i End Sub 図1.上記実行結果 半角文字2個が全角文字1個分の幅になるようなポイントの文字(等幅文字)を使用して下さい。 MS 明朝 及び MS ゴシック 文字ポイント 半角幅 全角幅 9 90 180 10 105 195 11 120 225 12 120 240 14 150 285 16 165 315 18 180 360 20 210 405 幅の単位=twip 1 センチは 567twip、1 インチは 1,440twip になります、1 インチは 72 ポイントになります。 |
2. |
3. |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |
表示位置を揃える 印字位置を揃える 文字列の表示位置を揃える |