Ich wäre mir nicht sicher, ob das funktioniert.
Die Eigenschaft ActiveEngine kann auch den Wert "NoneYet" haben, wenn der Edge-Browser noch geladen wird. Wenn das schief geht, wird der IE geladen.
Wenn der Browser länger braucht zum Laden, ist vielleicht "OnShow" noch zu früh zum Setzen des Event-Handlers.
Eine Lösung könnte sein, den Event-Handler erst in OnBeforeNavigate2 zu setzen. Wenn geladen wird, ist der Browser auf jeden Fall da.
Code:
if not (FBrowserInitialized) then
begin
e := WebBrowser1.GetEdge;
if e<>nil then
e.OnNavigationCompleted := EdgeBrowser1NavigationCompleted;
FBrowserInitialized := true;
end;