Einzelnen Beitrag anzeigen

looseleaf

Registriert seit: 25. Mai 2011
69 Beiträge
 
#1

TWebBrowser, EdgeIfAvailable

  Alt 15. Feb 2024, 12:51
Liebe Gemeinde,

aus Kompaibilitäsgründen würden wir in Delphi 12 gern TWebBrowser weiterverwenden mi EdgeIfAvailable.
Da gibt es ja lt. [1] das Problem, dass OnNavigateError nicht mehr aufgerufen wird, wenn Edge verwendet wird.
Wie schaffe ich es, dass ich nach einem Navigate(URL) darauf reagiere, ob hier ein 404 oder sonst ein anderer Fehler passiert ist?

Mein etwas kruder Ansatz ist jetzt der:
Code:
type TMyEdge=class(TWebBrowser)
     private
       function MyGetEdge: TEdgeBrowser;
     public
       property GetEdge: TEdgeBrowser read MyGetEdge;
     end;

function TMyEdge.MyGetEdge: TEdgeBrowser;
begin
  Result := inherited GetEdgeInterface;
end;

function GetEdgeBrowser(W: TWebBrowser): TEdgeBrowser;
begin
  Result := nil;
  if W.ActiveEngine=Edge then Result := TMyEdge(W).GetEdge;
end;
und dann würde ich an geeigneter Stelle ein
Code:
GetEdgeBrowser(WebBrowser1).OnNavigationCompleted := EdgeBrowser1NavigationCompleted;
einfügen und dort in dem Handler IsSucess abfragen und reagieren.

Probleme: Leider ist z.B. im FormCreate die ActiveEngine noch nicht da, weil noch nichts vom Browser verwendet wurde. Setze ich den Handler in einem DocumenComplete und lade die falsche URL noch einmal neu, dann geht das.

Gibt es da einen einfacheren Weg? Oder schaffe ich es, die Engine zu starten, auh wenn noch kein Navigate() verwendet wird?

Danke
Stefan


[1] http://docwiki.embarcadero.com/RADSt...on_TWebBrowser
  Mit Zitat antworten Zitat