Einzelnen Beitrag anzeigen

NickelM

Registriert seit: 22. Jul 2007
Ort: Carlsberg
445 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Text in Richedit anklicken

  Alt 13. Jul 2009, 05:04
So also ich hab jetzt das was du willst mal mit einem normalen RichEdit versucht und habs hinbekommen das wenn die Mouse über dem Text ist er es anders darstellt
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(RichEdit1.Handle), Text1, Length(Text1), Test); //WinApi Funktion, welche die Höhe und die Breite des Textes ausgibt
TextHöhe := -RichEdit1.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.
RichEdit1.SelStart := 0;
RichEdit1.SelLength := Length(Text1);
RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style + [fsUnderline];}
end
else
begin
//und hier schreibste rein wie er normal aussehen soll.
//z.b.
{RichEdit1.SelStart := 0;
RichEdit1.SelLength := 4;
RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style - [fsUnderline];}

end;
Ich hoffe ich konnte dir helfen, hab mich schnell daran gesetzt , weil es mal eine kleine herausforderung für mich war dies rauszufinden. Ich hoffe es klappt.
Bei mir klappte es, als ich 2 Zeilen hatte und der Text in der ersten Zeile war. Und hatte den Code bei MouseMove drin.

Gruß NickelM
Nickel
"Lebe und denke nicht an morgen"
Zitat aus dem gleichnamigen Bollywoodfilm.
  Mit Zitat antworten Zitat