Até a versão Tokyo do Delphi, o navegador padrão embutido é o TWebBrowser – uma implementação para chamada do Navegador padrão do Windows. Se as páginas a serem chamadas são páginas mais antigas – ele até vai bem. No entanto quando o desejo for carregar o que há de mais novo em estrutura do HTML5 com frameworks como Angular5 e outros, vários problemas de incompatibilidade surgirão á inviabilizar o uso do TWebBrowser.

TChromium como Navegador
A alternativa que se mostra mais adequada para uso dos novos frameworks é a utilizado o TChromium com a implementação CEF4Delphi créditos para Salvador Díaz Fau como consta.

Leia os exemplos
É imperativo a leitura dos exemplos que são baixados do GIT. Ele requer chamada e configuração inicial antes do uso da biblioteca, assim como é necessário aguardar a inicialização da mesma antes de sair carregando a página. Então não deixe de olhar os exemplos.

Na inicialização – antes de abrir uma página
[code lang=”pascal”]

// preparando as configurações
var FStarted:boolean;
function CEFApplication: TCefApplication;
var sPath:String;
begin
sPath := extractFilePath(ParamStr(0)); /// ou outro que for adequado ao seu aplicativo – com o local de instalação das DLLs do pacote
if not assigned(GlobalCEFApp) then
begin
GlobalCEFApp := TCefApplication.Create;
GlobalCEFApp.FlashEnabled := False;
GlobalCEFApp.FastUnload := true;

GlobalCEFApp.FrameworkDirPath := sPath+’cef’;
GlobalCEFApp.ResourcesDirPath := sPath+’cef’;
GlobalCEFApp.LocalesDirPath := sPath+’cef\locales’;
GlobalCEFApp.cache := sPath+’cef\cache’;
GlobalCEFApp.cookies := sPath+’cef\cookies’;
GlobalCEFApp.UserDataPath := sPath+’cef\User Data’;
GlobalCEFApp.EnableGPU := false;
end;
if not FStarted then
FStarted := GlobalCEFApp.StartMainProcess;

result := GlobalCEFApp;
end;

// na inicialização do projeto – chamar os dados de configuração da biblioteca –
CEFApplication;

[/code]

Antes de abrir uma página
Olhando para os exemplos, ele requer que a criação da área de apresentação (o Browser) exige que a estrutura de carga da biblioteca já esteja carregada.
Para fazer isto é preciso ficar monitorando a conclusão da inicialização para somente após criar a camada de apresentação (a VIEW);
Aqui nós usamos um timer para ficar monitorando quando que a estrutura foi inicializada.

algo que represente um loop:

[code]
while not (Chromium1.CreateBrowser(CEFWindowParent1, ”)) and
(Chromium1.Initialized) do
begin
delay(100);
application.processMessage(); // avaliar se a aplicação requer despachar outras mesnagens.
end;
[/code]

Somente após a resposta que tudo foi carregado com sucesso que a página é chamada. Neste ponto uma dica é usar o evento “AfterCreated” do componente, ou seja, o “AfterCreated” é chamado após o componente ter concluído a criação da área de apresentação.

Carregando uma página

Depois de tudo inicializado “AfterCreated” é o momento de carrega a nossa página:

Chromium1.LoadURL(url);