![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_06.png?e8efa67)
VB6.0でダイアログベースの開発を行っています。
このダイアログにボタンがついているのですが、ボタンキャプションが長くなると、自動的に折り返されてしまいます。
キャプションに与える文字列の性質上、文字列の折り返されるよりは、途中で切れたほうがよいのですが、ボタンのプロパティのなかに折り返しを禁止できそうな項目が見つからず困っています。
どなたかお知恵をお貸しください。
------ ↓ ソース(一部抜粋)と補足説明 -------
外部から受け取った文字列がgstrBtn変数に格納されている。
この変数には日本語または英語が入る。
全角文字の場合9文字まで、半角文字の場合13文字まで表示したい。
そこで、Left(gstrBtn, 13)でgstrBtnの先頭から13文字を取り出し、あとはボタン幅で字数を制限しようとしている。
よって、折り返されると都合が悪い。
'ボタンの文字列の設定
If gstrBtn > "" Then
cmdFind.Caption = Left(gstrBtn, 13)
End If
No.1ベストアンサー
- 回答日時:
>cmdFind.Caption = Left(gstrBtn, 13)
これですと、全角・半角の判断ができません。
cmdFind.Caption = StrConv(LeftB(StrConv(Trim(gstrBtn), _
vbFromUnicode), 13), vbUnicode)
これで、出来ると思います。
試してみて下さい。
No.3
- 回答日時:
★Win32 API でボタンのスタイルに『折り返しする』という項目があります。
・私は C/C++ 言語が専門ですので、VB6.0 は自動的に『折り返しする』のオプションに
チェックされるのかもしれませんね。
・API でのお話になりますが、上記の折り返しする指定は『BS_MULTILINE』という定数で
行えます。よって、ボタンのスタイルを VB6.0 の方法で取得してから『BS_MULTILINE』
のフラグをリセット(論理演算)して下さい。
・また動的にボタンのスタイルを変更するときには、やはり Win32 API の操作になりますが
『SetWindowLong()』関数に『SWP_FRAMECHANGED』定数を指定して更新する必要があります。
・下に C 言語ですがサンプルを載せます。
Cサンプル:
LONG dwStyle;
dwStyle = GetWindowLong( Button.hWnd, GWL_STYLE );
dwStyle &= ~BS_MULTILINE; ←VBでは『dwStyle = dwStyle And (Not BS_MULTILINE)』かな?
SetWindowLong( Button.hWnd, GWL_STYLE, (LONG)(INT64)dwStyle );
SetWindowPos( Button.hWnd, NULL, 0, 0, 0, 0, (SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER|SWP_FRAMECHANGED) );
最後に:
・上記の『Button.hWnd』がボタンのウインドウ・ハンドルになります。コントロールのウインドウ
ハンドルですよ。→API 関数では Button.hWnd = GetDlgItem( hDlg, IDC_BUTTON ); で取得できますが…。
・重要なのはボタンスタイルの『BS_MULTILINE』定数をリセットすることです。
VB6.0 にボタンスタイルを変更する『Modify』関数などがあれば、それで変更が可能です。
変更後は必ず、『SetWindowLong()』関数に『SWP_FRAMECHANGED』定数を使っての更新処理を
行って下さい。これを忘れるとメモリ内のキャッシュ・スタイルのまま見た目の変化が起こりません。
・以上。おわり。→上手く VB6.0 用に書き換えて下さい。
参考URL:http://www.activebasic.com/help_center/Pages/API …
No.2
- 回答日時:
'--------------------------------------------------
Dim K As Integer
Dim CapWidth As Double
CapWidth = TextWidth("国国国国国国国国国") ’予め調べた幅
Dim Moji As String
Moji = "あいうえおかきくけこさしすせそ" '●取込んだ文字
Moji = Left(Moji, 13)
For K = Len(Moji) To 1 Step -1
Moji = Left(Moji, K)
If CapWidth >= TextWidth(Moji) Then Exit For
Next K
cmdFind.Caption = Moji
'-------------------------------------------------------
デザイン時にcmdFindの幅を全角9文字表示できるように配置する
全角9文字の幅を予め調べておく
取り込んできた文字を無条件に13文字取る
予め調べておいた9文字の幅 >= 取込んだ文字の幅
この状態になるまで取込んだ文字から一文字ずつ減らし比較していく。
なお、この方法ではFontにより10文字表示される場合もある
勘違い等ありましたらご容赦願います。
以上です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) マクロでボタンにつける名前がどこに設定されているかわからないケースがありました。 1 2023/06/19 19:37
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Java Java 南京錠 2 2023/02/04 11:46
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
- gooブログ Twitterの動画画面をgooブログに埋め込めない 4 2022/06/03 16:40
- Excel(エクセル) エクセルでA列セル内で折り返すことなく、文字列を、B列C列・・・側に一行に 2 2022/07/23 02:02
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- Excel(エクセル) エクセル セル内の文字数を超えたら自動的に折り返して表示 2 2023/07/24 05:32
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームに別シートか...
-
VB.NETです ラジオボタンの文...
-
閉じると「+」になり開くと「-...
-
コマンドボタンの長押し
-
セルをマクロのボタンにしたい。
-
C#でSendInputを使ったサンプル...
-
+ボタンの名称は?
-
アイコンとボタンの違い
-
VBA IE ダウンロード ダイアロ...
-
フォームの再読み込み
-
コマンドボタンやイメージにマ...
-
VB6.0 ボタンキャプションの折...
-
C#プログラムで、ボタンをショ...
-
CommandButtonのCaptionを変化...
-
VB6.0でボタンの選択状態を解除...
-
VBでのエラー音の消し方
-
回数のカウント
-
ボタンにセットフォーカスする...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
フォームの再読み込み
-
VBA CommandButtonの文字ずれ
-
ユーザーフォームに別シートか...
-
VBAのボタンの位置が変わって困...
-
Access VBA でデータペーストを...
-
Excel VBA Application.caller...
-
セルをマクロのボタンにしたい。
-
コマンドボタンやイメージにマ...
-
ボタン
-
プロシージャからイベントをコ...
-
ボタンをマウスで押し続けたと...
-
VBA でのボタンの移動について
-
C#で動的に作ったtextboxを消す。
-
バックスペース機能の作り方
-
VBAで多数のプログラムを一つの...
-
アイコンとボタンの違い
-
TextBoxでEnterキーを押すと、...
-
VBA IE ダウンロード ダイアロ...
おすすめ情報