3.リッチテキストボックスの総行数・現在行・現在桁の取得 |
1.リッチテキストボックスの総行数・現在行・現在桁の取得 2. 3. 4. 5. 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6) Excel 2010 Option :[Option Explicit] 参照設定: 使用 API:SendMessage その他 :プロジェクト→コンポーネント→コントロールで Microsoft Rich Textbox Control 6.0 にチェックを入れ、 :表示されたコントロールをフォームに貼り付けて下さい。 |
1.リッチテキストボックスの総行数・現在行・現在桁の取得 |
5.テキストボックスの総行数・現在行・現在桁の取得と同様のコードで取得できます。 Option Explicit '指定のウィンドウにメッセージを送る(P750) Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _ ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long '複数行テキストボックスにおいてテキストの行数を取得する(P799) Private Const EM_GETLINECOUNT = &HBA ' 〃 指定行の先頭の文字インデックスを取得する(P803) Private Const EM_LINEINDEX = &HBB ' 〃 指定の文字インデックスを含む行インデックスを取得(P802) Private Const EM_LINEFROMCHAR = &HC9 '選択されたテキストの最初と最後の文字インデックスを取得する(P801) Private Const EM_GETSEL = &HB0 Private Function fGetCursorPosition(ByRef txtBox As RichTextBox) As Long() 'テキストボックス用と同じ設定です。 Dim bytArray() As Byte Dim myPos(2) As Long Dim n As Long myPos(0) = SendMessage(txtBox.hwnd, EM_GETLINECOUNT, 0&, 0&) '総行数を取得する myPos(1) = SendMessage(txtBox.hwnd, EM_LINEFROMCHAR, -1&, 0&) + 1 '現在行(カーソル位置の)を取得する myPos(2) = SendMessage(txtBox.hwnd, EM_LINEINDEX, -1, 0) '現在行の先頭位置までのバイト数(Unicode)を取得 If myPos(2) = 0 Then myPos(2) = txtBox.SelStart + 1 '現在桁を求める Else ReDim bytArray(0 To myPos(2)) '行の先頭までの文字数を求める n = Len(StrConv(LeftB$(StrConv(txtBox.Text, vbFromUnicode), myPos(2)), vbUnicode)) myPos(2) = (txtBox.SelStart + 1) - n '現在桁を求める End If fGetCursorPosition = myPos End Function Private Sub RichTextBox1_KeyUp(KeyCode As Integer, Shift As Integer) 'カーソル位置の文字数(行の先頭から桁数)を取得 Dim myPos As Variant myPos = fGetCursorPosition(RichTextBox1) Label1.Caption = " 総行数 : " & myPos(0) & " 現在行 : " & myPos(1) & " 現在桁 : " & myPos(2) End Sub Private Sub RichTextBox1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) 'マウスカーソル位置の文字数(行の先頭から桁数)を取得 Dim myPos As Variant myPos = fGetCursorPosition(RichTextBox1) Label1.Caption = " 総行数 : " & myPos(0) & " 現在行 : " & myPos(1) & " 現在桁 : " & myPos(2) End Sub |
2. |
3. |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |