掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
カーソルの位置の行・列番号を表示するには? (ID:8338)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> どちらもずっとCnt=1のままで違いがわかりません。 これは > 試しにメンバー変数IdleCnt追加して、 をしてなくて、ローカル変数にしてるんじゃないですか? > キャレット位置に変化があったときだけ の条件は、コードの中の if revSelStart <> RichEdit1.SelStart then の部分で判断しています。この判断をする前とした後でどのくらい回数が違うか を見るといいのです。以下のようにします。 type TForm1 = class(TForm) StatusBar1: TStatusBar; RichEdit1: TRichEdit; ApplicationEvents1: TApplicationEvents; procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean); procedure FormCreate(Sender: TObject); private { Private 宣言 } public revSelStart:integer; // 手動で追加する IdleCnt1,IdleCnt2:integer; // これらも手動で追加する end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean); var Line,CharNo:integer; begin inc(IdleCnt1); if revSelStart <> RichEdit1.SelStart then with RichEdit1 do begin revSelStart := SelStart; Line := SendMessage(Handle,EM_LINEFROMCHAR,SelStart,0); CharNo := SendMessage(Handle,EM_LINEINDEX,Line,0); Inc(IdleCnt2); StatusBar1.Panels[0].Text := Format(' %.4d 行 %.4d 列 OutIf: %d InIf: %d', [Line+1,SelStart-CharNo+1,IdleCnt1,IdleCnt2]); end; end; procedure TForm1.FormCreate(Sender: TObject); begin revSelStart := -1; end; これで、OutIf の回数が InIf の回数よりかなり多いことが分かるでしょう。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.