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;
//另一种方法
定义变量iLine: Integer;
{ 使用em_LineFromChar消息 }
iLine := Memo1.Perform(em_LineFromChar, $FFFF, 0);
{ 第一行为0 }
messageDlg('行号: ' + IntToStr(iLine), mtInformation,[mbOK], 0 ) ;
此文章由 http://www.ositren.com 收集整理 ,地址为:
http://www.ositren.com/htmls/68163.html