0

我有一个 TjvRichedit 控件,其中包含一个表格,其中一些行/单元格填充了文本。我想选择一些整行(例如行 firstLine 和 firstLine+1)并将它们复制到剪贴板(或流)。我使用下面的代码:

SelStart := Perform(EM_LINEINDEX, firstLine, 0);
SelLength:= length(lines[firstLine]) + length(lines[firstLine+1]);
CopyToClipboard;

但它从 firstLine 到 firstLine+3 选择(甚至从下一个表中选择行!)。如果我减少长度(例如 SelLength:= 2),它会选择两行!请问我该怎么做我想要的?

4

2 回答 2

1

要选择第一个Line并将所选文本复制到剪贴板:

RichEdit1.SelStart:=0;
RichEdit1.SelLength:=length(RichEdit1.Lines.[0]);
RichEdit1.CopyToClipboard;

要从第二个中选择第一个Line+ 第一个字符Line并将所选文本复制到剪贴板:

RichEdit1.SelStart:=0;
RichEdit1.SelLength:=length(RichEdit1.Lines[0])+2;
RichEdit1.CopyToClipboard;

要选择第二个Line

RichEdit1.SelStart:=length(RichEdit1.Lines[0])+1;
RichEdit1.SelLength:=length(RichEdit1.Lines[1]);
于 2016-11-27T20:25:27.557 回答
0

如果选择位于表格行的开头,则必须排除前两个字符

RichEdit1.SelStart := Perform(EM_LINEINDEX, LineNo, 0) + 2; // start two chars beyond the linestart
RichEdit1.SelLength:= Perform(EM_LINELENGTH, RichEdit1.SelStart,0) - 2; // decrease the whole length by these two chars

多于一行时相同(仅将整个长度减少一次)

于 2016-11-29T23:22:40.197 回答