WebBrowser

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (5)  (1)

Veja neste artigo de Luciano Pimenta, como acessar páginas da Web no Delphi.

Acesse páginas da Internet direto do Delphi

 

Durante o desenvolvimento de alguns projetos tive a necessidade de acessar páginas da Internet a partir do próprio Delphi, para obter informações da Web.

Uma maneira prática de abrir uma página a partir de uma aplicação Delphi pode ser vista a seguir:

 

{ Declare UrlMon no uses }

HlinkNavigateString(nil,'http://www.clubedelphi.net');

 

Uma desvantagem dessa abordagem é que a página será aberta em no navegador padrão do sistema operacional, em uma nova janela, o que  torna difícil sua manipulação a partir da aplicação Delphi.

Neste artigo veremos como utilizar o componente WebBrowser da paleta Internet para criar um browser bastante simples. Esse componente permite adicionar as funcionalidades de um Web Browser à sua aplicação, e utiliza internamente as mesmas bibliotecas utilizadas pelo Internet Explorer, mais especificamente a SHDOCVW.DLL.

Criando um navegador

Abra o Delphi e crie uma nova aplicação, adicione no formulário os seguintes componentes: WebBrowser, Toolbar, ActionList, ImageList, Label, BitBtn e ComboBox. Adicione alguns botões à Toolbar e algumas imagens ao ImageList. Aponte a propriedade Images da ToolBar para o ImageList. Seu formulário deve estar semelhante ao da Figura 1.

Para cada botão da ToolBar você deverá inserir um manipuladpr para o evento OnClick e chamar o respectivo método do WebBrowser, conforme mostra a Tabela 1.

Botão

Método do WebBrowser

Avançar

GoForward

Voltar

GoBack

Parar

Stop

Atualizar

Refresh

Página Inicial

GoHome

Fechar

Quit

Tabela 1. Chamada aos métodos do WebBrowser

 

Figura 1. Criando um “navegador” no Delphi

Veja no exemplo a seguir como fica o manipulador para o evento OnClick do botão Voltar:

 

WebBrowser1.GoBack;

 

No evento OnClick do ComboBox digite:

 

 WebBrowser1.Navigate(ComboBox1.Text);

 

Aponte evento OnClick do botão Ir para este mesmo manipulador.

Para enviar e-mails, utilizaremos uma ação pré-definida pelo ActionList. Dê um duplo clique sobre esse componente, selecione a opção New Standard Action e escolha o item Internet|TSendMail (Figura 2).

Selecione o botão da ToolBar que será encarregado de disparar a ação, e aponte sua propriedade Action para SendMail1.

Pronto! Rode a aplicação e você já poderá testar as funcionalidades básicas de navegação e envio de e-mails.

 

Dica: você pode também utilizar o WebBrowser para exibir o conteúdo de um arquivo do disco (.html, .xml etc), como no exemplo a seguir:

        WebBrowser1.Navigate('file:///c:\animals.xml')

 

Figura 2. ActionList contém ações pré-definidas para trabalhar com e-mails, URLs e Downloads

Incrementando o navegador

Vamos adicionar mais algumas funcionalidades ao nosso exemplo, como abrir os sites que estão na pasta Favoritos do sistema.

Declare o seguinte na seção public do formulário:

 

pidl : PItemIDList;

caminho : array [0..MAX_PATH] of char;

procedure Favoritos (str : TStrings;

  const caminho : string);

 

Implemente o método como mostrado a seguir:

 

procedure TForm1.Favoritos(str : TStrings;

  const caminho: string);

var

  searchrec : TSearchrec;

  path, dir, arquivo : string;

  Buffer : array[0..2047] of Char;

  found : Integer;

