如何控制Memo控件选中某一行?(50分)

  • 主题发起人 主题发起人 sy0116
  • 开始时间 开始时间
S

sy0116

Unregistered / Unconfirmed
GUEST, unregistred user!
我想编程实现当双击Memo3的某一行时选中Memo1控件中的某一行,Memo3中的格式是这样的:
XXX[ABCD]QWERT
上面的XXX是数字,代表要选中的memo1中的行号,我现在是用以下代码,发现没用:
procedure TForm1.Memo3DblClick(Sender: TObject);
var
CurrentLine:string;
Line:Integer;
begin
CurrentLine := Memo3.Lines[Memo3.CaretPos.Y];
Line := StrToInt(Copy(CurrentLine,0,Pos('[',CurrentLine) - 1));//取得XXX所对应的数字,即行号
Memo1.SelStart := Pos(Memo1.Lines[Line],Memo1.Lines.Text) - 1;
Memo1.SelLength := Length(Memo1.Lines[Line]);
//SendMessage(Memo1.Handle,EM_SETSEL,Memo1.SelStart,Memo1.SelLength + Memo1.SelStart);
//ShowMessage(IntToStr(Memo1.SelLength));
end;
 
Line := StrToInt(Copy(CurrentLine,0,Pos('[',CurrentLine) - 1));//
这里就有问题Copy字符串索引从1开始。
Memo1.SelStart := Pos(Memo1.Lines[Line],Memo1.Lines.Text) - 1;
这里有必要减去一吗?
 
Copy从哪里开始并不重要,我已确认Copy到的数字是正确的,SelStart不减一也是一样的效果,Memo1仍然是一片空白,没有选中任何文字
 
多人接受答案了。
 

Similar threads

后退
顶部