Hi,
also ich weiß jetzt wo mein Fehler liegt!
hier noch mal der Quellcode:
Delphi-Quellcode:
neuStart := 22;
for j := 0 to RichEdit1.Lines.Count-1 do
begin
for i := 0 to spaltenZahl-1 do
begin
if spaltenInhalt.teltype[i] = StrToInt(copy(Trim(RichEdit1.Lines.Strings[j]),23,2)) then
begin
RichEdit1.SelStart := neuStart;
RichEdit1.SelLength := spaltenInhalt.laenge[i]; //Length(RichEdit1.Lines.Strings[OldLine-1])+2;
if myColor = clBlack then
begin
myColor := clLime;
end
else
begin
myColor := clBlack;
end;
RichEdit1.SelAttributes.Color := myColor;
if i < spaltenZahl-1 then
begin
RichEdit1.SelLength := 0;
neuStart := neuStart + spaltenInhalt.laenge[i];
end;
end;
end;
neuStart := (Length(RichEdit1.Lines.Strings[j])+2)+22;
end;
In Dieser Zeile ist der Fehler:
neuStart := (Length(RichEdit1.Lines.Strings[j])+2)+22;
Ich nehme hier die Länge der Spalte +2 (wegen Zeilenumbruch) und noch einmal +22 um an die Stelle ab der eingefärbt werden soll zu kommen. Was ich aber eigentlich machen müsste wäre: neuStart = neuStart + ((der Rest der Zeile ab neustart)+2)+22
Der Rest des Codes scheint zu stimmen
Edit: Also ich habs geschafft, es scheint jetzt alles richtig zu funktionieren
Ich hab einfach noch einen Merker eingebaut, der mir die Länge der einzelnen eingefärbten Strings zusammenzählt und dann später von der Gesamtlänge der Zeile abzieht, damit ich dann in der Nächsten Zeile über die Variable neuStart wieder direkt an die Stelle komme, ab der gehighlightet werden soll
Hier noch der richtige Code:
Delphi-Quellcode:
neuStart := 22;
for j := 0 to RichEdit1.Lines.Count-1 do
begin
LenMerker := 0;
for i := 0 to spaltenZahl-1 do
begin
if spaltenInhalt.teltype[i] = StrToInt(copy(Trim(RichEdit1.Lines.Strings[j]),23,2)) then
begin
RichEdit1.SelStart := neuStart;
RichEdit1.SelLength := spaltenInhalt.laenge[i];
LenMerker := LenMerker + spaltenInhalt.laenge[i];
if myColor = clBlack then
begin
myColor := clLime;
end
else
begin
myColor := clBlack;
end;
RichEdit1.SelAttributes.Color := myColor;
if i < spaltenZahl-1 then
begin
RichEdit1.SelLength := 0;
neuStart := neuStart + spaltenInhalt.laenge[i];
end;
end;
end;
neuStart := neuStart + ((Length(RichEdit1.Lines.Strings[j])-LenMerker)+2);
end;
Danke noch mal allen die mir geholfen haben
Gruß
AnyKey