Grundsatz
Mein TRichEdit enthält unter anderem Links, diese sind farblich hervorgehoben (cl_Link). Durch einen Klick mit Strg (Ctrl) wird der Link ausgeführt.
Ziel
Nun möchte ich, dass sich der Cursor in crHandPoint verwandelt, sobald die Maus auf einem solchen Link steht. Dazu verwende ich OnMouseMove.
Jetzige Prozedur
Code:
procedure RtfShowLink (x, y : integer; Rtf : TRichEdit);
var
CharIndex,
ss : integer;
Pt : TPoint;
begin
with Rtf do begin
Pt := Point(X, Y);
CharIndex := Perform(Messages.EM_CHARFROMPOS, 0, @Pt);
if CharIndex >= 0 then begin
ss := SelStart;
SelStart := CharIndex;
if SelAttributes.Color = cl_Link then Cursor := crHandpoint
else Cursor := crArrow;
SelStart := ss;
end;
end;
end;
Problem
Das ganze Feld flackert unerträglich bei jeder Mausbewegung.
Frage
Daher die Frage, ob ich die Attribute von Textstellen auch ohne SelStart, SelAttributes abfragen kann. So in etwa wie RichEdit.TextAttributes[index].