![]() |
Richedit kann URL's nicht mehr erkennen - wie doch wieder?
Hallo,
ich benutze ein RichEdit für die Anzeige von programmintern gehaltenen Hilfe-Texten. Wenn ich mit
Delphi-Quellcode:
das RichEdit für URL'S sensibilisiere, wie hier schon gepostet, dann funktioniert das schon nicht mehr, wenn ich Wordwrap (zur Laufzeit danach) toggle.
procedure TForm1.FormCreate(Sender: TObject);
begin with RichEdit1 do begin mask := SendMessage(Handle, EM_GETEVENTMASK, 0, 0); SendMessage(Handle, EM_SETEVENTMASK, 0, mask or ENM_LINK); SendMessage(Handle, EM_AUTOURLDETECT, Longint(True), 0); end; end;
Delphi-Quellcode:
Kennt jemand eine Gegenmaßnahme?
procedure TForm1.FormCreate(Sender: TObject);
begin with RichEdit1 do begin mask := SendMessage(Handle, EM_GETEVENTMASK, 0, 0); SendMessage(Handle, EM_SETEVENTMASK, 0, mask or ENM_LINK); SendMessage(Handle, EM_AUTOURLDETECT, Longint(True), 0); {hier Laden eines Richedit-Texts, z. B. aus Ressource} WordWrap := not WordWrap; {und schon gehen die Links nicht mehr, auch die Farbe wird ein anderes Blau} end; end; |
AW: Richedit kann URL's nicht mehr erkennen - wie doch wieder?
Da TRUE für diesen Parameter einfach falsch ist, würde ich mich nicht wundern, wenn es nicht funktioniert. :roll:
![]() Und wenn das Ändern von WordWrap an den Settings des RichEdit rumspielt, dann könnte es auch passieren, dass deine Einstellungen verloren gehen, denn das Ändern von WordWrap löst ein CM_RECREATEWND aus, welches das WinControl löscht und es komplett neu erstellt, natürlich ohne deine vorherigen Änderungen daran. :stupid: |
AW: Richedit kann URL's nicht mehr erkennen - wie doch wieder?
Danke, himitsu, für Deine Antwort.:)
Hier verstehe ich nicht ganz: Zitat:
Wahrscheinlich hast Du aber trotzdem recht, dass man die zur Laufzeit nicht ändern sollte... Ich werde als "Lösung" WordWrap zur Entwurfszeit auf True stellen und seine Umschaltung dem User einfach nicht mehr zur Verfügung stellen. |
AW: Richedit kann URL's nicht mehr erkennen - wie doch wieder?
Er meint die Nachricht EM_AUTOURLDETECT und deren zweiten Parameter. (Er hat doch extra einen Link gepostet.) Wie kommst du darauf, dass da ein nach LongInt gecaster True Boolenwert übergeben werden muss? Da kommt irgendeine Ganzzahl raus.
Zitat:
|
AW: Richedit kann URL's nicht mehr erkennen - wie doch wieder?
Bei sowas am Besten die Komponente ableiten und CreateWnd oder CreateWindowHandle überschreiben und dort die Einstellungen wieder herstellen einstellen, wenn das interne Windows-Control (neu) erstellt wird.
|
AW: Richedit kann URL's nicht mehr erkennen - wie doch wieder?
@Luckie:
Ich bin nicht drauf gekommen; ich war faul und habe nur kopiert... Ich habe diese drei Zeilen an mindestens 2 Stellen hier im Forum genauso gefunden, u. a. da: ![]() Vermutlich stammen alle von den Schweizern: ![]() ![]() Der Gedankengang des Urschreibers war meiner Ansicht nach so: 1. Mit #define AURL_ENABLEURL 1 bedeutet
3. Also schreibe ich "Integer(True)", wenn ich einschalten will. Weil ich wirklich gerne noch was hinzulerne (s. u., nur mit dem Hängebleiben hapert's oft), habe ich die Zeile umgeschrieben:
Delphi-Quellcode:
,
SendMessage(Handle, EM_AUTOURLDETECT, AURL_ENABLEURL, 0);
und weiter oben eingefügt
Delphi-Quellcode:
Wie zu erwarten war, hat sich am Verhalten nichts geändert.
const AURL_ENABLEURL = 1;
@himitsu: Zitat:
Ich bleibe dabei: Der Nutzer darf einfach WordWrap nicht mehr toggeln und ich habe meine Ruhe... Aber danke an Euch alle, dass ihr mir einen Teil Eurer Zeit gewidmet habt (und das ist nicht ironisch gemeint)! |
AW: Richedit kann URL's nicht mehr erkennen - wie doch wieder?
Man kann wirklich immer noch dazulernen :-D:-D:-D (siehe unten) und ich freu' mich drüber ...
Es hat mich immer wieder mal gewurmt, die An- bzw- Abschaltung der Wordwrap-Funktion wegen der URL-Fähigkeit meinen Programmnutzern nicht mehr zur Verfügung stellen zu können. Deshalb habe ich nochmal das WWW mit allen möglichen Fragestellungen abgesucht - und trara - hiermit ist es möglich (damit ihr nicht solange suchen müsst wie ich) und die URL-Links bleiben dabei aktiv:
Delphi-Quellcode:
Einschränkung: Ich habe es nur mit Delphi5|6 testen können; mehr kann ich mir bei meiner "brotlosen Kunst" leider nicht leisten.
MyRichEdit: TRichEdit;
MyWordWrap: TAction; ... SendMessage(MyRichEd.Handle, EM_SETTARGETDEVICE, 0, Ord(not MyWordWrap.Checked)) Schöne Ostern Euch allen... |
AW: Richedit kann URL's nicht mehr erkennen - wie doch wieder?
Einziges Problemchen, was es mit neueren Delphis geben könnte.
Vor ein paar Jahren wurde in Delphi auf eine aktuellere Version des RichEdit umgestellt, womit sich einiges an der API/Komponente im Windows ändert. brotlos: ![]() |
AW: Richedit kann URL's nicht mehr erkennen - wie doch wieder?
@himitsu:
Recht hast Du, wie wohl fast immer - aber genau deshalb steht die Bemerkung ja drunter! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:00 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