Hallo Orhan,
das Zeichen rechts neben dem Caret rot zu färben ist kein Problem:
Delphi-Quellcode:
function TDemoForm.MoveCaret(e: TRichEdit; forth: Boolean): Boolean;
var
iPos, iDelta: Integer;
begin
with e do
begin
iDelta := Ord(forth) shl 1 - 1;
iPos := SelStart + iDelta;
// das Zeichen rechts normal (schwarz) anmalen
SelLength := 1;
SelAttributes.Color := Font.Color;
SelLength := 0;
SelStart := iPos;
// Sonderbehandlung von Multiline Edit Controls
// nur bei forth = True notwendig
if iPos <> SelStart then
begin
iPos := SelStart + iDelta shl 1;
SelStart := iPos;
end;
// das Zeichen rechts rot anmalen
SelLength := 1;
SelAttributes.Color := clRed;
SelLength := 0;
if forth
then Result := iPos < Length(Text)
else Result := iPos > 0;
self.Caption := Format('caret pos %d', [iPos]);
end;
end;
Der gewünschte Zusammenhang mit der Sichtbarkeit des Carets ist mir nicht ganz klar. Da gibt es auch sicherlich ein paar Randbedingungen, aber die Steuerung der Schriftfarbe geschieht grundsätzlich nach folgendem Muster:
Delphi-Quellcode:
with RichEdit do
begin
SelStart := 0; // Cursor vor das erste Zeichen setzen
SelLength := Length(Lines.Text); // Anzahl der Zeichen festlegen
SelAttributes.Color := Font.Color; // Farbe festlegen
SelLength := 0; // eventuell Markierung aufheben
end;
Freundliche Grüße
marabu