begin

  {Pega todos os arquivos na pasta Favoritos}

  path := caminho +'\*.url';

  dir := ExtractFilepath(path);

  found := FindFirst(path, faAnyFile, searchrec);

  while found = 0 do

  begin

    SetString(arquivo, Buffer,

      GetPrivateProfileString('InternetShortcut',

      PChar('URL'), nil, Buffer, SizeOf(Buffer),

      PChar(dir + searchrec.Name)));

    str.Add(arquivo);

    found := FindNext(searchrec);

  end;

  found := FindFirst(dir +'\*.*', faAnyFile,

    searchrec);

  while found = 0 do

  begin

    if ((searchrec.Attr and faDirectory) > 0) and

      (searchrec.Name[1]<>'.') then

    Favoritos(str,(dir + '\'+searchrec.name));

    found := FindNext(searchrec);

  end;

  FindClose(searchrec);

end;

 

Declare ShlObj no uses da seção interface. No evento OnShow do formulário digite:

 

SHGetSpecialFolderLocation(Handle,

  CSIDL_FAVORITES, pidl);

SHGetPathFromIDList(pidl, caminho);

Favoritos(ComboBox1.Items,StrPas(caminho));

 

Veja a aplicação em execução na Figura 3.

 

Figura 3. Favoritos adicionados a um ComboBox

Uma outra alternativa seria exibir a lista dos favoritos em um PopupMenu, que será acionado quando o usuário clicar no botão Favoritos da ToolBar.

Adicione ao formulário um PopupMenu e declare o seguinte método logo acima da seção private do formulário:

 

 

procedure PreencheMenu(Sender: TObject);

procedure DoOnClick(Sender : TObject);

 

Implemente-o como mostrado a seguir:

 

procedure TForm1.PreencheMenu(Sender: TObject);

var

  lista : TStrings;

  i : integer;

  Item : TMenuItem;

begin

  lista := TStringList.Create;

  PopupMenu1.Items.Clear;

  Favoritos(Lista,StrPas(caminho));

  for i := 0 to lista.Count - 1 do

  begin

    { Para cada item da lista adiciona um item

    no menu }

    Item := TMenuItem.Create(self);

    Item.Caption := lista.Strings[i];

    { Associa o evento OnClick do item de menu a

    procedure que irá abrir os sites }

    Item.OnClick := DoOnClick;

    { Adiciona o item no PopupMenu }

    PopupMenu1.Items.Add(Item);

  end;

end;

 

Aponte o evento OnPopup do PopupMenu para o método PreencheMenu. Veja a seguir a implementação do método DoOnClick:

 

procedure TForm1.DoOnClick(Sender: TObject);

var

  site : string;

begin

  site := StringReplace((Sender as TMenuItem).Caption,

                       '&',' ',[rfReplaceAll]);

  WebBrowser1.Navigate(site);

end;

 

Altere a propriedade DropdownMenu do botão Favoritos da ToolBar para o PopupMenu1. Veja o resultado na Figura 4.

 

Figura 4. Favoritos adicionados a um PopupMenu

Interação Sistema x Navegador

Algumas vezes você pode desejar que o sistema exiba uma página de acordo com informações que estão no banco de dados.

Por exemplo, ao abrir uma ficha de um cliente em sua aplicação Delphi, você poderia automaticamente exibir no WebBrowser informações sobre esse mesmo cliente, que possam estar cadastradas em um site da Web.

Veja no exemplo a seguir como ficaria o acesso a um site de cadastro on-line usando informações vindas de um ClientDataSet:

 

var

  Cliente : string;

begin

  Cliente := ClientDataSet1CLIENTE.AsString;

  WebBrowser1.Navigate('http://www.meusite.com.br/'+

                       'consulta.dll?cliente=' + Cliente);

end;

Conclusões

Como você pode ver a utilização do componente WebBrowser é bastante simples.Você pode agora utilizar esse componente pra as mais diferentes funcionalidades: fornecer um mecanismo de acesso direto ao site da sua empresa a partir da sua aplicação, integrar suas aplicações com sites da Web, exibir informações on-line diretamente em um formulário, etc. Até a próxima.

 

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Ficou com alguma dúvida?