TMemo控件中关于字符串选定的问题?在线等
xwxyh 2006-01-16 01:59:58 我想在TMemo控件中单击鼠标,查找鼠标单击位置是否在[和]之间,如果在则选中[和]之间的内容,于是写了以下代码(注:两个查找函数是正确的),可是问题出现了,如果TMemo控件中的内容是手动从键盘输入的,则能正确执行,如果是从别的TMemo控件中复制过来的,则不能正确执行,主要是选择的位置出现了随机偏差,何故?100分奉上,敬请高手解答!
procedure TForm1.TimeEditMemoClick(Sender: TObject);
var //测试中...
startPos,endPos,i:integer;
begin
if TimeEditMemo.Text='' then exit;
i:=TimeEditMemo.SelStart;
startPos:=FastPosBackNoCase(TimeEditMemo.Lines.Text,'[',Length(TimeEditMemo.Lines.Text),Length('['),TimeEditMemo.SelStart);
endPos:=FastPosNoCase(TimeEditMemo.Lines.Text,']',Length(TimeEditMemo.Lines.Text),Length(']'),i);
//showmessage(inttostr(startPos)+' '+inttostr(endPos));
TimeEditMemo.SelStart:=startPos-1;
TimeEditMemo.SelLength:=endPos-startPos+1;
//ShowMessage(inttostr(TimeEditMemo.CaretPos.Y));
//ShowMessage(inttostr(TimeEditMemo.CaretPos.X));
end;
从别的TMemo控件中复制代码如下:
procedure TForm1.RightToLeftButtonClick(Sender: TObject);
begin
TimeEditMemo.Lines.Clear;
TimeEditMemo.Lines.AddStrings(LyricMemo.Lines);
LyricMemo.Clear;
TimeEditMemo.SelStart:=0;
TimeEditMemo.SelLength:=0;
end;