TMemo/TDBMemo mit Links?

Rund um die LCL und andere Komponenten
Antworten
MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

TMemo/TDBMemo mit Links?

Beitrag von MmVisual »

Hallo,

gibt es für ein TMemo/TDBMemo eine Funktion, in der das Feld automatisch einen Link erkennt und dann z.B. den Internet Browser öffnet?

Im Angehängten Bild hatte ich mal was unter Delphi7/RX-Controls programmiert. Das TRxRichEdit erkennt automatisch einen Hyperlink sobald man ein "http://..." eingibt (oder ein "file:.." oder ein "mailto:..")

Wie kann ich sowas in ein TDBMemo / Lazarus bekommen?
Bzw. kann mir jemand einen Tipp geben wie ich das selbst progge?

Vielen Dank im Voraus.

Grüße Markus.
Dateianhänge
Bild1.png
Bild1.png (4.82 KiB) 1049 mal betrachtet
EleLa - Elektronik Lagerverwaltung - www.elela.de

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TMemo/TDBMemo mit Links?

Beitrag von pluto »

Das würde Theoretisch gehen. Ich habe mal diesen Tipp versucht nach Lazaurs zu portieren:
http://www.swissdelphicenter.ch/de/showcode.php?id=2150" onclick="window.open(this.href);return false;
leider ohne Erfolg. Weil die wm_paint(?) Botschaft, wird von der LCL anders oder jedenfalls nicht Richtig verarbeitet. Einige Parameter dort waren ungültig.
Du könntest es mit einem SynMemo versuchen. Dort gibt es zwar kein Automatischen Zeilenumbruch, aber dafür müsste es dort sehr viel leichter gehen.
MFG
Michael Springwald

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: TMemo/TDBMemo mit Links?

Beitrag von MmVisual »

Ja, das geht leider nicht, denn die WM-Messages sind nicht Betriebssystem unabhängig.
Und das TMemo bietet kein OnPaint Event, auf das man sich aufschalten könnte.

Ja, der TSynMemo hat ein OnPaint. Ich hab mal rein geschaut, aber irgendwie steige ich da auch noch nicht richtig durch.
EleLa - Elektronik Lagerverwaltung - www.elela.de

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: TMemo/TDBMemo mit Links?

Beitrag von MmVisual »

Vieleicht eine leichtere Frage:

Mit:
procedure TForm1.Memo1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
kann ich ja z.B. STRG+Maus einen Link einfach öffnen. Der Text muss ja nicht unbedingt farblich hinterlegt sein.

Wie bekomme ich aus X/Y die Cursorpos heraus?
Ich finde vom TMemo keine Passende Funktion.
EleLa - Elektronik Lagerverwaltung - www.elela.de

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: TMemo/TDBMemo mit Links?

Beitrag von MmVisual »

Ok, das Wort bekomme ich heraus:

Code: Alles auswählen

Function TForm1.GetSelWord: String;
Var s: String;
    i: Integer;
Begin
  i := memo1.SelStart;
  s := '';
  Result := '';
  Repeat
    Result := s + Result;
    s := Copy(memo1.Text, i, 1);
    Dec(i);
  until (s <= ' ') Or (i < 0);
  i := memo1.SelStart + 1;
  s := '';
  Repeat
    Result := Result + s;
    s := Copy(memo1.Text, i, 1);
    Inc(i);
  until (s <= ' ') Or (i < 0) Or (s = '');
end;
Ist natürlich "Unschön" aber eine Funktion "GetWordAt..." gibt es nicht
EleLa - Elektronik Lagerverwaltung - www.elela.de

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TMemo/TDBMemo mit Links?

Beitrag von pluto »

Doch, was müsste es geben. Schau dir mal die Public Methoden in TSynMemo an. Wenn du in der IDE Strg+Maustaste drückst, wird auch jedes Wort unterstrichen.
Du könntest dir, die entsprechende Unit anschauen(Lazarus ist ja OpenSoruce*G*)
MFG
Michael Springwald

Antworten