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