2016-11-27 39 views
0

我有一個TjvRichedit控件,其中包含一些表格,其中一些行/單元格填充了文本。 我想選擇一些完整的行(例如firstLine和firstLine + 1行)並將它們複製到剪貼板(或流)。我用波紋管代碼:如何使用Delphi(Xe10)在TRichedit中選擇某些表格行

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

,但它從firstLine執行firstLine中+ 3選擇(甚至選擇從下一個表中的行!)。 如果我減少長度(例如,SelLength:= 2),它會選擇兩行! 我該如何做到我想要的東西?

+0

** firstLine和firstLine + 1)**是什麼意思?你的意思是第一行+第二行的第一個字符? – Sami

+0

我在Delphi 7和Delphi 10西雅圖上試用它並正常工作。 – Sami

+0

你可以看到我的更新和嘗試。 – Sami

回答

0

如果選擇在tablerow的開始時,你必須排除前兩個字符

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 

在多個行情況相同的(由兩個降低整個長度僅一次)

+0

這總是從第一行中選擇兩個第一個字符。 – Sami

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]); 
相關問題