テキストボックス内でカーソルが動いたとき、
カーソルが今何行目にあるかを表示したいのですが、
どうしたらいいでしょうか?
カレット位置で宜しかったでしょうか?
http://f57.aaa.livedoor.jp/~jeanne/tips/textbox/01-selstart.html
お返事とサンプルありがとうございます。
カレットって言うんですね。
サンプルでは、テキストの文字数がカウントされているんですが、
純粋に行数だけというのは可能でしょうか?
しかも、カレットが動いたときにリアルタイムで表示したいのですが・・・
こんなのとか。
http://www.vbvbvb.com/jp/gtips/0701/gSendMessageEmLinefromchar.html
呼び方は、カーソルでもかまわないと思いますよ。
あと、キャレットとも言いますね。
あ、行だったのですね...。
しっかり読んでいませんでした... 申し訳ありません m(_ _)m
>呼び方は、カーソルでもかまわないと思いますよ。
>あと、キャレットとも言いますね。
「アイビーム」という言い方もあったりする。
目から出る光線のこと
ではなくて形状がI形梁の断面に似ているからですね。
たくさんのお返事有難うございます!
LESIAさん
サンプル有難うございます。
.basの意味も分かってない初心者なのでそこから調べて何とか動きました。
じゃんぬねっとさんのサンプルとあわせて、カレットの位置を検出して
表示することには成功したのですが、キャレットが動いたときに作動するようには出来ないのですか?一応プログラムは作ってみたのですが・・・
(.frm) だけ書いています。
Option Explicit
Dim v As Double
Dim lngLineFromCharCharIndex As Long
Dim lngLineFromCharLineIndex As Long
Private Sub KeyDown()
v = Text1.SelStart
' 先頭からの文字目を指定
lngLineFromCharCharIndex = v
' 指定文字番目が含まれる行番号を取得
lngLineFromCharLineIndex = _
SendMessage(Text1.hWnd, _
EM_LINEFROMCHAR, _
lngLineFromCharCharIndex, _
ByVal CLng(0))
' 結果を表示
Label5.Caption = lngLineFromCharLineIndex
End Sub
Private Sub MouseDown()
v = Text1.SelStart
' 先頭からの文字目を指定
lngLineFromCharCharIndex = v
' 指定文字番目が含まれる行番号を取得
lngLineFromCharLineIndex = _
SendMessage(Text1.hWnd, _
EM_LINEFROMCHAR, _
lngLineFromCharCharIndex, _
ByVal CLng(0))
' 結果を表示
Label5.Caption = lngLineFromCharLineIndex
End Sub
Private Sub Text1_Change()
v = Text1.SelStart
' 先頭からの文字目を指定
lngLineFromCharCharIndex = v
' 指定文字番目が含まれる行番号を取得
lngLineFromCharLineIndex = _
SendMessage(Text1.hWnd, _
EM_LINEFROMCHAR, _
lngLineFromCharCharIndex, _
ByVal CLng(0))
' 結果を表示
Label5.Caption = lngLineFromCharLineIndex + 1
End Sub
キャレットが動いたということは、マウスかキーボードで動かしたという
ことですよね。
テキストボックスのイベントに掲示のコードのプロシージャ名と同じよう
なのがあるので、そこに行番号を取得するコードを書いてみては?
LESIAさん
ありがとうございます!早速Textのイベントを使ったのですが、
手書きで作ってしまったので変数の定義をしておらずコンパイルエラーが出てあせってしまいました。
でも無事に解決しちゃんと動きました!!
3日にわたるお付き合いとアドバイスほんとにありがとうございました!!!
ツイート | ![]() |