Post by Manfred PolakIch gleich nochmal. Kann man in einem RichEdit URLs als anklickbare
Links unterbringen?
Hi,
ja, kann man. Du musst allerdings genau wissen, wie Dein Link im
RichEdit aussieht. Dann besteht eine Möglichkeit darin, dass Du mit
MouseMove auf dem RichtEdit prüfst, ob die aktuelle Mausposition auf
solch einem Link steht. Hierzu musst Du den unter der Maus liegenden
Text ermitteln, wenn es sich um eine URL handelt diese in eine globale
Variable schreiben und selbige im MouseDown-Event auswerten.
Ungefähr so (memInfo = TRichEdit):
procedure TFormular.memInfoMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
var
Point: TPoint;
Wert: LongInt;
LineNumber: Integer;
LinePos: Integer;
Line: string;
begin
// Get absolute position of character beneath mouse
Point.x := X;
Point.y := Y;
Wert := memInfo.Perform(EM_CHARFROMPOS, 0, LParam(@Point));
if Wert >= 0 then
begin
// Get line number
LineNumber := memInfo.Perform(EM_LINEFROMCHAR, Wert, 0);
// Get line position
LinePos := Wert - memInfo.Perform(EM_LINEINDEX, LineNumber, 0);
// Get line
Line := memInfo.Lines[LineNumber];
//self.DebugMsg := Format('Zeile=%d, Spalte=%d, Text=%s',
// [LineNumber, LinePos, Line]);
//
// _url = string global
_url := Self.GetURL(line);
if url = '' then
begin
memInfo.Cursor := crDefault;
end
else
begin
memInfo.Cursor := crHandPoint;
end;
end;
end;
procedure TFormular.memInfoMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if (Button = mbLeft) and _url <> '' then
begin
ShellExecute(_url);
end;
end;
HTH
Viele Grüße
Franz