tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトル(VB6テキストボックス自動改行機能
記事No16343
投稿日: 2017/07/21(Fri) 08:38
投稿者ぽん
テキストボックスに入力した文字数が70バイト(半角1文字1バイト、全角1文字2バイト)を超えた場合、
自動改行するプログラムを作りたいのですが、何か良い方法があれば教えて頂けないでしょうか?

[ツリー表示へ]
タイトルRe: (VB6テキストボックス自動改行機能
記事No16344
投稿日: 2017/07/21(Fri) 10:46
投稿者魔界の仮面弁士
> テキストボックスに入力した文字数が70バイト(半角1文字1バイト、全角1文字2バイト)を超えた場合、
vbTab な文字の幅はどのように扱いますか?


> 自動改行するプログラムを作りたいのですが、何か良い方法があれば教えて頂けないでしょうか?
VB6 の TextBox ということは、Shift_JIS 前提ですね。
.NET だと、「ゼロ幅文字」や「結合文字」などへの考慮も必要になってくるところですが。


以前見た処理では、TextBox に固定幅フォントを設定したうえで、
その TextBox の幅を 70桁ぴったりにあわせておき、さらに
SendMessage で EM_SETWORDBREAKPROC を投げて、
ワードラップを単語単位から文字単位に変更していました。



見た目上の話ではなく、データとして改行文字を含めたいという意味だとすれば、
そのものズバリは無いと思うので、基本的には自作になるかと思います。

その場合、入力中(Change や KeyPress)に改行すると、
漢字変換時の障害になりますので、改行の挿入処理は、
Validate イベントや LostFocus などのように、
入力後のタイミングで調整することになるかと思います。

[ツリー表示へ]