Delphi中有控件MEMO,当使用应控件输入内容或编辑时,如何确定光标当前的位置呢?这时就可以调用WINDOWS API中的EM_LINEFROMCHAR和EM_LINEINDEX消息来确定MEMO控件中光标的当前行和列,具体调用方法的过程如下:procedure TForm1.Button1Click(Sender: TObject);
var
LineNum:longint;
CharsBeforeLine:longint;
begin 
LineNum := SendMessage(Memo1.Handle,EM_LINEFROMCHAR,
            Memo1.SelStart,0);
CharsBeforeLine:=SendMessage(Memo1.Handle,EM_LINEINDEX,
            LineNum,0);
Label1.Caption:='Line: '+IntToStr(LineNum + 1);
Label2.Caption:='Position: '+IntToStr((Memo1.SelStart -
                 CharsBeforeLine)+1);
end;

解决方案 »

  1.   

    to sundayboys(sunboy):
    我倒是知道这个API的用法,Memo.CaretPos封装的就是上面你讲的API函数。但我的意思是如何才能动态得到插入符的位置。我的代码放到Button1Click里得到的同样是正确的值,但放到Memo的OnKeyDown里得到的值是不正确的(你的代码也是)。我想知道在哪个事件中使用这些函数或属性才能得到正确的显示值.
    解决后还可以多加分。