<?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; Componentes</title>
	<atom:link href="http://www.dicasdelphi.com.br/category/delphi/componentes/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>Thu, 15 Jul 2010 13:46:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>DBGrid com Imagens</title>
		<link>http://www.dicasdelphi.com.br/dbgrid-com-imagens/</link>
		<comments>http://www.dicasdelphi.com.br/dbgrid-com-imagens/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 11:26:38 +0000</pubDate>
		<dc:creator>Elton Conz</dc:creator>
				<category><![CDATA[DBExpress]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[TCanvas]]></category>
		<category><![CDATA[DBGrid]]></category>
		<category><![CDATA[Imagens no DBGrid]]></category>

		<guid isPermaLink="false">http://www.dicasdelphi.com.br/?p=192</guid>
		<description><![CDATA[Esta é uma dica muito simples mas que produz um efeito muito legal. Já encontrei vários programas que, ao mostrar determinados dados em um DBGrid, pecavam pela falta de clareza. Por exemplo: Para mostrar se um cadastro estava ativo ou não, apresentava no grid uma coluna que era preenchida com Sim / Não.  Errado? Não. [...]]]></description>
			<content:encoded><![CDATA[<p>Esta é uma dica muito simples mas que produz um efeito muito legal.</p>
<p>Já encontrei vários programas que, ao mostrar determinados dados em um DBGrid, pecavam pela falta de clareza. Por exemplo: Para mostrar se um cadastro estava ativo ou não, apresentava no grid uma coluna que era preenchida com Sim / Não.  Errado? Não. Mas você concorda que pode ficar melhor não é?</p>
<p>Então ai vai minha dica para aperfeiçoar suas aplicações:</p>
<p>1. Estou partindo do ponto em que você ja tem seu ClientDataSet vinculado a um DataSource o qual ja se encontra vinculado a um DBGrid. No exemplo o ClientDataSet se chama TabAux e o DBGrid se chama Grade.</p>
<p>2. Insira um TImageList no seu form e adicione duas imagens.</p>
<p>Você pode baixar as imagens <a href="http://www.dicasdelphi.com.br/wp-content/uploads/2010/02/imagens.zip">clicando aqui</a></p>
<p><img class="alignnone size-medium wp-image-193" src="http://www.dicasdelphi.com.br/wp-content/uploads/2010/02/001-300x200.jpg" alt="TImageList" width="300" height="200" /></p>
<p>3. No evento OnDrawColumnCell do seu DBGrid escreva o seguinte código:</p>
<div class="codesnip-container" >
<div class="delphi codesnip" style="font-family:monospace;"><span class="kw1">if</span> Column<span class="sy1">.</span><span class="me1">Field</span><span class="sy3">=</span>TabAuxATIVO <span class="kw1">then</span><br />
<span class="kw1">begin</span></p>
<p>Grade<span class="sy1">.</span><span class="me1">Canvas</span><span class="sy1">.</span><span class="me1">FillRect</span><span class="br0">&#40;</span><span class="kw3">Rect</span><span class="br0">&#41;</span><span class="sy1">;</span></p>
<p><span class="co1">// Desenha o Quadrado</span><br />
ImageList1<span class="sy1">.</span><span class="me1">Draw</span><span class="br0">&#40;</span>Grade<span class="sy1">.</span><span class="me1">Canvas</span><span class="sy1">,</span><span class="kw3">Rect</span><span class="sy1">.</span><span class="me1">Left</span><span class="sy3">+</span>10<span class="sy1">,</span><span class="kw3">Rect</span><span class="sy1">.</span><span class="me1">Top</span><span class="sy3">+</span>1<span class="sy1">,</span>0<span class="br0">&#41;</span><span class="sy1">;</span></p>
<p><span class="co1">// Desenha o check sobre o quadrado quando ativo = &#8216;S&#8217;</span><br />
<span class="kw1">if</span> TabAuxATIVO<span class="sy1">.</span><span class="me1">Text</span><span class="sy3">=</span><span class="st0">&#8216;S&#8217;</span> <span class="kw1">then</span> <span class="co1">// Cadastro está ativo</span><br />
ImageList1<span class="sy1">.</span><span class="me1">Draw</span><span class="br0">&#40;</span>Grade<span class="sy1">.</span><span class="me1">Canvas</span><span class="sy1">,</span><span class="kw3">Rect</span><span class="sy1">.</span><span class="me1">Left</span><span class="sy3">+</span>10<span class="sy1">,</span><span class="kw3">Rect</span><span class="sy1">.</span><span class="me1">Top</span><span class="sy3">+</span>1<span class="sy1">,</span>1<span class="br0">&#41;</span><span class="sy1">;</span><br />
<span class="kw1">end</span><span class="sy1">;</span></div>
</div>
<p>4. O Resultado ficará assim</p>
<p><img class="alignnone size-medium wp-image-195" src="http://www.dicasdelphi.com.br/wp-content/uploads/2010/02/002-300x60.jpg" alt="DBGrid com Imagem" width="300" height="60" /></p>
<p>Espero que aproveite esta dica. Ela é simples, mas da um toque mais profissional para a sua aplicação.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dicasdelphi.com.br/dbgrid-com-imagens/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalando o ZeosLib no Turbo Delphi</title>
		<link>http://www.dicasdelphi.com.br/instalando-o-zeoslib-no-turbo-delphi/</link>
		<comments>http://www.dicasdelphi.com.br/instalando-o-zeoslib-no-turbo-delphi/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 14:05:52 +0000</pubDate>
		<dc:creator>tresloukadu</dc:creator>
				<category><![CDATA[Zeos]]></category>
		<category><![CDATA[Componente]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[instalação]]></category>
		<category><![CDATA[Turbo Delphi]]></category>
		<category><![CDATA[zeoslib]]></category>

		<guid isPermaLink="false">http://www.dicasdelphi.com.br/?p=188</guid>
		<description><![CDATA[O ZeosLib é um suite de componentes para você ter uma conexão nativa com banco de dados, ou seja, uma conexão sem drivers auxiliares como o ODBC. Isso entre outras coisas deixa seu sistema muito mais rápido e agiliza na fase de desenvolvimento. Aqui vamos ver como instalar no Turbo Delphi, porém não é muito [...]]]></description>
			<content:encoded><![CDATA[<p>O ZeosLib é um suite de componentes para você ter uma conexão nativa com banco de dados, ou seja, uma conexão sem drivers auxiliares como o ODBC. Isso entre outras coisas deixa seu sistema muito mais rápido e agiliza na fase de desenvolvimento. Aqui vamos ver como instalar no Turbo Delphi, porém não é muito diferente de outras versões.</p>
<p>Instalação do ZeosLib:</p>
<ol>
<li>Clique <a title="baixar zeos lib" href="http://sourceforge.net/projects/zeoslib/" target="_blank">aqui</a> e baixe a última versão do Zeos.</li>
<li>Descompacte o ZeosLib, e cole a pasta no caminho &#8220;C:\Arquivos de programas\Borland\BDS\4.0\lib&#8221; o path ficará C:\Arquivos de programas\Borland\BDS\4.0\lib\ZEOSDBO-6.6.6-stable, gosto de deixar todos os componentes e bibliotecas aqui nesta pasta lib do Turbo Delphi por questões de organização, mas você pode colocar em outra pasta se quiser.</li>
<li>Dentro do Turbo Delphi vá em Tools &gt; Options &gt; Library &#8211; Win32 &gt; Library Path. Clique no  botão com &#8220;&#8230;&#8221; e ao abrir a tela do Library Path adicione os seguintes diretórios:
<ul>
<li>C:\Arquivos de programas\Borland\BDS\4.0\lib\ZEOSDBO-6.6.6-stable\src\component</li>
<li>C:\Arquivos de programas\Borland\BDS\4.0\lib\ZEOSDBO-6.6.6-stable\src\core</li>
<li>C:\Arquivos de programas\Borland\BDS\4.0\lib\ZEOSDBO-6.6.6-stable\src\dbc</li>
<li>C:\Arquivos de programas\Borland\BDS\4.0\lib\ZEOSDBO-6.6.6-stable\src\parsesql</li>
<li>C:\Arquivos de programas\Borland\BDS\4.0\lib\ZEOSDBO-6.6.6-stable\src\plain</li>
</ul>
</li>
<li>Entre no Turbo Delphi, clique em abrir e acesse a pasta: C:\Arquivos de programas\Borland\BDS\4.0\lib\ZEOSDBO-6.6.6-stable\packages\delphi10\ZeosDbo.bdsgroup (Obs: estou usando o package para o Delphi 10 pois foi o que ficou melhor compatível).</li>
<li>Compile os arquivos na seguencia:
<ul>
<li>ZCore100.bpl</li>
<li>ZPlain100.bpl</li>
<li>ZParseSql100.bpl</li>
<li>ZDbc100.bpl</li>
<li>ZComponent100.bpl</li>
<li>ZComponentDesign100.bpl</li>
</ul>
</li>
<li>Clique no ZComponentDesign100.bpl e de install.</li>
<li>Pronto!</li>
</ol>
<p>Maiores detalhes clique <a title="documentação zeolib delphi" href="http://zeos.firmos.at/kb.php?mode=article&amp;k=6" target="_blank">aqui</a> para uma documentação mais detalhada. Depois de instalado você terá os seguintes componentes:</p>
<p><a href="http://www.dicasdelphi.com.br/wp-content/uploads/2010/01/zeos-lib-delphi.jpg"><img class="size-full wp-image-189 alignleft" title="zeos-lib-delphi" src="http://www.dicasdelphi.com.br/wp-content/uploads/2010/01/zeos-lib-delphi.jpg" alt="zeos-lib-delphi" width="446" height="266" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dicasdelphi.com.br/instalando-o-zeoslib-no-turbo-delphi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalando o Componente EmbeddedWB no Turbo Delphi</title>
		<link>http://www.dicasdelphi.com.br/instalando-o-componente-embeddedwb-no-turbo-delphi/</link>
		<comments>http://www.dicasdelphi.com.br/instalando-o-componente-embeddedwb-no-turbo-delphi/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 12:56:00 +0000</pubDate>
		<dc:creator>tresloukadu</dc:creator>
				<category><![CDATA[EmbeddedWB]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[Componente]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[navegador]]></category>
		<category><![CDATA[Turbo Delphi]]></category>

		<guid isPermaLink="false">http://www.dicasdelphi.com.br/?p=182</guid>
		<description><![CDATA[Já pensou criar o seu próprio navegador ou utilizar funcionalidades de um browser? Você pode fazer isto como o componente EmbeddedWB. A dica aqui é para a instalação no Turbo Delphi mas para a instalação no Delphi não muda muito também. Para baixar este componente clique aqui. Confira os passos abaixo para instalação: Copiar o [...]]]></description>
			<content:encoded><![CDATA[<p>Já pensou criar o seu próprio navegador ou utilizar funcionalidades de um browser? Você pode fazer isto como o componente EmbeddedWB. A dica aqui é para a instalação no Turbo Delphi mas para a instalação no Delphi não muda muito também. Para baixar este componente clique <a title="baixar EmbeddedWB" href="http://www.vclcomponents.com/Delphi/Winsock___Internet/EmbeddedWB_D2005_Embedded_Web_Browser_and_a_Chat_Client-info.html" target="_blank">aqui</a>.</p>
<p>Confira os passos abaixo para instalação:</p>
<ul>
<li>Copiar o conteúdo do arquivo para a pasta Lib do Delphi ( C:\Arquivos de programas\Borland\BDS\4.0\lib )</li>
<li>Adicionar este caminho no LIB (Tools &gt; Options &gt; Library &#8211; Win32 &gt; Library Path) :<br />
C:\Arquivos de programas\Borland\BDS\4.0\lib\EmbeddedWB_D2005\Source<br />
C:\Arquivos de programas\Borland\BDS\4.0\lib\EmbeddedWB_D2005\Source\Lib</li>
<li>Abra o arquivo EmbeddedWebBrowser_D2006.bdsproj</li>
<li>Dê BUILD ALL e, logo em seguida, INSTALL. Uma mensagem aparecerá dizendo que os componentes foram instalados</li>
<li>Feche o projeto, saindo sem salvar.</li>
</ul>
<p>Após instalado você terá os seguintes componentes:</p>
<p><a href="http://www.dicasdelphi.com.br/wp-content/uploads/2010/01/EmbeddedWB-Embedded-Web-Browser.GIF"><img class="size-full wp-image-183 alignleft" title="EmbeddedWB-Embedded-Web-Browser" src="http://www.dicasdelphi.com.br/wp-content/uploads/2010/01/EmbeddedWB-Embedded-Web-Browser.GIF" alt="EmbeddedWB-Embedded-Web-Browser" width="240" height="654" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dicasdelphi.com.br/instalando-o-componente-embeddedwb-no-turbo-delphi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aprenda a Criar um Programa Paint Parecido com o do Windows</title>
		<link>http://www.dicasdelphi.com.br/aprenda-a-criar-um-programa-paint-parecido-com-o-do-windows/</link>
		<comments>http://www.dicasdelphi.com.br/aprenda-a-criar-um-programa-paint-parecido-com-o-do-windows/#comments</comments>
		<pubDate>Sun, 10 May 2009 22:07:20 +0000</pubDate>
		<dc:creator>tresloukadu</dc:creator>
				<category><![CDATA[Image]]></category>
		<category><![CDATA[Paint]]></category>
		<category><![CDATA[TBitmap]]></category>
		<category><![CDATA[TCanvas]]></category>
		<category><![CDATA[Tcolor]]></category>
		<category><![CDATA[código fonte]]></category>
		<category><![CDATA[exemplo]]></category>
		<category><![CDATA[paint]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.dicasdelphi.com.br/?p=158</guid>
		<description><![CDATA[Artigo Enviado por Marcelo Tropicore Aqui segue um exemplo de um programa inspirado no Paint do Windows .Nós vamos usar dois componentes Image da paleta Additional para representar a nossa área de desenho. Esse componente assim como todos os componentes visuais do Delphi tem uma propriedade chamada &#8220;Canvas&#8221; ,é essa propriedade que vai determinar a [...]]]></description>
			<content:encoded><![CDATA[<p>Artigo Enviado por <a href="mailto:marcelo_tropicore@hotmail.com">Marcelo Tropicore</a></p>
<p>Aqui segue um exemplo de um programa inspirado no Paint do Windows .Nós vamos usar dois componentes Image da paleta Additional para representar a nossa área de desenho. Esse componente assim como todos os componentes visuais do Delphi tem uma propriedade chamada &#8220;Canvas&#8221; ,é essa propriedade que vai determinar a aparência  dos componentes visuais como um Edit, Label, Image etc&#8230; Dentre as propriedades da Classe TCanvas umas das principais são: Brush, CanvasOrientation, ClipRect, CopyMOde, Font, Handle, Pen, PenPos, Pixels, Ellipse,  FillRect, LineTo, MoveTo, Rectangle e uma porção de outras propriedades.</p>
<p>Vamos declarar duas variáveis globais do tipo TBitmap com os nomes Backbuffer e backbuffer2,  essas variáveis vão gerar a nossa área de desenho (é claro que é preciso declarar outras variáveis  globais para esse exemplo rodar direito,qualquer dúvida é só dar uma olhada no código fonte <img src='http://www.dicasdelphi.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) . Eu coloquei os dois Images dentro de um ScrollBox (paleta Additional) para poder redimensionar os Images sem interferir no tamanho do Form. Agora que começa a parte boa, hora de por a mão na maça, dentro do OnCreate do Form faça o seguinte.</p>
<p><a href="http://www.dicasdelphi.com.br/wp-content/uploads/2009/05/print1.jpg"><img class="aligncenter size-full wp-image-159" title="print1" src="http://www.dicasdelphi.com.br/wp-content/uploads/2009/05/print1.jpg" alt="print1" width="515" height="416" /></a><a href="http://www.dicasdelphi.com.br/wp-content/uploads/2009/05/print2.jpg"><img class="aligncenter size-full wp-image-160" title="print2" src="http://www.dicasdelphi.com.br/wp-content/uploads/2009/05/print2.jpg" alt="print2" width="557" height="310" /></a></p>
<p>Para podermos usar os Backbuffers temos que criar com backbuffer:= TBitmap.Create;  dimensionamos ele no mesmo tamanho do Scrollbox . O backbuffer.Canvas.Brush.Color:= ClWhite; é para determinar a cor de preenchimento do backbuffer. Na parte  Image1.Canvas.FillRect(Rect(0,0,Image1.width, Image1.height)); vamos Limpar toda a área do Image e finalmente mandamos o backbuffer para o Image com : Image1.Picture.Assign(backbuffer);</p>
<p>Vamos repetir o mesmo procedimento para o backbuffer2 com algumas coisas adicionais.Aqui nós determinamos qual vai ser a cor transparente do backbuffer2 que vai pro Image2, e em muitas vezes o Image2 vai ficar sobre o Image1 como pode ver no evento de alguns botões das ferramentas com o comando Image2.BringToFront;. Assim quando o Image2 ficar sobre o Image1 vai ser possível ver o Image1 que está por baixo. Aqui no caso eu usei a cor branca.<br />
Inicialize as outras variáveis como no exemplo do código fonte.</p>
<div class="codesnip-container" >
<div class="delphi codesnip" style="font-family:monospace;">cor<span class="sy1">:</span><span class="sy3">=</span> clBlack<span class="sy1">;</span><br />
ferramenta<span class="sy1">:</span><span class="sy3">=</span> <span class="st0">&#8216;lápis&#8217;</span><span class="sy1">;</span><br />
StatusBar1<span class="sy1">.</span><span class="me1">Panels</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="sy1">.</span><span class="me1">Text</span><span class="sy1">:</span><span class="sy3">=</span> <span class="st0">&#8216;Lapis&#8217;</span><span class="sy1">;</span><br />
Shape1<span class="sy1">.</span><span class="me1">Brush</span><span class="sy1">.</span><span class="me1">Color</span><span class="sy1">:</span><span class="sy3">=</span> cor<span class="sy1">;</span></div>
</div>
<p>E por último vamos liberar as variáveis backbuffer e backbuffer2 da memória, por enquanto não precisamos mais delas ,pois já foram carregadas para os dois Images, portanto vamos trabalhar com eles.<br />
As ferramentas que vão utilizar o Image2 são aquelas que desenham as linhas, retângulos e elipses. Dentro do Image2 vamos utilizar três eventos , o OnMouseDown, OnMouseMove e OnMouseUp. O componente Image é como um plano cartesiano, se você não matou as suas aulas de matemática sabe do que eu estou falando hehehe, ele tem duas dimensões , o X e o Y.</p>
<p><a href="http://www.dicasdelphi.com.br/wp-content/uploads/2009/05/print3.jpg"><img class="aligncenter size-full wp-image-161" title="print3" src="http://www.dicasdelphi.com.br/wp-content/uploads/2009/05/print3.jpg" alt="print3" width="583" height="412" /></a></p>
<p>No OnMouseDown nós vamos pegar a posição X e Y que o usuário clicou dentro do Image2. Dai fazemos o seguinte, Image2.Canvas.MoveTo(X,Y); , com isso nós movemos a posição do ponto de partida de uma linha por exemplo ,não começamos a desenhar ainda só dizemos a propriedade Canvas do Image onde vai começar a linha.</p>
<p><a href="http://www.dicasdelphi.com.br/wp-content/uploads/2009/05/print4.jpg"><img class="aligncenter size-full wp-image-162" title="print4" src="http://www.dicasdelphi.com.br/wp-content/uploads/2009/05/print4.jpg" alt="print4" width="565" height="545" /></a></p>
<p>No OnMouseMove nós usamos as variáveis X e Y do OnMouseDown e criamos uma linha (se o usuário selecionou essa ferramenta)dessa posição até a posição atual no OnMouseMove.<br />
Image2.Canvas.MoveTo(posX2,posY2);<br />
Note que antes de usar esse comando eu usei o Image2.Canvas.FillRect(Rect(0,0,Image2.Width,Image2.Height)); Para limpar o que já tinha sido desenhado antes, se não fizermos isso o Image2 vai desenhando um monte de linha uma atrás da outra, e fica um monte de linha desenhada no Image. Por isso eu usei dois Images , um para guardar o desenho e o outro para mostrar só o traçado da linha , se eu tivesse usado o Canvas.FillRect(); no Image1 a cada evento do OnMouseMove seria apagado todo o desenho principal.</p>
<p><a href="http://www.dicasdelphi.com.br/wp-content/uploads/2009/05/print5.jpg"><img class="aligncenter size-full wp-image-163" title="print5" src="http://www.dicasdelphi.com.br/wp-content/uploads/2009/05/print5.jpg" alt="print5" width="567" height="446" /></a></p>
<p>No OnMouseUp quando o usuário solta o botão do mouse , o programa já tem a posição inicial e final da linha e faz o desenho no Image1 que é o desenho principal.</p>
<div class="codesnip-container" >
<div class="delphi codesnip" style="font-family:monospace;"><span class="kw1">if</span> ferramenta <span class="sy3">=</span> <span class="st0">&#8216;linha&#8217;</span> <span class="kw1">then</span><br />
<span class="kw1">begin</span><br />
Image1<span class="sy1">.</span><span class="me1">Canvas</span><span class="sy1">.</span><span class="me1">MoveTo</span><span class="br0">&#40;</span>posX2<span class="sy1">,</span>posY2<span class="br0">&#41;</span><span class="sy1">;</span><br />
Image1<span class="sy1">.</span><span class="me1">Canvas</span><span class="sy1">.</span><span class="me1">LineTo</span><span class="br0">&#40;</span>posX<span class="sy1">,</span>posY<span class="br0">&#41;</span><span class="sy1">;</span><br />
posX3<span class="sy1">:</span><span class="sy3">=</span> x<span class="sy1">;</span><br />
posY3<span class="sy1">:</span><span class="sy3">=</span> y<span class="sy1">;</span><br />
<span class="kw1">end</span><span class="sy1">;</span></div>
</div>
<p>Algumas ferramentas não utilizam o Image2 pois desenha direto no Image1 que são a ferramenta Lápis, Borracha, Spray e os baldes de tinta. No caso dos baldes de tinta eu não consegui achar nenhum comando que conseguisse fazer igual ao do Paint do Windows, então tive usar uma lógica meio maluca mesmo pra conseguir chegar o mais peto que eu pude, se alguém sabe como fazer isso por favor me diga como hehehe.<br />
Bom é isso aí pessoal , eu passei o básico de algumas funcionalidades do programa dentro da propriedade Canvas do componente Image, o programa tem outras funções bem legais como abrir imagens e poder editar, salvar e também redimensionar o tamanho da área de desenho.</p>
<p>Se alguém quiser entrar em contato para tirar dúvidas é só mandar no meu email,  <a href="mailto:marcelo_tropicore@hotmail.com">marcelo_tropicore@hotmail.com</a></p>
<p>Baixe os Fontes Aqui: <a href="http://www.dicasdelphi.com.br/wp-content/uploads/2009/05/paint.rar">paint</a>.</p>
<p>&#8220;Uma mente que se abre para uma nova idéia nunca voltará ao seu tamanho original&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dicasdelphi.com.br/aprenda-a-criar-um-programa-paint-parecido-com-o-do-windows/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Utilizando DBExpress de uma Maneira Fácil</title>
		<link>http://www.dicasdelphi.com.br/utilizando-dbexpress-de-uma-maneira-facil/</link>
		<comments>http://www.dicasdelphi.com.br/utilizando-dbexpress-de-uma-maneira-facil/#comments</comments>
		<pubDate>Mon, 04 May 2009 18:45:53 +0000</pubDate>
		<dc:creator>tresloukadu</dc:creator>
				<category><![CDATA[Componentes]]></category>
		<category><![CDATA[DBExpress]]></category>
		<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[Componente]]></category>

		<guid isPermaLink="false">http://www.dicasdelphi.com.br/?p=155</guid>
		<description><![CDATA[Artigo enviado por: Marcio F. Cruz DBExpress, segundo meus testes, é a melhor tecnologia para comunicação com banco de dados. Mas, infelizmente, exige a configuração de vários parâmetros e manipulação de vários componentes visuais. Pensando neste problema, resolvi criar um componente que contém um conjunto de classes, para facilitar a vida do programador em trabalhar [...]]]></description>
			<content:encoded><![CDATA[<p>Artigo enviado por: <a title="Autor do Artigo" href="mailto:programador@marciofcruz.com">Marcio F. Cruz</a></p>
<p>DBExpress, segundo meus testes, é a melhor tecnologia para comunicação com banco de dados. Mas, infelizmente, exige a configuração de vários parâmetros e manipulação de vários componentes visuais.</p>
<p>Pensando neste problema, resolvi criar um componente que contém um conjunto de classes, para facilitar a vida do programador em trabalhar com esta maravilhosa tecnologia.</p>
<p>Procurei criar as classes da melhor maneira possível, com os nomes dos métodos e propriedades o mais parecido possível com o que conhecemos e utilizamos em BDE, Zeos, ADO e mesmo no DBExpress.<br />
Neste artigo, descreverei como instalar e fazer uma aplicação simples. Espero que seja útil para a comunidade e, talvez, os pacotes e classes de suas regras de negócio a utilizem.</p>
<h2>Passo 1</h2>
<p>Download <a title="link para o componente" href="http://sourceforge.net/projects/dddbxfacil/" target="_blank">http://sourceforge.net/projects/dddbxfacil/</a><br />
Este pacote comtém o componente dddbxfacil com suas classes, bem como uma aplicação simples para utilizá-la.</p>
<h2>Passo 2</h2>
<p>Criar arquivo de configuração. Este arquivo, já está contido no pacote de exemplo e, ele contém a estrutura que é usada pelo dbconnections.ini e, serve para indicar os parâmetros para conexão ao banco de dados. Eu não costumo deixar o login e password contido neste arquivo mas, nada impede de se inserir nele.</p>
<p>A configuração que defini, foi para o Oracle mas, pode ser para qualquer banco que o Dbexpress é compatível que, acho que são todos:</p>
<div class="codesnip-container" >
<div class="ini codesnip" style="font-family:monospace;"><span class="re0"><span class="br0">&#91;</span>NOMESECAOCONFIGORACLE<span class="br0">&#93;</span></span><br />
<span class="re1">CONNECTIONNAME</span><span class="sy0">=</span><span class="re2">OracleConnection</span><br />
<span class="re1">GETDRIVERFUNC</span><span class="sy0">=</span><span class="re2">getSQLDriverORACLE</span><br />
<span class="re1">VENDORLIB</span><span class="sy0">=</span><span class="re2">oci.dll</span><br />
<span class="re1">LibraryName</span><span class="sy0">=</span><span class="re2">dbxora30.dll</span><br />
<span class="re1">DriverName</span><span class="sy0">=</span><span class="re2">Oracle</span><br />
<span class="re1">HostName</span><span class="sy0">=</span><br />
<span class="re1">Database</span><span class="sy0">=</span><br />
<span class="re1">User_Name</span><span class="sy0">=</span><br />
<span class="re1">Password</span><span class="sy0">=</span><br />
<span class="re1">BlobSize</span><span class="sy0">=</span><span class="re2">-1</span><br />
<span class="re1">ErrorResourceFile</span><span class="sy0">=</span><br />
<span class="re1">LocaleCode</span><span class="sy0">=</span><span class="re2">0000</span><br />
<span class="re1">Compressed</span><span class="sy0">=</span><span class="re2">False</span><br />
<span class="re1">Encrypted</span><span class="sy0">=</span><span class="re2">False</span></div>
</div>
<h2>Passo 3</h2>
<p>No uses de sua unit, vamos inserir as seguintes units:<br />
DB, DBTables, ddcomumDBX, ddconexaoDBX, ddsqlDBX, ddproviderDBX.</p>
<h2>Passo 4</h2>
<p>Vamos no private e, colocar as seguintes “variáveis”:</p>
<div class="codesnip-container" >
<div class="delphi codesnip" style="font-family:monospace;">ConexaoDBX<span class="sy1">:</span> TConexaoDBX<span class="sy1">;</span><br />
ProviderDBX<span class="sy1">:</span> TProviderDBX<span class="sy1">;</span><br />
SqlDBX<span class="sy1">:</span> TsqlDBX<span class="sy1">;</span></div>
</div>
<h2>Passo 5</h2>
<p>Este passo é opcional mas, para mostrar melhor o funcionamento da classe, criaremos um método chamado MeuDataChange, novamente apontar ele.</p>
<div class="codesnip-container" >
<div class="delphi codesnip" style="font-family:monospace;"><span class="co1">//No private:</span><br />
<span class="kw1">procedure</span> MeuDataChange<span class="br0">&#40;</span>Sender<span class="sy1">:</span> <span class="kw4">TObject</span><span class="sy1">;</span> Field<span class="sy1">:</span> Tfield<span class="br0">&#41;</span><span class="sy1">;</span></p>
<p><span class="co1">//No implementation</span><br />
<span class="kw1">procedure</span> TForm2<span class="sy1">.</span><span class="me1">MeuDataChange</span><span class="br0">&#40;</span>Sender<span class="sy1">:</span> <span class="kw4">TObject</span><span class="sy1">;</span> Field<span class="sy1">:</span> TField<span class="br0">&#41;</span><span class="sy1">;</span><br />
<span class="kw1">begin</span><br />
<span class="co1">// Nao é necessário colocar teste para ver se tabela tá aberta, DisableControls, etc&#8230;</span></p>
<p>grbTesteGrid<span class="sy1">.</span><span class="me1">Caption</span> <span class="sy1">:</span><span class="sy3">=</span> <span class="st0">&#8216;Testando o grid. Agora são &#8216;</span><span class="sy3">+</span><br />
<span class="kw3">FormatDateTime</span><span class="br0">&#40;</span><span class="st0">&#8216;dd/mm/yyyy hh:nn:ss&#8217;</span><span class="sy1">,</span> <span class="kw3">now</span><span class="br0">&#41;</span><span class="sy1">;</span><br />
<span class="kw1">end</span><span class="sy1">;</span></div>
</div>
<h2>Passo 6</h2>
<p>Precisamos instanciar as variáveis que criamos no private. Para isso, criei procedimentos para facilitar isso. No formShow, colocaremos o seguinte código:</p>
<div class="codesnip-container" >
<div class="delphi codesnip" style="font-family:monospace;">ddconexaoDBX<span class="sy1">.</span><span class="me1">ConexaoDBXInit</span><span class="br0">&#40;</span>ConexaoDBX<span class="sy1">,</span> &nbsp;<span class="kw2">nil</span><span class="sy1">,</span><br />
<span class="kw3">IncludeTrailingPathDelimiter</span><span class="br0">&#40;</span><span class="kw3">ExtractFilePath</span><span class="br0">&#40;</span>Application<span class="sy1">.</span><span class="me1">ExeName</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy3">+</span><span class="st0">&#8216;configuracao.ini&#8217;</span><span class="sy1">,</span><br />
<span class="st0">&#8216;NOMESECAOCONFIGORACLE&#8217;</span><span class="br0">&#41;</span><span class="sy1">;</span></p>
<p>ConexaoDBX<span class="sy1">.</span><span class="me1">Login</span> <span class="sy1">:</span><span class="sy3">=</span> <span class="st0">&#8216;usuario&#8217;</span><span class="sy1">;</span><br />
ConexaoDBX<span class="sy1">.</span><span class="me1">Senha</span> <span class="sy1">:</span><span class="sy3">=</span> <span class="st0">&#8216;senha&#8217;</span><span class="sy1">;</span></p>
<p>ddproviderDBX<span class="sy1">.</span><span class="me1">ProviderDBXInit</span><span class="br0">&#40;</span>ProviderDBX<span class="sy1">,</span><br />
ConexaoDBX<span class="sy1">,</span><br />
DBGrid1<span class="sy1">,</span><br />
<span class="st0">&#8216;ROWID&#8217;</span><span class="sy1">,</span><br />
<span class="kw2">true</span><span class="sy1">,</span><br />
MeuDataChange<span class="br0">&#41;</span><span class="sy1">;</span></p>
<p>ddsqlDBX<span class="sy1">.</span><span class="me1">SqlDBXInit</span><span class="br0">&#40;</span>SqlDBX<span class="sy1">,</span> ConexaoDBX<span class="br0">&#41;</span><span class="sy1">;</span></div>
</div>
<h2>Passo 7</h2>
<p>Exemplo de código para executar busca no banco de dados:</p>
<div class="codesnip-container" >
<div class="delphi codesnip" style="font-family:monospace;"><span class="kw1">procedure</span> TForm2<span class="sy1">.</span><span class="me1">btnProcurarClick</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="kw1">var</span><br />
Retorno<span class="sy1">:</span> TProviderRetorno<span class="sy1">;</span><br />
<span class="kw1">begin</span><br />
ConexaoDBX<span class="sy1">.</span><span class="me1">ConectarSeDesconectado</span><span class="sy1">;</span></p>
<p>ProviderDBX<span class="sy1">.</span><span class="me1">ClearAll</span><span class="sy1">;</span><br />
<span class="kw1">with</span> ProviderDBX<span class="sy1">,</span> ProviderDBX<span class="sy1">.</span><span class="me1">LinhaSQL</span> <span class="kw1">do</span><br />
<span class="kw1">begin</span><br />
Add<span class="br0">&#40;</span><span class="st0">&#8216;SELECT * FROM TABELA&#8217;</span><span class="br0">&#41;</span><span class="sy1">;</span></p>
<p>Retorno <span class="sy1">:</span><span class="sy3">=</span> OpenDQL<span class="sy1">;</span><br />
<span class="kw1">end</span><span class="sy1">;</span><br />
<span class="kw1">end</span><span class="sy1">;</span></div>
</div>
<h2>Passo 8</h2>
<p>Exemplo de evento de inclusão:</p>
<div class="codesnip-container" >
<div class="delphi codesnip" style="font-family:monospace;"><span class="kw1">procedure</span> TForm2<span class="sy1">.</span><span class="me1">btnincluirClick</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="kw1">var</span><br />
iProximoCodigo<span class="sy1">:</span> <span class="kw4">integer</span><span class="sy1">;</span><br />
<span class="kw1">begin</span><br />
ConexaoDBX<span class="sy1">.</span><span class="me1">ConectarSeDesconectado</span><span class="sy1">;</span></p>
<p><span class="co1">// Pegar Próximo Codigo</span><br />
<span class="kw1">with</span> SQLDBX <span class="kw1">do</span><br />
<span class="kw1">begin</span><br />
setLinhaSQL<span class="br0">&#40;</span><span class="st0">&#8216;SELECT MAX(CODIGO) PROXIMO FROM TABELA&#8217;</span><span class="br0">&#41;</span><span class="sy1">;</span></p>
<p>OpenDQL<span class="sy1">;</span></p>
<p>iProximoCodigo <span class="sy1">:</span><span class="sy3">=</span> SQLDQl<span class="sy1">.</span><span class="me1">FieldByName</span><span class="br0">&#40;</span><span class="st0">&#8216;PROXIMO&#8217;</span><span class="br0">&#41;</span><span class="sy1">.</span><span class="me1">AsInteger</span><span class="sy3">+</span><span class="nu0">1</span><span class="sy1">;</span><br />
<span class="kw1">end</span><span class="sy1">;</span></p>
<p>ConexaoDBX<span class="sy1">.</span><span class="me1">Transacao_Abrir</span><span class="sy1">;</span></p>
<p><span class="kw1">try</span><br />
<span class="co1">// Incluir</span><br />
<span class="kw1">with</span> SqlDBX <span class="kw1">do</span><br />
<span class="kw1">begin</span><br />
ClearAll<span class="sy1">;</span></p>
<p><span class="kw1">with</span> LinhaSQL <span class="kw1">do</span><br />
<span class="kw1">begin</span><br />
Add<span class="br0">&#40;</span><span class="st0">&#8216;INSERT INTO TABELA (CODIGO, DESCRICAO)&#8217;</span><span class="br0">&#41;</span><span class="sy1">;</span><br />
Add<span class="br0">&#40;</span><span class="st0">&#8216;VALUES&#8217;</span><span class="br0">&#41;</span><span class="sy1">;</span><br />
Add<span class="br0">&#40;</span><span class="st0">&#8216;(:P_CODIGO, <img src='http://www.dicasdelphi.com.br/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> _DESCRICAO)&#8217;</span><span class="br0">&#41;</span><span class="sy1">;</span><br />
<span class="kw1">end</span><span class="sy1">;</span></p>
<p>AddParam<span class="br0">&#40;</span>ftInteger<span class="sy1">,</span> <span class="st0">&#8216;P_CODIGO&#8217;</span><span class="sy1">,</span> iProximoCodigo<span class="br0">&#41;</span><span class="sy1">;</span><br />
AddParam<span class="br0">&#40;</span>ftString<span class="sy1">,</span> <span class="st0">&#8216;P_DESCRICAO&#8217;</span><span class="sy1">,</span> <span class="st0">&#8216;nome &#8216;</span><span class="sy3">+</span><span class="kw3">IntToStr</span><span class="br0">&#40;</span>iProximoCodigo<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy1">;</span></p>
<p>ExecDML<span class="sy1">;</span><br />
<span class="kw1">end</span><span class="sy1">;</span></p>
<p>ConexaoDBX<span class="sy1">.</span><span class="me1">Transacao_Commit</span><span class="sy1">;</span><br />
<span class="kw1">except</span><br />
<span class="kw1">on</span> E<span class="sy1">:</span>Exception <span class="kw1">do</span><br />
<span class="kw1">begin</span><br />
ConexaoDBX<span class="sy1">.</span><span class="me1">Transacao_RollBack</span><span class="sy1">;</span></p>
<p>ShowMessage<span class="br0">&#40;</span>E<span class="sy1">.</span><span class="me1">Message</span><span class="br0">&#41;</span><span class="sy1">;</span><br />
<span class="kw1">end</span><span class="sy1">;</span><br />
<span class="kw1">end</span><span class="sy1">;</span><br />
<span class="kw1">end</span><span class="sy1">;</span></div>
</div>
<p>No arquivo que é baixado do sourceforge, este exemplo já está contido.</p>
<p>Qualquer dúvida, podem me escrever para meu e-mail que eu respondo:</p>
<p><a title="email para o desenvolvedor delphi" href="mailto:programador@marciofcruz.com">programador@marciofcruz.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dicasdelphi.com.br/utilizando-dbexpress-de-uma-maneira-facil/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>7</slash:comments>
		</item>
		<item>
		<title>Dica : Adicionar itens no componente TListBox</title>
		<link>http://www.dicasdelphi.com.br/dica-adicionar-itens-no-componente-tlistbox/</link>
		<comments>http://www.dicasdelphi.com.br/dica-adicionar-itens-no-componente-tlistbox/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 20:25:48 +0000</pubDate>
		<dc:creator>tresloukadu</dc:creator>
				<category><![CDATA[Componentes]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[TListBox]]></category>
		<category><![CDATA[adicionar itens]]></category>
		<category><![CDATA[Componente]]></category>
		<category><![CDATA[item]]></category>

		<guid isPermaLink="false">http://www.dicasdelphi.com.br/?p=64</guid>
		<description><![CDATA[O componente TListBox nada mais é que um componente para exibir um conjunto de informações em uma lista com barra de rolagem. Este componente permite fazer a seleção de somente um único ítem ou de vários itens ao mesmo tempo. O TListBox é um dos componentes descendentes da classe TControl que possui mais de 70 [...]]]></description>
			<content:encoded><![CDATA[<p>O <strong>componente</strong> <strong>TListBox</strong> nada mais é que um componente para exibir um conjunto de informações em uma lista com barra de rolagem. Este <strong>componente</strong> permite fazer a seleção de somente um <strong>único ítem</strong> ou de <strong>vários itens</strong> ao mesmo tempo. O <strong>TListBox</strong> é um dos <strong>componentes descendentes</strong> da classe <strong>TControl</strong> que possui mais de 70 componentes descendentes,  tais como: TBitBtn, TButton, TCheckBox, TColorDialog, TComboBox, TForm, TFontDialog, TGroupBox, THeader, TImage, TLabel, TListBox, TMainMenu e TMediaPlayer, entre outros.</p>
<p>Podemos  fazer coisas muito legais com o <strong>TListBox</strong> inclusive colocar imagens. Nessa dica irei mostrar como <strong>adicionar itens ao ListBox através do código</strong>.</p>
<p>Segue o código de exemplo:</p>
<div class="codesnip-container" >
<div class="delphi codesnip" style="font-family:monospace;"><span class="kw1">unit</span> UniTeste<span class="sy1">;</span></p>
<p><span class="coMULTI">{<br />
Sobre: Código de exemplo para mostrar como adicionar valores no listbox<br />
através do código.</p>
<p>Autor: Dicas Delphi<br />
Data: &nbsp;05/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> StdCtrls<span class="sy1">;</span></p>
<p><span class="kw1">type</span><br />
TForm2 <span class="sy3">=</span> <span class="kw1">class</span><span class="br0">&#40;</span>TForm<span class="br0">&#41;</span><br />
ListBox1<span class="sy1">:</span> TListBox<span class="sy1">;</span><br />
Button1<span class="sy1">:</span> TButton<span class="sy1">;</span><br />
<span class="kw1">procedure</span> Button1Click<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 />
Form2<span class="sy1">:</span> TForm2<span class="sy1">;</span></p>
<p><span class="kw1">implementation</span></p>
<p><span class="co2">{$R *.dfm}</span></p>
<p><span class="kw1">procedure</span> TForm2<span class="sy1">.</span><span class="me1">Button1Click</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="kw1">var</span><br />
<span class="co1">//Declarando uma variavel string</span><br />
itemNoList <span class="sy1">:</span> <span class="kw4">string</span><span class="sy1">;</span><br />
<span class="kw1">begin</span></p>
<p><span class="co1">//Adicionando a data e horario atual a variavel.</span><br />
<span class="co1">//</span><br />
<span class="co1">//A função DateTimeToStr converte o componente</span><br />
<span class="co1">//Now para string</span><br />
<span class="co1">//</span><br />
itemNoList <span class="sy1">:</span><span class="sy3">=</span> <span class="kw3">DateTimeToStr</span><span class="br0">&#40;</span><span class="kw3">Now</span><span class="br0">&#41;</span><span class="sy1">;</span></p>
<p><span class="co1">//Aqui estamos adicionando a data e horario</span><br />
<span class="co1">//armazenado na variável itemNoList em nosso</span><br />
<span class="co1">//listbox</span><br />
ListBox1<span class="sy1">.</span><span class="me1">Items</span><span class="sy1">.</span><span class="me1">Add</span><span class="br0">&#40;</span> itemNoList <span class="br0">&#41;</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 linha que nos interessa neste código é a seguinte:</p>
<div class="codesnip-container" >
<div class="delphi codesnip" style="font-family:monospace;">ListBox1<span class="sy1">.</span><span class="me1">Items</span><span class="sy1">.</span><span class="me1">Add</span><span class="br0">&#40;</span> itemNoList <span class="br0">&#41;</span><span class="sy1">;</span></div>
</div>
<p>Esta instrução diz para <strong>adicionar um item</strong> (o valor da variável itemNoList ) no nosso <strong>componente ListBox1</strong>. E no exemplo que foi preparado a cada clique do mouse um novo item é adicionado ao <strong>componente</strong> <strong>TListBox</strong> programaticamente.</p>
<p><a title="http://www.dicasdelphi.com.br/wp-content/uploads/2008/12/testelistbox.rar" href="http://www.dicasdelphi.com.br/wp-content/uploads/2008/12/testelistbox.rar">http://www.dicasdelphi.com.br/wp-content/uploads/2008/12/testelistbox.rar</a></p>
<p><strong><span style="color: #008000;">URL reduzida deste artigo</span></strong>: <a title="Adicionar itens no componente TListBox" href="http://www.url20.ca/p1978">url20.ca/p1978</a></p>
<p>t+</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dicasdelphi.com.br/dica-adicionar-itens-no-componente-tlistbox/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Dica : Cores Personalizadas no Delphi</title>
		<link>http://www.dicasdelphi.com.br/dica-cores-personalizadas-no-delphi/</link>
		<comments>http://www.dicasdelphi.com.br/dica-cores-personalizadas-no-delphi/#comments</comments>
		<pubDate>Thu, 13 Nov 2008 11:44:34 +0000</pubDate>
		<dc:creator>tresloukadu</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Tcolor]]></category>
		<category><![CDATA[HexToTColor]]></category>
		<category><![CDATA[TColor]]></category>
		<category><![CDATA[Trocar Cores]]></category>

		<guid isPermaLink="false">http://www.dicasdelphi.com.br/?p=50</guid>
		<description><![CDATA[Muitas vezes queremos trocar as cores de certos componentes e inclusive do próprio form no Delphi. Porém as cores que existem no Object Inspector não são muito legais ou não combinam uma com as outras. Pensando nisso o Delphi permite trocar as cores dos componentes através do código. Tudo isso com a ajuda de um [...]]]></description>
			<content:encoded><![CDATA[<p>Muitas vezes queremos trocar as cores de certos <strong>componentes</strong> e inclusive do próprio <strong>form</strong> no <strong>Delphi</strong>. Porém as <strong>cores</strong> que existem no <strong>Object Inspector</strong> não são muito legais ou não combinam uma com as outras. Pensando nisso o Delphi permite trocar as cores dos componentes através do código. Tudo isso com a ajuda de um <strong>componente</strong> chamado <strong>TColor</strong>. É muito fácil fazer a troca das cores, assim podemos deixar a nossa aplicação com um aspecto mais legal e bonito e inclusive podemos utilizar cores em <strong>hexadecimal</strong> do mesmo jeito que é feito no <strong>HTML</strong>.</p>
<p>Antes de mais nada eu quero indicar para todos se cadastrarem no site <strong>Kuler</strong> da adobe. Esse website permite você ter acesso a <strong>esquema de cores</strong> que combinam uma com a outra. Assim você nunca vai errar na ora de utilizar as cores na sua aplicação. Em adição a isso tudo você pode criar uma conta e com isso fazer os seus próprios esquemas de cores. Depois que você está com as cores escolhidas é só pegar o código em <strong>hexadecimal</strong> que o Kuler fornece e utilizar no Delphi. O endereço para o site Kuler é o seguinte:</p>
<p><a title="Adobe Kuler" href="http://kuler.adobe.com" target="_blank">kuler.adobe.com</a></p>
<p>Pelo o que andei verificando o Delphi não aceita cores com o código hexadecimal no formato HTML diretamente. Então para podemos utilizar as cores como no formato HTML temos uma função fornecida no site About que nos ajuda a realizar essa tarefa de <strong>colorir os componentes</strong>. O endereço do artigo é:</p>
<p><a href="http://delphi.about.com/cs/adptips2001/a/bltip0301_5.htm" target="_blank">http://delphi.about.com/cs/adptips2001/a/bltip0301_5.htm</a></p>
<p>Bom vamos ver algo prático. O exemplo é bem simples, somente uns botões para trocar as cores do <strong>componente panel</strong>.</p>
<div class="codesnip-container" >
<div class="delphi codesnip" style="font-family:monospace;"><span class="kw1">unit</span> UniCores<span class="sy1">;</span></p>
<p><span class="coMULTI">{<br />
Sobre: Código de exemplo de como utilizar cores personalizadas.<br />
Autor: Dicas Delphi &#8211; www.dicasdelphi.com.br<br />
Data: &nbsp;13/11/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></p>
<p><span class="kw1">type</span><br />
TForm1 <span class="sy3">=</span> <span class="kw1">class</span><span class="br0">&#40;</span>TForm<span class="br0">&#41;</span><br />
Button1<span class="sy1">:</span> TButton<span class="sy1">;</span><br />
Panel1<span class="sy1">:</span> TPanel<span class="sy1">;</span><br />
Button2<span class="sy1">:</span> TButton<span class="sy1">;</span><br />
Button3<span class="sy1">:</span> TButton<span class="sy1">;</span><br />
<span class="kw1">procedure</span> Button1Click<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> Button2Click<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> Button3Click<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">function</span> HexToTColor<span class="br0">&#40;</span>sColor <span class="sy1">:</span> <span class="kw4">string</span><span class="br0">&#41;</span> <span class="sy1">:</span> TColor<span class="sy1">;</span><br />
<span class="kw1">end</span><span class="sy1">;</span></p>
<p><span class="kw1">var</span><br />
Form1<span class="sy1">:</span> TForm1<span class="sy1">;</span></p>
<p><span class="kw1">implementation</span></p>
<p><span class="co2">{$R *.dfm}</span></p>
<p><span class="kw1">procedure</span> TForm1<span class="sy1">.</span><span class="me1">Button1Click</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="kw1">begin</span></p>
<p><span class="co1">//TCOlor &#8211; Componente do Delphi</span></p>
<p><span class="co1">//HexToTColor &#8211; Função que converte uma cor Hexadecimal</span><br />
<span class="co1">//no formato HTML para o formato utilizado em TColor.</span></p>
<p><span class="co1">//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@</span><br />
<span class="co1">//Atenção: Verfique que a cerquilha # que é utilizada no HTML</span><br />
<span class="co1">//aqui ela não vai.</span><br />
<span class="co1">//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@</span></p>
<p>Panel1<span class="sy1">.</span><span class="me1">Color</span> <span class="sy1">:</span><span class="sy3">=</span> TColor<span class="br0">&#40;</span>HexToTColor<span class="br0">&#40;</span><span class="st0">&#8216;A1000A&#8217;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy1">;</span><br />
<span class="kw1">end</span><span class="sy1">;</span></p>
<p><span class="kw1">procedure</span> TForm1<span class="sy1">.</span><span class="me1">Button2Click</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="kw1">begin</span><br />
Panel1<span class="sy1">.</span><span class="me1">Color</span> <span class="sy1">:</span><span class="sy3">=</span> TColor<span class="br0">&#40;</span>HexToTColor<span class="br0">&#40;</span><span class="st0">&#8216;BDAF7B&#8217;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy1">;</span><br />
<span class="kw1">end</span><span class="sy1">;</span></p>
<p><span class="kw1">procedure</span> TForm1<span class="sy1">.</span><span class="me1">Button3Click</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="kw1">begin</span><br />
Panel1<span class="sy1">.</span><span class="me1">Color</span> <span class="sy1">:</span><span class="sy3">=</span> TColor<span class="br0">&#40;</span>HexToTColor<span class="br0">&#40;</span><span class="st0">&#8216;CFD649&#8242;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy1">;</span><br />
<span class="kw1">end</span><span class="sy1">;</span></p>
<p><span class="coMULTI">{<br />
Função fornecida pelo website<br />
http://delphi.about.com/cs/adptips2001/a/bltip0301_5.htm<br />
em 13/11/2008<br />
}</span><br />
<span class="kw1">function</span> TForm1<span class="sy1">.</span><span class="me1">HexToTColor</span><span class="br0">&#40;</span>sColor <span class="sy1">:</span> <span class="kw4">string</span><span class="br0">&#41;</span> <span class="sy1">:</span> TColor<span class="sy1">;</span><br />
<span class="kw1">begin</span><br />
Result <span class="sy1">:</span><span class="sy3">=</span><br />
RGB<span class="br0">&#40;</span><br />
<span class="kw3">StrToInt</span><span class="br0">&#40;</span><span class="st0">&#8216;$&#8217;</span><span class="sy3">+</span><span class="kw3">Copy</span><span class="br0">&#40;</span>sColor<span class="sy1">,</span> 1<span class="sy1">,</span> 2<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy1">,</span><br />
<span class="kw3">StrToInt</span><span class="br0">&#40;</span><span class="st0">&#8216;$&#8217;</span><span class="sy3">+</span><span class="kw3">Copy</span><span class="br0">&#40;</span>sColor<span class="sy1">,</span> 3<span class="sy1">,</span> 2<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy1">,</span><br />
<span class="kw3">StrToInt</span><span class="br0">&#40;</span><span class="st0">&#8216;$&#8217;</span><span class="sy3">+</span><span class="kw3">Copy</span><span class="br0">&#40;</span>sColor<span class="sy1">,</span> 5<span class="sy1">,</span> 2<span class="br0">&#41;</span><span class="br0">&#41;</span><br />
<span class="br0">&#41;</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></div>
</div>
<p>Analisando esse código podemos ver que a linha que nos interessa é a seguinte:</p>
<div class="codesnip-container" >
<div class="delphi codesnip" style="font-family:monospace;">Panel1<span class="sy1">.</span><span class="me1">Color</span> <span class="sy1">:</span><span class="sy3">=</span> TColor<span class="br0">&#40;</span>HexToTColor<span class="br0">&#40;</span><span class="st0">&#8216;A1000A&#8217;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy1">;</span></div>
</div>
<p>Podemos ver nessa linha que o retorno da função <strong>HexToTColor</strong> está sendo enviado para o <strong>componente</strong> <strong>TColor</strong>. Outra coisa interessante é que o argumento na função <strong>HexToTColor</strong> é o valor em <strong>hexadcimal</strong> fornecida pelo site <strong>Kuler da Adobe</strong>.</p>
<p>O código para download do exemplo acima, juntamente com o executável está aqui:</p>
<p><a href="http://www.dicasdelphi.com.br/wp-content/uploads/2008/11/teste_cores.rar">http://www.dicasdelphi.com.br/wp-content/uploads/2008/11/teste_cores.rar</a></p>
<p>t+</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dicasdelphi.com.br/dica-cores-personalizadas-no-delphi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dica : Turbo Delphi e DBExpress com MySQL</title>
		<link>http://www.dicasdelphi.com.br/dica-turbo-delphi-e-dbexpress-com-mysql/</link>
		<comments>http://www.dicasdelphi.com.br/dica-turbo-delphi-e-dbexpress-com-mysql/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 12:31:13 +0000</pubDate>
		<dc:creator>tresloukadu</dc:creator>
				<category><![CDATA[Componentes]]></category>
		<category><![CDATA[DBExpress]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Componente]]></category>

		<guid isPermaLink="false">http://www.dicasdelphi.com.br/?p=3</guid>
		<description><![CDATA[Vou mostar nesse artigo como acessar o MySQL com o componente DBExpress que já vem junto por padrão na IDE do Turbo Delphi. Para realizar a conexão com o MySQL precisamos de duas DLL&#8217;s. São elas: dbxopenmysql50.dll (Driver para conectar no MySQL versão 5) libmysql.dll (É interessante baixar a última versão). Os links para baixar [...]]]></description>
			<content:encoded><![CDATA[<p>Vou mostar nesse artigo como acessar o <strong>MySQL</strong> com o <strong>componente DBExpress</strong> que já vem junto por padrão na <strong>IDE</strong> do <strong>Turbo Delphi</strong>. Para realizar a conexão com o MySQL precisamos de duas DLL&#8217;s.</p>
<p>São elas:</p>
<ul>
<li>dbxopenmysql50.dll (Driver para conectar no MySQL versão 5)</li>
<li>libmysql.dll (É interessante baixar a última versão).</li>
</ul>
<p>Os links para baixar são:</p>
<ul>
<li><a title="DBExpress Open DLL" href="http://www.justsoftwaresolutions.co.uk/files/dbxopenmysql5_dll.zip" target="_blank">http://www.justsoftwaresolutions.co.uk/files/dbxopenmysql5_dll.zip</a></li>
<li><a title="Lib do MySQL" href="http://www.dll-download-system.com/dlls/libmysql.zip" target="_blank">http://www.dll-download-system.com/dlls/libmysql.zip</a></li>
</ul>
<p>Após baixar as duas dll&#8217;s você pode descompactar as duas na pasta do seu projeto (onde estão os seus arquivos .pas, .dfm e .exe).</p>
<p>Depois de executado esses passos temos que editar um arquivo .ini do DBExpress para que ele possa reconhecer o novo Driver para o MySQL 5 ( que no nosso caso é o dbxopenmysql50.dll ). É muito fácil temos que ir no seguinte caminho &#8220;C:\Arquivos de programas\Borland\BDS\4.0\dbExpress&#8221; e editar o seguinte arquivo <strong>dbxdrivers.ini</strong>.</p>
<p>(Se o caminho do arquivo apresentado aqui, não for o mesmo que o seu. Você pode utilizar o Localizar do windows para procurar onde está o dbxdrivers.ini no seu computador).</p>
<p>Na seção &#8221; [Installed Drivers] &#8221; adicione a seguinte linha ao final da seção: &#8221; <strong>OpenMySQL50=1</strong> &#8220;.</p>
<div class="codesnip-container" >
<div class="ini codesnip" style="font-family:monospace;"><span class="re0"><span class="br0">&#91;</span>Installed Drivers<span class="br0">&#93;</span></span><br />
<span class="re1">Interbase</span><span class="sy0">=</span><span class="re2">1</span><br />
<span class="re1">MYSQL</span><span class="sy0">=</span><span class="re2">1</span><br />
<span class="re1">ASA</span><span class="sy0">=</span><span class="re2">1</span><br />
<span class="re1">OpenMySQL50</span><span class="sy0">=</span><span class="re2">1</span></div>
</div>
<p>Agora precisamos colocar a seguinte seção no arquivo:</p>
<div class="codesnip-container" >
<div class="ini codesnip" style="font-family:monospace;"><span class="re0"><span class="br0">&#91;</span>OpenMySQL50<span class="br0">&#93;</span></span><br />
<span class="re1">LibraryName</span><span class="sy0">=</span><span class="re2">dbxopenmysql50.dll</span><br />
<span class="re1">GetDriverFunc</span><span class="sy0">=</span><span class="re2">getSQLDriverMYSQL50</span><br />
<span class="re1">VendorLib</span><span class="sy0">=</span><span class="re2">libmysql.dll</span><br />
<span class="re1">HostName</span><span class="sy0">=</span><span class="re2">localhost</span><br />
<span class="re1">Database</span><span class="sy0">=</span><span class="re2">Nome_da_Minha_Database</span><br />
<span class="re1">User_Name</span><span class="sy0">=</span><span class="re2">Login_do_Meu_Usuario</span><br />
<span class="re1">Password</span><span class="sy0">=</span><span class="re2">Senha_do_Meu_Usuario</span></div>
</div>
<p>Pontos para observar nessa seção: em LibraryName estamos declarando o nome da DLL (driver) com o banco que baixamos, a mesma coisa estamos fazendo em VendorLib. As três últimas linhas são as linhas que você vai colocar os dados de acesso da sua database.</p>
<p>Tudo Pronto!! <img src='http://www.dicasdelphi.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><em><strong>Passos Adicionais:</strong></em></p>
<p><em><strong>Teste de Acesso ao MySQL no Turbo Delphi com o DBExpress</strong></em><br />
Primeiro vamos criar um novo projeto:</p>
<div id="attachment_4" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.dicasdelphi.com.br/wp-content/uploads/2008/11/novo_projeto_no_delphi.jpg"><img class="size-medium wp-image-4" title="Novo projeto no Delphi" src="http://www.dicasdelphi.com.br/wp-content/uploads/2008/11/novo_projeto_no_delphi-300x219.jpg" alt="Novo projeto no Delphi" width="300" height="219" /></a><p class="wp-caption-text">Novo projeto no Delphi</p></div>
<p>Após isso recomendo salvar o seu projeto hehe.</p>
<p>Vamos agora adicionar os seguintes componentes no nosso form.</p>
<ul>
<li>dbExpress -&gt; TSQLConnection</li>
<li>Data Access -&gt; TDataSetProvider</li>
<li>dbExpress -&gt; TSQLTable</li>
<li>Data Access -&gt; TClientDataSet</li>
<li>Data Access -&gt; TDataSource</li>
</ul>
<p>E para testarmos vermos o resultado:</p>
<ul>
<li>Data Controls -&gt; TDBEdit</li>
</ul>
<p><strong>Configurações de Acesso a Database do MySQL</strong></p>
<p>Para abrir o editor de configuração é só darmos 2 cliques em cima do componente TSQLConnection. Agora vamos cliar no botão com um &#8220;+&#8221;  para criar uma nova conexão.</p>
<div id="attachment_5" class="wp-caption aligncenter" style="width: 456px"><a href="http://www.dicasdelphi.com.br/wp-content/uploads/2008/11/configurando_dbexpress.jpg"><img class="size-full wp-image-5" title="Criando uma nova conexão no DBExpress" src="http://www.dicasdelphi.com.br/wp-content/uploads/2008/11/configurando_dbexpress.jpg" alt="Criando uma nova conexão no DBExpress" width="446" height="360" /></a><p class="wp-caption-text">Criando uma nova conexão no DBExpress</p></div>
<p>Escolhemos o Driver OpenMySQL50 e informamos o nome de nossa conexão.</p>
<p>Agora temos que entrar com os dados de acesso ao banco de dados, como segue a imagem de exemplo:</p>
<div id="attachment_7" class="wp-caption aligncenter" style="width: 448px"><a href="http://www.dicasdelphi.com.br/wp-content/uploads/2008/11/testando_dbexpress.jpg"><img class="size-full wp-image-7" title="Configurando o DBExpress e Testando a Conexão" src="http://www.dicasdelphi.com.br/wp-content/uploads/2008/11/testando_dbexpress.jpg" alt="Configurando o DBExpress e Testando a Conexão" width="438" height="354" /></a><p class="wp-caption-text">Configurando o DBExpress e Testando a Conexão</p></div>
<p>Como observado no passo 5 da imagem, podemos clicar no botão &#8220;v&#8221; e verificar se a conexão já está funcionando. Se der algum erro nessa parte, eu recomendo reler este artigo novamente para procurar onde está o erro.</p>
<p>Se retornar sucesso podemos clicar em OK e retornar para o nosso form. Uma dica legal nessa parte do artigo é clicarmos no nosso objeto TSQLConnection e no Object Inspector na propriedade LoginPrompt  trocarmos de true para false.  Com isso o Turbo  Delphi não vai pedir para digitarmos a senha toda hora.</p>
<p>Depois dos passos acima executados, vamos setar as configurações nos outros componentes para acessarmos a Database. Precisamos de muita atenção agora.</p>
<p><span style="color: #0000ff;">Clicar no componente <strong>TSQLTable</strong> e no object inspector na propriedade <strong>SQLConnection</strong> selecionar <strong>SQLConnection1</strong> e em <strong>TableName</strong> selecionar alguma tabela do nosso banco de dados.</span></p>
<p>Agora vamos clicar no componente <strong>TDataSetProvider</strong> e na propriedade <strong>DataSet</strong> vamos selecionar a opção <strong>SQLTable1</strong>.</p>
<p><span style="color: #0000ff;">No componente <strong>TClientDataSet</strong> vamos setar duas propriedades, a primeira é <strong>ProviderName</strong> vamor selecionar a opção <strong>DataSetProvider1</strong> e na propriedade  <strong>Active</strong> vamos selecionar  a opção  <strong>true</strong>.</span></p>
<p>Já no compoente <strong>TDataSource</strong> vamos na propriedade DataSet e selecionamos a opção <strong>ClientDataSet1</strong>.</p>
<p><span style="color: #0000ff;">Agora por último vamos exibir alguma informação da database no nosso componente <strong>DBEdit1</strong>. Na propriedade <strong>DataSource</strong> vamos selecionar a opção <strong>DataSource1</strong> e na propriedade <strong>DataField</strong> vamos selcionar alguma coluna da tabela que informamos no componente TSQLTable. Após selecionar o nome da coluna o dado já vai aparecer no DBEdit. <img src='http://www.dicasdelphi.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </span></p>
<p>Após isso podemos dar um F9  e compilar o nosso projeto. Ou ainda podemos colocar os outros componentes da Seção Data Controls no nosso formulário. O processo é basicamente igual ao que fizemos no nosso DBEDit.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dicasdelphi.com.br/dica-turbo-delphi-e-dbexpress-com-mysql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
