Einzelnen Beitrag anzeigen

Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Text in Richedit anklicken

  Alt 13. Jul 2009, 13:28
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.
  Mit Zitat antworten Zitat