|
||
解説: CaretPos プロパティを使うと、RichEdit や Memo などのクライアント領域でキャレット位置を知ることが出来ます。 キャレット位置からは、エディタなどでよく使われる、行列数が調べられます。 使用例: 今回は、RichEdit1 に文字を入力した時、文字数に応じて、行列数を表示させています。 コンポーネントは、 RichEdit, StatusBar を適当に配置します。 RichEdit1 の Align を alClient に変更しておいてください。 OnKeyUp にコードを記述します。 CaretPos プロパティで X 座標と Y 座標を取得しています。各々 0 から始まりますが、行列の関係で +1 しておきます。代入された値をまとめて、ステータスバーに表示しています。 行列は、バイト数でカウントさせています。使い方によっては、Microsoft Word のように文字数で表示した方が便利な場合もあります。時間のある方は、行桁(Word での表記)を表示するコードも考えてみてください。 //------------------------------------------------------------------- void __fastcall TForm1::RichEdit1KeyUp(TObject *Sender, WORD &Key, TShiftState Shift) { // 行 int row = RichEdit1->CaretPos.y + 1; // 列 int column = RichEdit1->CaretPos.x + 1; // 行列数を表示 StatusBar1->SimpleText = IntToStr(row) + ": " + IntToStr(column); } //------------------------------------------------------------------- |