设置RichEdit中光标位置

字体大小: 中小 标准 ->行高大小: 标准
   
procedure SetCaret(RTF: TRichEdit; var row, col: word);

var

i,iStopLine,iSelStart:integer;

Strings:TStrings;

begin

if (RTF=nil) then exit;

Strings:=RTF.Lines;

if Row=0 then Row:=1;

if Col=0 then Col:=1;

//到第Row列,Col行共几个字元

iStopLine:=Row-1;

iSelStart:=0;

for i:=0 to Strings.Count-1 do

begin

if i=iStopLine then

begin

if Length(Strings[i])>Col then

Inc(iSelStart,Col)

else

Inc(iSelStart,Length(Strings[i])+2);

Break;

end;

Inc(iSelStart,Length(Strings[i])+2);

end;

if iSelStart>0 then Dec(iSelStart);

//以设定标记的方式指定游标位置

RTF.SelStart :=iSelStart;// + Length(RTF.Lines[i])+2;

//再次侦测游标位置

Row:=SendMessage(RTF.Handle,EM_LINEFROMCHAR,RTF.SelStart,0);

Col:=RTF.SelStart-SendMessage(RTF.Handle,EM_LINEINDEX,Row,0);

//卷到游标所在位置

SendMessage(RTF.Handle,EM_SCROLLCARET,0,0);

end;
 
 

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/68383.html