AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Richedit kann URL's nicht mehr erkennen - wie doch wieder?
Thema durchsuchen
Ansicht
Themen-Optionen

Richedit kann URL's nicht mehr erkennen - wie doch wieder?

Ein Thema von MessOldie · begonnen am 5. Mär 2016 · letzter Beitrag vom 15. Apr 2017
Antwort Antwort
Benutzerbild von MessOldie
MessOldie

Registriert seit: 1. Apr 2009
Ort: Reinsdorf OT Friedrichsgrün
12 Beiträge
 
Delphi 6 Personal
 
#1

Richedit kann URL's nicht mehr erkennen - wie doch wieder?

  Alt 5. Mär 2016, 11:28
Hallo,
ich benutze ein RichEdit für die Anzeige von programmintern gehaltenen Hilfe-Texten.
Wenn ich mit
Delphi-Quellcode:
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;
das RichEdit für URL'S sensibilisiere, wie hier schon gepostet, dann funktioniert das schon nicht mehr, wenn ich Wordwrap (zur Laufzeit danach) toggle.
Delphi-Quellcode:
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;
Kennt jemand eine Gegenmaßnahme?
Gottfried Pilz
Man kann immer noch dazulernen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.140 Beiträge
 
Delphi 12 Athens
 
#2

AW: Richedit kann URL's nicht mehr erkennen - wie doch wieder?

  Alt 5. Mär 2016, 20:15
Da TRUE für diesen Parameter einfach falsch ist, würde ich mich nicht wundern, wenn es nicht funktioniert.
https://msdn.microsoft.com/de-de/lib.../bb787991.aspx

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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 5. Mär 2016 um 20:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von MessOldie
MessOldie

Registriert seit: 1. Apr 2009
Ort: Reinsdorf OT Friedrichsgrün
12 Beiträge
 
Delphi 6 Personal
 
#3

AW: Richedit kann URL's nicht mehr erkennen - wie doch wieder?

  Alt 6. Mär 2016, 11:57
Danke, himitsu, für Deine Antwort.
Hier verstehe ich nicht ganz:
Da TRUE für diesen Parameter einfach falsch ist, würde ich mich nicht wundern, wenn es nicht funktioniert.
Unter Delphi5-Professional | Delphi6-Personal (mehr habe ich als "Amateur" nicht) ist WordWrap eine ganz normale property, so wie WantReturns und WantTabs.
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.
Gottfried Pilz
Man kann immer noch dazulernen
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: Richedit kann URL's nicht mehr erkennen - wie doch wieder?

  Alt 6. Mär 2016, 12:09
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:
lParam

This parameter determines the URL schemes recognized if AURL_ENABLEURL is active. If lParam is NULL, the default scheme name list is used (see Remarks). Alternatively, lParam can point to a null-terminated string consisting of up to 50 colon-terminated scheme names that supersede the default scheme name list. For example, the string could be "news:http:ftp:telnet:". The scheme name syntax is defined in the Uniform Resource Identifiers (URI): Generic Syntax document on The Internet Engineering Task Force (IETF) website. Specifically, a scheme name can contain up to 13 characters (including the colon), must start with an ASCII alphabetic, and can be followed by a mixture of ASCII alphabetics, digits, and the three punctuation characters: ".", "+", and "-". The string type can be either char* or WCHAR*; the rich edit control automatically detects the type.
Michael
Ein Teil meines Codes würde euch verunsichern.

Geändert von Luckie ( 6. Mär 2016 um 12:11 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.140 Beiträge
 
Delphi 12 Athens
 
#5

AW: Richedit kann URL's nicht mehr erkennen - wie doch wieder?

  Alt 7. Mär 2016, 10:07
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von MessOldie
MessOldie

Registriert seit: 1. Apr 2009
Ort: Reinsdorf OT Friedrichsgrün
12 Beiträge
 
Delphi 6 Personal
 
#6

AW: Richedit kann URL's nicht mehr erkennen - wie doch wieder?

  Alt 7. Mär 2016, 11:15
@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:
www.delphipraxis.net/186798-richedit-mit-eigenen-urls
Vermutlich stammen alle von den Schweizern:
http://www.swissdelphicenter.ch/de/showcode.php?id=1505
http://www.swissdelphicenter.ch/de/showcode.php?id=1652
Der Gedankengang des Urschreibers war meiner Ansicht nach so:
1. Mit #define AURL_ENABLEURL 1 bedeutet
  • AURL_ENABLEURL = "Einschalten" und
  • 0 = "Auschalten".
2. Dann ist das eine Ja-Nein-Entscheidung und True-False verdeutlicht das Pascal-mäßig recht gut.
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:
SendMessage(Handle, EM_AUTOURLDETECT, AURL_ENABLEURL, 0); ,
und weiter oben eingefügt
const AURL_ENABLEURL = 1; Wie zu erwarten war, hat sich am Verhalten nichts geändert.

@himitsu:
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.
Natürlich hast Du auch hier wieder recht, aber wenn ich (fast) das gleiche Ergebnis mit weniger Aufwand erreiche, dann kommt meine Faulheit wieder durch...

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)!
Gottfried Pilz
Man kann immer noch dazulernen
  Mit Zitat antworten Zitat
Benutzerbild von MessOldie
MessOldie

Registriert seit: 1. Apr 2009
Ort: Reinsdorf OT Friedrichsgrün
12 Beiträge
 
Delphi 6 Personal
 
#7

AW: Richedit kann URL's nicht mehr erkennen - wie doch wieder?

  Alt 15. Apr 2017, 20:12
Man kann wirklich immer noch dazulernen (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:
MyRichEdit: TRichEdit;
MyWordWrap: TAction;

 ...

SendMessage(MyRichEd.Handle, EM_SETTARGETDEVICE, 0, Ord(not MyWordWrap.Checked))
Einschränkung: Ich habe es nur mit Delphi5|6 testen können; mehr kann ich mir bei meiner "brotlosen Kunst" leider nicht leisten.

Schöne Ostern Euch allen...
Gottfried Pilz
Man kann immer noch dazulernen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.140 Beiträge
 
Delphi 12 Athens
 
#8

AW: Richedit kann URL's nicht mehr erkennen - wie doch wieder?

  Alt 15. Apr 2017, 20:15
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: https://www.embarcadero.com/de/products/delphi/starter
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (15. Apr 2017 um 20:24 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von MessOldie
MessOldie

Registriert seit: 1. Apr 2009
Ort: Reinsdorf OT Friedrichsgrün
12 Beiträge
 
Delphi 6 Personal
 
#9

AW: Richedit kann URL's nicht mehr erkennen - wie doch wieder?

  Alt 15. Apr 2017, 20:20
@himitsu:
Recht hast Du, wie wohl fast immer - aber genau deshalb steht die Bemerkung ja drunter!
Gottfried Pilz
Man kann immer noch dazulernen
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz