Dica : Visualizando HTML no Componente Memo

By tresloukadu

Nesta dica vamos ver como acessar um website através do Delphi e exibir o código HTML do mesmo, no componente TMemo. Para este exemplo está sendo utlizado o componente TWebBrowser que vai acessar o website e o código fonte em si. É possível fazer muitas coisas interessantes com o TWebBrowser até mesmo criar um navegador de Internet. Um detalhe adicional é que o componente TWebBrowser é baseado no Internet Explorer e a sua documentação está no site de desenvolvedores da Microsoft no seguinte endereço: url20.ca/z1979 vale a pena dar uma conferida e consultar tudo que é possível fazer.

Vamos ao código do nosso visualizador de HTML:

unit UniMainBrowser;

{
Sobre: Código de exemplo para mostrar como exibir e ler um documento HTML
de um website.

Autor: Dicas Delphi
Data:  19/12/2008
}

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, OleCtrls, SHDocVw, ComCtrls;

type
TfrmMain = class(TForm)
WebBrowser1: TWebBrowser; //utilizando o componente TWebBrowser
MemoCodFonte: TMemo;
Panel1: TPanel;
edtUrl: TEdit;
btnNavegar: TButton;
btnExibirCod: TButton;
Label1: TLabel;
procedure btnNavegarClick(Sender: TObject);
procedure btnExibirCodClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
frmMain: TfrmMain;

implementation

{$R *.dfm}

{Adiciona o código fonte de um website no memo}
//===================================================================
procedure TfrmMain.btnExibirCodClick(Sender: TObject);
//===================================================================
var
documentoAtivo : variant;
begin

//Acessando a interface do site aberto
documentoAtivo := WebBrowser1.Document;

//Adicionando o código HTML ao MEMO
MemoCodFonte.text := documentoAtivo.Body.OuterHTML;

end;

{Acessa o website}
//==================================================================
procedure TfrmMain.btnNavegarClick(Sender: TObject);
//==================================================================
begin

//Verifica se foi informado alguma URL
if edtUrl.Text <> then
begin

//Acessando o website informado no edit
WebBrowser1.Navigate(edtUrl.Text);

//Colocando a ampulheta do windows só pra saber que está executando o
//programa
Screen.Cursor := crHourGlass;

//Enquanto o site não é carregado totalmente fica no loop até o estado
//do ReadyState for ‘completo’
while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
begin
Application.ProcessMessages;
Sleep(0);
end;

//Site foi carregado, tira a ampulheta e coloca a seta no mouse novamente
Screen.Cursor := crDefault;

//Site foi carregado, libera o botão de vizualizar o código fonte
btnExibirCod.Enabled := true;

end

//Se nenhuma URL for informada dá uma mensage de erro, e dá focus no edit
else
begin

//Exbindo a mensagem
ShowMessage(‘Entre com uma URL’);

//Setando o focus no edit
edtUrl.SetFocus;
end;

end;

end.

A parte que estamos acessando o código do website e adicionando ano componente TMemo é na seguinte linha:

MemoCodFonte.text := documentoAtivo.Body.OuterHTML;

O código deste exemplo como sempre foi simplicado, mas existem coisas interessantes como no seguinte trecho:

//Enquanto o site não é carregado totalmente fica no loop até o estado
//do ReadyState for ‘completo’
while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
begin
Application.ProcessMessages;
Sleep(0);
end;

Onde é dado um loop para verificar se o website foi totalmente carregado ou se ele está ainda fazendo ainda o download do conteúdo.

Segue o pacote com o executável e o código fonte para baixar:

http://www.dicasdelphi.com.br/wp-content/uploads/2008/12/vercodigosite.rar

URL reduzida desta dica: url20.ca/m1986

t+


, , , ,

categoriaComponentes, Delphi, TMemo, TWebBrowser commento7 Comments datadezembro 19th, 2008

About... tresloukadu

This author published 28 posts in this site.

Share

FacebookTwitterEmailWindows LiveTechnoratiDeliciousDiggStumbleponMyspaceLikedin

Comments


Renan Lazzaretti
janeiro 30th, 2009

Parabens pelo site, otimas informacoes…


tresloukadu
janeiro 30th, 2009

obrigado :) Isso só dá mais motivos pra continuar. E se você tiver alguma dúvida e eu puder ajudar fique a vontade em perguntar…. t+


Luis Gustavo
março 6th, 2009

Parabéns, simples, porém direto no ponto, obrigado estava precisando desta informação!!


Ricardo
abril 9th, 2009

Muito legal o exemplo, bem prático. Mas gostaria de saber se tem como puxar o conteúdo apresentado no site, sem o código fonte. Obrigado.


tresloukadu
abril 9th, 2009

Olá, o que você se refere em “puxar” ? Você deseja salvar o site no seu computador? Ou deseja salvar somente as imagens? Você pode especificar mais a sua pergunta?

t+


Ricardo
abril 9th, 2009

@tresloukadu
Olá, quero fazer a mesma função do código fonte acima para dentro de um memo, mas só do conteúdo, sem o código html, etc… Desse conteúdo eu pretendo separar linhas específicas para gravar num banco de dados, basicamente é isso. Obrigado.


Cleufas
junho 4th, 2009

Olá, parabens pelo site, muito bom.
Gostaria de saber se eu consigo passar informação para campos de um form web, pelo delphi.
Exemplo:
Preencher usuario e senha de uma tela de login de um sistema web com informações de campos Edit do Delphi.

Se puder me dar uma luz, fico muito agradecido.

Desde já, obrigado!

Leave a comment