<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dicas Delphi &#187; TWebBrowser</title>
	<atom:link href="http://www.dicasdelphi.com.br/category/delphi/componentes/twebbrowser/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dicasdelphi.com.br</link>
	<description>dicas, artigos, novidades e discussões sobre o mundo Delphi</description>
	<lastBuildDate>Wed, 29 Dec 2010 11:49:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Dica : Visualizando HTML no Componente Memo</title>
		<link>http://www.dicasdelphi.com.br/dica-vizualizando-html-no-componente-memo/</link>
		<comments>http://www.dicasdelphi.com.br/dica-vizualizando-html-no-componente-memo/#comments</comments>
		<pubDate>Fri, 19 Dec 2008 15:49:27 +0000</pubDate>
		<dc:creator>tresloukadu</dc:creator>
				<category><![CDATA[Componentes]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[TMemo]]></category>
		<category><![CDATA[TWebBrowser]]></category>
		<category><![CDATA[Componente]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://www.dicasdelphi.com.br/?p=86</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>Nesta dica vamos ver como <strong>acessar um website</strong> através do <strong>Delphi</strong> e exibir o código <strong>HTML</strong> do mesmo, no c<strong>omponente TMemo</strong>. Para este exemplo está sendo utlizado o componente <strong>TWebBrowser</strong> que vai acessar o website e o código fonte em si. É possível fazer muitas coisas interessantes com o <strong>TWebBrowser</strong> até mesmo <strong>criar um navegador de Internet</strong>. Um detalhe adicional é que o <strong>componente TWebBrowser</strong> é baseado no <strong>Internet Explorer</strong> e a sua documentação está no site de desenvolvedores da <strong>Microsoft</strong> no seguinte endereço: <a title="Documentação do TwebBrowser" href="http://url20.ca/z1979" target="_blank">url20.ca/z1979</a> vale a pena dar uma conferida e consultar tudo que é possível fazer.</p>
<p>Vamos ao código do nosso visualizador de <strong>HTML</strong>:</p>
<div class="codesnip-container" >
<div class="delphi codesnip" style="font-family:monospace;"><span class="kw1">unit</span> UniMainBrowser<span class="sy1">;</span></p>
<p><span class="coMULTI">{<br />
Sobre: Código de exemplo para mostrar como exibir e ler um documento HTML<br />
de um website.</p>
<p>Autor: Dicas Delphi<br />
Data: &nbsp;19/12/2008<br />
}</span></p>
<p><span class="kw1">interface</span></p>
<p><span class="kw1">uses</span><br />
Windows<span class="sy1">,</span> Messages<span class="sy1">,</span> SysUtils<span class="sy1">,</span> Variants<span class="sy1">,</span> Classes<span class="sy1">,</span> Graphics<span class="sy1">,</span> Controls<span class="sy1">,</span> Forms<span class="sy1">,</span><br />
Dialogs<span class="sy1">,</span> ExtCtrls<span class="sy1">,</span> StdCtrls<span class="sy1">,</span> OleCtrls<span class="sy1">,</span> SHDocVw<span class="sy1">,</span> ComCtrls<span class="sy1">;</span></p>
<p><span class="kw1">type</span><br />
TfrmMain <span class="sy3">=</span> <span class="kw1">class</span><span class="br0">&#40;</span>TForm<span class="br0">&#41;</span><br />
WebBrowser1<span class="sy1">:</span> TWebBrowser<span class="sy1">;</span> <span class="co1">//utilizando o componente TWebBrowser</span><br />
MemoCodFonte<span class="sy1">:</span> TMemo<span class="sy1">;</span><br />
Panel1<span class="sy1">:</span> TPanel<span class="sy1">;</span><br />
edtUrl<span class="sy1">:</span> TEdit<span class="sy1">;</span><br />
btnNavegar<span class="sy1">:</span> TButton<span class="sy1">;</span><br />
btnExibirCod<span class="sy1">:</span> TButton<span class="sy1">;</span><br />
Label1<span class="sy1">:</span> TLabel<span class="sy1">;</span><br />
<span class="kw1">procedure</span> btnNavegarClick<span class="br0">&#40;</span>Sender<span class="sy1">:</span> <span class="kw4">TObject</span><span class="br0">&#41;</span><span class="sy1">;</span><br />
<span class="kw1">procedure</span> btnExibirCodClick<span class="br0">&#40;</span>Sender<span class="sy1">:</span> <span class="kw4">TObject</span><span class="br0">&#41;</span><span class="sy1">;</span><br />
<span class="kw1">private</span><br />
<span class="coMULTI">{ Private declarations }</span><br />
<span class="kw1">public</span><br />
<span class="coMULTI">{ Public declarations }</span><br />
<span class="kw1">end</span><span class="sy1">;</span></p>
<p><span class="kw1">var</span><br />
frmMain<span class="sy1">:</span> TfrmMain<span class="sy1">;</span></p>
<p><span class="kw1">implementation</span></p>
<p><span class="co2">{$R *.dfm}</span></p>
<p><span class="coMULTI">{Adiciona o código fonte de um website no memo}</span><br />
<span class="co1">//===================================================================</span><br />
<span class="kw1">procedure</span> TfrmMain<span class="sy1">.</span><span class="me1">btnExibirCodClick</span><span class="br0">&#40;</span>Sender<span class="sy1">:</span> <span class="kw4">TObject</span><span class="br0">&#41;</span><span class="sy1">;</span><br />
<span class="co1">//===================================================================</span><br />
<span class="kw1">var</span><br />
documentoAtivo <span class="sy1">:</span> <span class="kw4">variant</span><span class="sy1">;</span><br />
<span class="kw1">begin</span></p>
<p><span class="co1">//Acessando a interface do site aberto</span><br />
documentoAtivo <span class="sy1">:</span><span class="sy3">=</span> WebBrowser1<span class="sy1">.</span><span class="me1">Document</span><span class="sy1">;</span></p>
<p><span class="co1">//Adicionando o código HTML ao MEMO</span><br />
MemoCodFonte<span class="sy1">.</span><span class="me1">text</span> <span class="sy1">:</span><span class="sy3">=</span> documentoAtivo<span class="sy1">.</span><span class="me1">Body</span><span class="sy1">.</span><span class="me1">OuterHTML</span><span class="sy1">;</span></p>
<p><span class="kw1">end</span><span class="sy1">;</span></p>
<p><span class="coMULTI">{Acessa o website}</span><br />
<span class="co1">//==================================================================</span><br />
<span class="kw1">procedure</span> TfrmMain<span class="sy1">.</span><span class="me1">btnNavegarClick</span><span class="br0">&#40;</span>Sender<span class="sy1">:</span> <span class="kw4">TObject</span><span class="br0">&#41;</span><span class="sy1">;</span><br />
<span class="co1">//==================================================================</span><br />
<span class="kw1">begin</span></p>
<p><span class="co1">//Verifica se foi informado alguma URL</span><br />
<span class="kw1">if</span> edtUrl<span class="sy1">.</span><span class="me1">Text</span> &amp;lt<span class="sy1">;</span>&amp;gt<span class="sy1">;</span> <span class="st0">&#8221;</span> <span class="kw1">then</span><br />
<span class="kw1">begin</span></p>
<p><span class="co1">//Acessando o website informado no edit</span><br />
WebBrowser1<span class="sy1">.</span><span class="me1">Navigate</span><span class="br0">&#40;</span>edtUrl<span class="sy1">.</span><span class="me1">Text</span><span class="br0">&#41;</span><span class="sy1">;</span></p>
<p><span class="co1">//Colocando a ampulheta do windows só pra saber que está executando o</span><br />
<span class="co1">//programa</span><br />
Screen<span class="sy1">.</span><span class="me1">Cursor</span> <span class="sy1">:</span><span class="sy3">=</span> crHourGlass<span class="sy1">;</span></p>
<p><span class="co1">//Enquanto o site não é carregado totalmente fica no loop até o estado</span><br />
<span class="co1">//do ReadyState for &#8216;completo&#8217;</span><br />
<span class="kw1">while</span> WebBrowser1<span class="sy1">.</span><span class="me1">ReadyState</span> &amp;lt<span class="sy1">;</span>&amp;gt<span class="sy1">;</span> READYSTATE_COMPLETE <span class="kw1">do</span><br />
<span class="kw1">begin</span><br />
Application<span class="sy1">.</span><span class="me1">ProcessMessages</span><span class="sy1">;</span><br />
<span class="kw3">Sleep</span><span class="br0">&#40;</span>0<span class="br0">&#41;</span><span class="sy1">;</span><br />
<span class="kw1">end</span><span class="sy1">;</span></p>
<p><span class="co1">//Site foi carregado, tira a ampulheta e coloca a seta no mouse novamente</span><br />
Screen<span class="sy1">.</span><span class="me1">Cursor</span> <span class="sy1">:</span><span class="sy3">=</span> crDefault<span class="sy1">;</span></p>
<p><span class="co1">//Site foi carregado, libera o botão de vizualizar o código fonte</span><br />
btnExibirCod<span class="sy1">.</span><span class="me1">Enabled</span> <span class="sy1">:</span><span class="sy3">=</span> <span class="kw2">true</span><span class="sy1">;</span></p>
<p><span class="kw1">end</span></p>
<p><span class="co1">//Se nenhuma URL for informada dá uma mensage de erro, e dá focus no edit</span><br />
<span class="kw1">else</span><br />
<span class="kw1">begin</span></p>
<p><span class="co1">//Exbindo a mensagem</span><br />
ShowMessage<span class="br0">&#40;</span><span class="st0">&#8216;Entre com uma URL&#8217;</span><span class="br0">&#41;</span><span class="sy1">;</span></p>
<p><span class="co1">//Setando o focus no edit</span><br />
edtUrl<span class="sy1">.</span><span class="me1">SetFocus</span><span class="sy1">;</span><br />
<span class="kw1">end</span><span class="sy1">;</span></p>
<p><span class="kw1">end</span><span class="sy1">;</span></p>
<p><span class="kw1">end</span><span class="sy1">.</span></div>
</div>
<p>A parte que estamos acessando o <strong>código</strong> do website e adicionando ano componente <strong>TMemo</strong> é na seguinte linha:</p>
<div class="codesnip-container" >
<div class="delphi codesnip" style="font-family:monospace;">MemoCodFonte<span class="sy1">.</span><span class="me1">text</span> <span class="sy1">:</span><span class="sy3">=</span> documentoAtivo<span class="sy1">.</span><span class="me1">Body</span><span class="sy1">.</span><span class="me1">OuterHTML</span><span class="sy1">;</span></div>
</div>
<p>O código deste exemplo como sempre foi simplicado, mas existem coisas interessantes como no seguinte trecho:</p>
<div class="codesnip-container" >
<div class="delphi codesnip" style="font-family:monospace;"><span class="co1">//Enquanto o site não é carregado totalmente fica no loop até o estado</span><br />
<span class="co1">//do ReadyState for &#8216;completo&#8217;</span><br />
<span class="kw1">while</span> WebBrowser1<span class="sy1">.</span><span class="me1">ReadyState</span> &amp;lt<span class="sy1">;</span>&amp;gt<span class="sy1">;</span> READYSTATE_COMPLETE <span class="kw1">do</span><br />
<span class="kw1">begin</span><br />
Application<span class="sy1">.</span><span class="me1">ProcessMessages</span><span class="sy1">;</span><br />
<span class="kw3">Sleep</span><span class="br0">&#40;</span>0<span class="br0">&#41;</span><span class="sy1">;</span><br />
<span class="kw1">end</span><span class="sy1">;</span></div>
</div>
<p>Onde é dado um loop para verificar se o website foi totalmente carregado ou se ele está ainda fazendo ainda o <strong>download</strong> do conteúdo.</p>
<p>Segue o pacote com o executável e o código fonte para <strong>baixar</strong>:</p>
<p><a title="Vizualizar o código HTML no Delphi" href="http://www.dicasdelphi.com.br/wp-content/uploads/2008/12/vercodigosite.rar" target="_self">http://www.dicasdelphi.com.br/wp-content/uploads/2008/12/vercodigosite.rar</a></p>
<p><span style="color: #008000;"><strong>URL reduzida desta dica:</strong></span> <a title="Vizualizar o código HTML no Delphi" href="http://url20.ca/m1986" target="_self">url20.ca/m1986</a></p>
<p>t+</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dicasdelphi.com.br/dica-vizualizando-html-no-componente-memo/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

