ラベルで半角英数を改行するには?


hiroki  2005-01-16 02:08:30  No: 87820

始めまして。初歩的な質問ですがよろしくお願いします。
環境はVB6.0です。

サイズが決まっているラベルオブジェクトで
labelのキャプションにプログラムの中でセットするんですが
半角英数を入れた場合は改行されずに表示文字が切れてしまいます。
全角文字が入る場合もありますので文字数を判定して改行コード
を入れると半角文字の場合見た目の長さが全角の半分になってしまって、
バイト数だとは半角でも2バイト文字で扱われるんでうまくいかないんです。

わかる方がいましたらおねがいします。


ささ  2005-01-16 08:12:02  No: 87821

泣き別れ処理を考慮する必要があるかと思います。


はまちゃん  2005-01-17 02:17:02  No: 87822

>バイト数だとは半角でも2バイト文字で扱われるんでうまくいかないんです。
VBの内部文字コードはUNICODEなので、そのままLenB関数を使っても全角半角のバイト数は同じです。
なので、以下のようにしてみて下さい。

LenB(StrConv("TEST", vbFromUnicode)) → 4が返される
LenB("TEST")                         → 8が返される

序でに、
"てすとTESTてすと"文字列から"TEST"を取り出したいとすると
StrConv(MidB(StrConv("てすとTESTてすと", vbFromUnicode), 7, 4), vbUnicode) → "TEST"が返される
MidB("てすとTESTてすと", 7, 4)                                             → "TE"が返される


hiroki  2005-01-18 03:52:51  No: 87823

はまちゃんさんありがとうございます。
しかし、StrConv()なども使っているんですが
全角半角が混ざると全角が文字化けしてしまって
使い物にならなくなります。
ラベルのサイズは決まっていて、例えば全角15文字分の
サイズの場合は
例:"テストテストテストテストテスト"
                 ↓
  [テストテストテストテストテスト(改行)]  15文字

    "TestTestTestTestTestTestTestTest"
                ↓
  [TestTestTestTestTestTestTestTe(改行)] 30文字

    "テストTestテストTestテストtest"
                ↓
  [テストTestテストTestテストtest(改行)] 21文字

こんな感じでセットしたいんですが、文字はデータベース
からでユーザーが入力するので決まった文字列ではないんです。


はまちゃん  2005-01-18 08:57:00  No: 87824

>全角半角が混ざると全角が文字化けしてしまって使い物にならなくなります。
どんな感じでうまくいかないのか分からないので、具体的なソースコードを公開していただけると有難いのですが…。


ささ  2005-01-18 10:22:29  No: 87825

だから、「泣き別れ処理」を加えれ!!
無視するのはかまわないが、せめてググれ

泣き別れという言葉の意味は把握してる?


はまちゃん  2005-01-18 21:23:10  No: 87826

さささんの仰るとおり、Googleで検索したらありますよ。

例えば、
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/9419/access/str_cut/1.html


ささ  2005-01-18 21:54:41  No: 87827

やりたいことを
一般的なキーワードにして提示しているのに、
なぜ見つけられないのかがホントわかんねぇ〜。

検索サイトなどでキーワードに何を指定して探していたか、
教えてください。


  2005-01-20 09:50:38  No: 87828

学生のやることですから、穏便に


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加