VB6です。
半角文字で65文字が2段に書けるTextBoxを用意しました。
1段目に"*12345678....1234" と65文字書きました。
2段目に"567890" と6文字書きました。
1段目の"*"の前に"a"を書き込む(挿入する)と
1段目の末尾は(66文字は入らないので)
2段目の最初に移動します。
これが普通ですよね。
しかし
1段目の"*"の前に" "(スペース)を書き込むと
1段目は空行になり
1段目の内容は2段目へ移動してしまいます。
これは困ります。
これは一例ですがスペースを挿入したり
BackspaceやDeleteキーを使うと変な配置になってしまいます。
これはVBでは仕方のないことでしょうか?
解決の方法がありましたら教えてください。
No.2ベストアンサー
- 回答日時:
ごめんなさい m(__)m
MyBreakProcの最初の引数が String型ではダメでした
標準モジュール側
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const EM_SETWORDBREAKPROC = &HD0
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Public Function myBreakProc(ByRef lpch As Long, ByVal ichCurrent As Long, ByVal cch As Long, ByVal code As Long) As Long
Dim ss As String, arByte() As Byte
ss = Space(cch)
arByte = ss
CopyMemory arByte(0), lpch, cch
ss = StrConv(arByte, vbUnicode)
myBreakProc = 0
End Function
Function GetAddr(lpAddr As Long) As Long
GetAddr = lpAddr
End Function
フォームのLoadイベントも変更が必要でした
dim lpProc as Long
lpProc = GetAddr( Addressof myBreakProc )
SendMessage Text1.hWnd, EM_SETWORDBREAKPROC, 0, ByVal lpProc
といった具合です ・・・
No.1
- 回答日時:
VBというよりWindowsの仕様だったように思います
!%?)]などが文字列の途中にあって1行の長さがテキストボックスの横幅より大きい場合 前日の文字で自動的に改行します
やるとするなら EM_SETWORDBREAKPROCメッセージをテキストボックスコントロールに送信して
自前の区切りメッセージに対応しましょう
標準モジュールに
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const EM_SETWORDBREAKPROC = &HD0
Public Function myBreakProc( lpStr as String , ichCurrent as Long, cch as Long, code as Long ) as Long
myBreakProc = 0
End Function
フォームのLoadイベントで
SendMessage Text1.hWnd, EM_SETWORDBREAKPROC, 0, addressof MyBreakProc
を実行します
VB6のIDEから実行すると VB6自体が落ちてしまいますので
EXEファイルにして実行しましょう
myBreakProc( lpStr as String , ichCurrent as Long, cch as Long, code as Long )
の引数は lpStrがテキストボックス編集対象の文字列
ichCurrent が編集中の開始点
cchが編集テキストの文字数
codeはどうして呼ばれたかのデータ
VB6付属のMSDNなどで EM_SETWORDBREAKPROCやEditWordBreakProcなどを調べてみてください
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- ノートパソコン Jpegの写真に文字を入れる方法。 6 2022/09/24 17:15
- WordPress(ワードプレス) ワードプレスで、左寄せ画像と文字を横並びにせず、画像の下に文字を表示される方法を教えてください 1 2022/04/24 11:06
- iPad これまでタブレットは何台使ったか数え切れないほどですが、今回iPadを初めて手に入れました。 全体的 5 2022/08/07 18:34
- Visual Basic(VBA) 指定した文字から指定した文字のスペースまでを削除するVBAの構文について 6 2022/07/24 22:20
- Word(ワード) ワード。長い四角の中に文字を体裁良く入力するには。 2 2022/09/24 14:19
- Excel(エクセル) エクセルの数式で教えてください。 3 2022/10/25 10:52
- 面接・履歴書・職務経歴書 手書き文字でミス連発、パソコンスマホの影響ですか?同上を同止、~ためを~たぬ、チェックをチェッタ… 1 2022/04/04 06:58
- 大学受験 指定校推薦の入試で100字以内要約と700文字の小論文の試験があったのですが700文字の方は普通に書 1 2022/11/17 18:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
マクロを使ってフォルダー内に...
-
エクセルで数値を全角文字(カ...
-
WORDで改ページすると時々グレ...
-
EXCELからCSVにすると余計なカ...
-
海外のケータイ(GSM携帯)はハ...
-
CSVの定義
-
エクセルの関数カンマ区切りの...
-
カンマ区切りの数字をCSVフ...
-
何故、日本は未だに数字を3桁...
-
3桁ごと?4桁ごと?コンマの...
-
エクセルの区切り位置の設定方法
-
VB2005のTextBoxでカン...
-
エクセルで電話番号を取り出す...
-
エクセルの1セル内の文字列操作。
-
C#でcsvファイルの列を入れ替え...
-
SUM関数を利用すると自動的に桁...
-
エクセル:桁区切り「カンマ」...
-
電話番号の正規表現
-
【VBA】エクセルで値のみクリッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
EXCELからCSVにすると余計なカ...
-
マクロを使ってフォルダー内に...
-
カンマ区切りの数字をCSVフ...
-
CSVの定義
-
WORDで改ページすると時々グレ...
-
何故、日本は未だに数字を3桁...
-
データにカンマが入ったCSVデー...
-
3桁ごと?4桁ごと?コンマの...
-
[VBA][Excel]クリップボードか...
-
カンマ区切り
-
VBAでtxtファイルを読み込む際...
-
「カンマ」と「コンマ」は同じ...
-
メモ帳からエクセルにセル区切...
-
パス区切りの文字について
-
EXCELの文字が指数になる
-
C#で、テキストボックスの入力...
-
PHP カンマをエスケープしたい...
-
カンマ区切りでないテキストをc...
おすすめ情報