繁体   English   中英

如何使用Delphi(Xe10)在TRichedit中选择某些表行

[英]How to select certain table rows in TRichedit with Delphi (Xe10)

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

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

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

要选择第一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]);

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

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

多于一行的情况相同(仅将全长减一两)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM