■9506 / ) |
テキストボックスの日本語文字ずれ(至急) |
□投稿者/ flyboy (1回)-(2007/10/29(Mon) 13:30:22)
|
分類:[.NET 全般]
この問題に悩んでいます。
windows2000&VB6.0
テキストボックスに日本語文字を表示する時に、テキストボックスのフォントはMSゴシックに設定済み。英数字記号は下記問題ないみたいです。
Text6.Text = Text6.Text & fStrCut(strArry(0), 18) & "|" & vbNewLine
実行した時、Text6.Textの表示:
奥田 喜美枝 |
浜川 智子 |
テスト 016ノ2|
文字がそれてますね。何でぞれぞれの行の長さは違う感じですか。フォントの問題ですか?私はMSゴシックに設定しますね。上記の表示されているテキストをメモ帳にコピーして、メモ帳のフォントもMSゴシックに設定して、正しく現れます。
皆様、教えていただけませんか?
fStrCutについて
文字列を指定の幅にカットの役割で、半角・全角の混在する文字列を同じ半角換算文字長で取り出します。
最後の文字が漢字で、漢字分断がおきたら、半角スペースを付加し、対象文字数が少ない場合は、スペースを補います。
ソースコード:
Private Function fStrCut(ByRef CutTxt As String, _
ByVal CutLen As Long) As String
'半角・全角の混在する文字列を半角換算文字長で取り出し
Dim myLen As Long, SysCodeTxt As String
SysCodeTxt = StrConv(CutTxt, vbFromUnicode) '文字列を変換
myLen = LenB(SysCodeTxt) '半角換算のバイト数を取得
If myLen <= CutLen Then '指定の長さより短い場合
fStrCut = CutTxt & Space$(CutLen - myLen) '足りない分はスペースで
Else '該当の文字列の方が長い場合、指定のバイトでカットする
fStrCut = StrConv(LeftB$(SysCodeTxt, CutLen), vbUnicode)
If InStr(fStrCut, vbNullChar) > 0 Then
'漢字1バイト目で分断された場合の処理
fStrCut = Left$(fStrCut, InStr(fStrCut, vbNullChar) - 1) & " "
End If
End If
End Function
|
|