![]() |
RichEdit mit eigenen Urls
Hallo,
ich möchte gerne im RichEdit noch Wörter als URL definieren. Derzeit geht ja ![]() Wie kann ich nun das Richedit dazu bringen auch bei dem Wort mgmdoc:// ein Hyperlink daraus zu machen und das entsprechend beim OnClick aufgerufen wird.
Delphi-Quellcode:
und
procedure TForm1.InitRichEditURLDetection(RE: TRichEdit);
var mask: Word; begin mask := SendMessage(RE.Handle, EM_GETEVENTMASK, 0, 0); SendMessage(RE.Handle, EM_SETEVENTMASK, 0, mask or ENM_LINK); SendMessage(RE.Handle, EM_AUTOURLDETECT, Integer(True), 0); end; procedure TForm1.FormCreate(Sender: TObject); var s: string; begin InitRichEditURLDetection(RichEdit1); s:='TEST' + #13#10 + 'http://www.delphi.abc.com.' + #13#10 + 'Send an email to your Guide: mailto:delphi@abc.com'; RichEdit1.Text := s; end;
Delphi-Quellcode:
procedure TForm1.WndProc(var Msg: TMessage);
var p: TENLink; sURL: string; CE : TRichEdit; begin if (Msg.Msg = WM_NOTIFY) then begin if (PNMHDR(Msg.lParam).code = EN_LINK) then begin p := TENLink(Pointer(TWMNotify(Msg).NMHdr)^); if (p.Msg = WM_LBUTTONDOWN) then begin try CE := TRichEdit(Form1.ActiveControl); SendMessage(CE.Handle, EM_EXSETSEL, 0, Longint(@(p.chrg))); sURL := CE.SelText; ShellExecute(Handle, 'open', PChar(sURL), 0, 0, SW_SHOWNORMAL); except end; end; end; end; inherited; end; (* TForm1.WndProc *) |
AW: RichEdit mit eigenen Urls
Die Tatsache, daß die URLs ja irgendwo anders gespeichert werden müssen, wenn sie nicht mehr im Klartext in der Stringliste Lines auftauchen dürfen, wirft die Frage nach dem Wo auf. Die Antwort lautet daher: Du mußt dir eine eigene RichEdit-Komponente ableiten und diese um die gewünschte Funktion ergänzen.
Die Frage nach dem Wie erfordert allerdings komplexere Überlegungen. Führst du ein weiteres Steuerzeichen ein, um Beginn und Ende einer URL zu kennzeichnen, machst du dir's einfach. Du nummerierst die URLs durch und verweist mit diesm Index auf einen internen Record, der die URLs enthält. Dazu mußt du dann aber auch mindestens eine InputBox spendieren, damit der Anwender die URL dort eingeben kann. Zusätzlich wäre wie in Word oder in HTML-Browsern ein Hint sinnvoll, der die verborgene URL anzeigt. So oder ähnlich würde ich die Sache anzupacken versuchen. Die Sache mit dem zusätzlichen Steuerzeichen hat nur einen Haken: Die damit bearbeiteten Texte sind nicht mehr kompatibel mit der ![]() |
AW: RichEdit mit eigenen Urls
Hallo,
vielleicht habe ich mich hier falsch ausgedrückt. Was will ich? Ein Memo bzw. DBMemo das auch Hyperlinks darstellen kann und eben auch selbst definierte Links. Ich brauche keine Formatierung. |
AW: RichEdit mit eigenen Urls
Zitat:
Des weiteren brauchst Du eine Definition "was ist ein link im Text" und ggf. die Definition einer Aktion wenn ein "Link" angeklickt wird. Ein TRichedit/TMemo ist zunächst einmal für die Darstellung und Bearbeitung von Text zuständig, was Du möchtest geht doch etwas darüber hinaus. U.U. könnte Dir ![]() Gruß K-H |
AW: RichEdit mit eigenen Urls
Zitat:
Zitat:
Soweit alles klar? Wie ich oben bereits ausführlich dargestellt habe, mußt du dir überlegen, wo die URL gespeichert werden soll. Die beiden Möglichkeiten, die mir dazu einfielen, habe ich dir bereits aufgezeigt. Programmieren mußt du das natürlich selber – außer du erteilst jemandem einen Auftrag (z.B. mir gegen Vorkasse) oder erwirbst eine der kommerziellen Komponenten (was ich an deiner Stelle vorziehen würde). |
AW: RichEdit mit eigenen Urls
Mal 'ne dumme Frage: Was ist das eigentlich "mgmdoc://"?
Was nützt Dir ein Link, der so beginnt - man braucht auch einen Browser, der damit was anfangen kann. Eigene URLs kann man in der Registry eintragen:
Code:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\URL\Prefixes] "mosaic"="http://" "www"="http://" "home"="http://" "ftp"="ftp://" |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz