Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   FreePascal Richmemo Textposition einer Zeile ermitteln. (https://www.delphipraxis.net/197030-richmemo-textposition-einer-zeile-ermitteln.html)

Delphi-Delphin 12. Jul 2018 16:07


Richmemo Textposition einer Zeile ermitteln.
 
Wie ist es möglich bei einem Richmemo (oder Memo allgemein) die Posistion zu finden, an der eine über den Index bekannte Zeile (Lines[i]) beginnt?

Ich habe möchte bestimmte Zeilen mit SetRangeColor einfärben, jedoch wird dafür die Position im Text benötigt.

Delphi-Quellcode:
procedure SetRangeColor(TextStart, TextLength: Integer; FontColor: TColor);


Ich habe es mit folgendem versucht, jedoch gibt es dort Probleme bei identischen Zeilen, wo immer die Position der ersten passenden Zeile zurückgegeben wird:
Delphi-Quellcode:
function RichMemoLineToTextPos(RichMemo: TRichMemo; Line: Int64): Int64;
begin
  result := pos(RichMemo.Lines[Line],RichMemo.Text)-1;    
end;

himitsu 12. Jul 2018 16:25

AW: Richmemo Textposition einer Zeile ermitteln.
 
EM_LINEINDEX / EM_LINEFROMCHAR https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx


Über RichMemo.Text und RichMemo.Lines.Text darfst du niemals etwas suchen, denn LineBreak im RichEditControl ist #13,
aber Delphi konvertiert das zu sLineBreak (#13#10), womit die Char-Indize nicht mehr stimmen. (z.B. auch beim SelStart)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz