richedit.SelStart:=5;
richedit.SelLength:=0;
richedit.SetFocus;
richedit.SelLength:=0;
richedit.SetFocus;
解决方案 »
- one or more lines were too long and have been truncated
- ClientDataSet数据集字段小数位数问题??
- 发现李维大师的<VCL架构剖析>的一个可笑的问题!!!
- 高手讲课拿分:移动无标题窗体代码
- cxgrid中关于进度条的一个问题
- 谁知道EDIT的ENABLED=FALSE如何让它显示HINT
- dll文件操作
- 谁有FastReport V2.47的安装码,有高分送!!!!!!
- 关于MediaPlayer中的trackbar滑块移动的问题,help me
- 100分求教关于OCX嵌入网页中自动下载的问题
- 不能创建WebBrowser组件?
- delphi初学者问题,TDateTimePicker能否实现只有年月,没有日期?如何才能实现?
row,col为指定的行,列
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;
哎,真是的。自己修改一下就可以了........题目有没有说清楚,把Trichedit改成TRxRichEdit不就行了吗?
我看你这个样子,别人也没有办法帮你了。
当然还有更酷的方法,不过好麻烦好麻烦:)