[BlueLeaf1336]> PROGRAM> Natural Born Junk>

TMemoの現在行・現在桁の取得

historyTOP

2002/11/13:作成
2003/07/20:RichEdit限定解除

memoTOP

TMemoを引数にとるが、TRichEditでも大丈夫。
動作確認していたオリジナルからエディタで修正したので大丈夫か?
usesにMessagesが必要(SendMessageを使用しているため)。

codeTOP

(*
    *******************************************************
    TMemoの現在行の取得
    *******************************************************
*)
function GetMemoCurrentLine(AMemo: TMemo): integer;
begin
    with AMemo do
        Result := SendMessage(Handle, EM_LINEFROMCHAR, SelStart, 0);
end;
(*
    *******************************************************
    TMemoの現在行の先頭からのバイト数取得
    *******************************************************
*)
function GetMemoCrrentCol(AMemo: TMemo): integer;
begin
    with AMemo do
        Result := SelStart
                - SendMessage(Handle,
                              EM_LINEINDEX,
                              GetMemoCurrentLine(AMemo),
                              0);
end;
(*
    *******************************************************
    テスト
    *******************************************************
*)
procedure TForm1.Button1Click(Sender: TObject);
begin
    StatusBar1.SimpleText := Format('Row%3.3d Col%3.3d',
                                    [GetMemoCurrentLine(RichEdit1),
                                     GetMemoCrrentCol(RichEdit1)]);
end;

EOFTOP