Thema: Delphi Textcursor

Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: Textcursor

  Alt 10. Jul 2006, 14:26
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
  Mit Zitat antworten Zitat