Ok das funktioniert schon ganz gut hab das noch ein wenig abgeändert da es sonst am flackern ist:
Delphi-Quellcode:
var Test : TSize;
Rect1 : TRect;
TextHöhe : Integer;
Zeile : Integer;
Text1 :
String;
begin
Zeile := 1;
//Zeile in der der Text steht (Index der Linesliste +1 des RichEdits)
Text1 := '
Hi';
//Text, der angeklickt werden soll
GetTextExtentPoint32(GetDC(JvRichEdit1.Handle), Text1, Length(Text1), Test);
//WinApi Funktion, welche die Höhe und die Breite des Textes ausgibt
TextHöhe := -JvRichEdit1.Font.Height;
//Höhe der Schrift allgemein
Rect1 := Rect(0,(Zeile-1)*TextHöhe,Test.cx,Zeile*TextHöhe + Test.cy);
//Bereich festlegen, wo der Text ist, dabei sit vorausgesetz das der Text immer vorne steht
if (y >= Rect1.Top)
and (y+TextHöhe <= Rect1.Bottom)
and (x <= Rect1.Right)
then //Überprüfung ob die Mouse in Rect (speicher am besten x,y von MouseMove und setze
//die Variable für X und Y ein, wenn du die Anweisung hier in DbClick einfügst
begin
//hier der Code, wenn die Mouse auf dem Text ist.
//z.b.
JvRichEdit1.SelStart := 0;
JvRichEdit1.SelLength := Length(Text1);
if not (fsUnderline
in JvRichEdit1.SelAttributes.Style)
then
begin
JvRichEdit1.SelAttributes.Style := JvRichEdit1.SelAttributes.Style + [fsUnderline];
end;
JvRichEdit1.Cursor:=crHandpoint;
end
else
begin
//und hier schreibste rein wie er normal aussehen soll.
//z.b.
JvRichEdit1.SelStart := 0;
JvRichEdit1.SelLength := Length(Text1);
if fsUnderline
in JvRichEdit1.SelAttributes.Style
then
begin
JvRichEdit1.SelAttributes.Style := JvRichEdit1.SelAttributes.Style - [fsUnderline];
JvRichEdit1.Cursor:=crDefault;
end;
end;
end;
Jetzt muss ich nur rausfinden wie ich die namen einmalig kennzeichnen kann.
Ich habe mir gedacht, dass ich so ne art dummyzeichen vor und hinter dem namen setzte.
Ungefähr so: #13+Username+#13
Nur was kann ich da für zeichen nehmen, da #13 ja ein zeilenumbruch macht kann ich das nicht nehmen.
Und noch ein Problem ich müsste jetzt noch verhinden, dass man den Text markieren kann, da es sonst zu fehlern kommt.