Hallo,
Zitat von
Lannes:
PseudoCode:
Code:
Zeile 1 -> SelStart := 9
Zeile 2 -> SelStart := SelStart + Länge Zeile 1
Zeile 3 -> SelStart := SelStart + Länge Zeile 2
ok, damit Du weiter kommst, den Pseudocode umgesetzt:
Delphi-Quellcode:
var z, Offset, Count, LineLength: Integer;
begin
Offset:= 5;
//kommt später aus XML
Count := 2;
//kommt später aus XML
LineLength := 0;
//initialisieren
//Offset-1 => Index 0 ist SelStart-Index für erstes Zeichen
RichEdit.SelStart := Offset-1;
//initialisieren
for z := 0
to RichEdit.Lines.Count-1
do
begin
RichEdit.SelStart := RichEdit1.SelStart + LineLength;
RichEdit.SelLength := Count;
RichEdit.SelAttributes.Color := clRed;
LineLength := Length(RichEdit.Lines[z]) +2;
//+2 = Zeilenumbruch berücksichtigen
end;
Erklärung: Selstart wird immer um die Länge der letzten Zeile weitergeschoben.
Der Code funktioniert natürlich nur zur Einfärbung eines Teilbereichs jeder Zeile,
die Erweiterung auf mehrere Teilbereiche überlass ich Dir.
Als auch die berücksichtigung von Randbedingungen, als da wären:
-leere Zeilen im RichEdit
-Zeilen die kürzer als Offset + Count sind
- ...