- ベストアンサー
コントロールボックスの表示について
VB6でプログラミングをしています。 コンボボックスにDBから取得したデータをセットしているのですが、プルダウンでデータを表示したところ、インデックスがずれてしまいます。 '△=半角スペース ---ソース--- combo.AddItem Left$(Trim(mRs.Fields"CODE").Value) "△△△△△△△△",8) & "△" & Trim(mRs.Fields("ITEM").Value ---プルダウン表示(実行結果)--- あいう△△△テスト1 B123△△△△△テスト2 ※ITEMのインデックスがずれてしまう。 ちなみにコンボボックスのフォントはMSゴシックを指定しています。 どなたかプルダウン内の表示を統一する方法について教えて頂けないでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じで関数を考えて見ました。 Private Function CunstomLenB(ByVal pstrCheckVal As String) As Long Dim strWK As String strWK = StrConv(pstrCheckVal, vbFromUnicode) CunstomLenB = LenB(strWK) End Function '------------------------------------------------------------------------------ ' 概要 :引数文字列後ろを全角スペースで埋める ' 引数 :ByVal pstrVal = 付加対象文字列 ' ByVal pintLen = 全角スペース付加後の総byte数 '------------------------------------------------------------------------------ Public Function Put2byteSpace(ByVal pstrVal As String, ByVal pintLen As Integer) As String Dim strWK As String Dim intWK(1) As Integer Put2byteSpace = "" strWK = Trim$(pstrVal) 'byte長取得 intWK(0) = CustomLenB(strWK) '途中に半角があり、2byteで割り切れない場合は半角スペース付加し整形 If intWK(0) Mod 2 > 0 Then strWK = strWK & " " intWK(0) = intWK(0) + 1 End If '引数長一杯なら全角付加しない If intWK(0) < pintLen Then For intWK(1) = 1 To pintLen - intWK(0) Step 2 '全角付加 strWK = strWK & "△" Next intWK(1) End If Put2byteSpace = strWK End Function で、下のように使ったらどうでしょうか。 combo.AddItem Put2byteSpace(Trim(mRs.Fields"CODE").Value, 16) & "△" & Trim(mRs.Fields("ITEM").Value 以前作った関数の一部を抜粋したのみで動作検証はしていません。 おかしかったら勝手に治してください。 半角文字が入った場合なども考慮して常に16Byteにするような関数を作ってしまえば良いとおもいます。
その他の回答 (1)
- pkh4989
- ベストアンサー率62% (162/260)
おはようございます。 以下のようにしてみてください。 後、コンボボックスのフォントはMS明朝に変えてください。 combo.AddItem Left$(Trim(mRs.Fields"CODE").Value) "△△△△△△△△",8) & "△" & Trim(mRs.Fields("ITEM").Value ↓ ComboBox1.AddItem StrConv(LeftB(StrConv(mRs.Fields("CODE").Value & "△△△△△△△△", vbFromUnicode), 8), vbUnicode) & "△" & Trim(mRs.Fields("ITEM").Value)
お礼
回答ありがとうございます。 教えて頂いた内容で試してみたのですが、半角カナなどが文字化けしてしまいます。また、スペースは↑と表示されてしまいました。
お礼
回答ありがとうございます。 教えて頂いた内容でうまくいきました。 ありがとうございました!