<?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>TechTips &#187; VCL/RTL</title>
	<atom:link href="http://www.techtips.com.br/category/programacao/delphi/vclrtl/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.techtips.com.br</link>
	<description>Dicas de Tecnologia</description>
	<lastBuildDate>Wed, 24 Jun 2009 19:06:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Movendo colunas e linhas em um StringGrid.</title>
		<link>http://www.techtips.com.br/programacao/movendo-colunas-e-linhas-em-um-stringgrid/</link>
		<comments>http://www.techtips.com.br/programacao/movendo-colunas-e-linhas-em-um-stringgrid/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 14:58:33 +0000</pubDate>
		<dc:creator>acidbytes</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[VCL/RTL]]></category>

		<guid isPermaLink="false">http://www.techtips.com.br/programacao/movendo-colunas-e-linhas-em-um-stringgrid/</guid>
		<description><![CDATA[&#160; &#160;&#160;&#160;&#160;&#160; Na maioria dos componentes Grids, de terceiros, você pode observar que o usuário pode mover colunas e linhas usando o mouse. Aliás, o usuário espera este comportamento de um Grid. Então, como fazer isso usando um TStringGrid? &#160;&#160;&#160;&#160;&#160; Como sempre, se é isso que você estava querendo implantar em seu aplicativo, mais uma [...]]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>
<p align="justify">&#160;&#160;&#160;&#160;&#160; Na maioria dos componentes Grids, de terceiros, você pode observar que o usuário pode mover colunas e linhas usando o mouse. Aliás, o usuário <strong><font color="#ff0000"><em>espera</em></font></strong> este comportamento de um Grid. Então, como fazer isso usando um TStringGrid? </p>
<p align="justify">&#160;&#160;&#160;&#160;&#160; Como sempre, se é isso que você estava querendo implantar em seu aplicativo, mais uma vez “seus pobrêma se acabaram-se”,&#160; apresentamos o incrível <strong><font color="#008000"><em>GridColumnRowMoveitor</em></font></strong> Tabajara.</p>
<p>&#160;&#160;&#160;&#160;&#160; Mais uma vez… mão na massa e chega de enrolação.</p>
<p align="justify">&#160;&#160;&#160;&#160;&#160; Primeiro de tudo, se você der uma olhada mais aprofundada no componente <strong>TCustomGrid</strong> você verá que os métodos <strong>MoveColumn</strong> e <strong>MoveRow</strong> estão lá, fazem parte do componente, mas eles estão ocultos no TStringGrid, eles são herdados do ancestral TCustomGrid porém não estão acessíveis no descendente, o motivo?? Ora, vai lá saber o que se passa na cabeça dos garotos da Codegear…</p>
<p align="justify">&#160;&#160;&#160;&#160;&#160; Como resolver esse problema? Simples e fácil, sem maiores complicações, basta fazer uma herança de TStringGrid e redeclarar estes métodos como public.</p>
<p><strong>type      <br /></strong>&#160;&#160;&#160; TNovoGrid <font color="#0000ff">=</font> class(TStringGrid)     <br />&#160;&#160;&#160; <strong>public</strong>     <br />&#160;&#160;&#160; procedure MoveColumn(FromIndex, ToIndex: LongInt)<font color="#0000ff"><strong>;</strong></font>     <br />&#160;&#160;&#160; procedure MoveRow(FromIndex, ToIndex: LongInt)<strong><font color="#0000ff">;</font></strong>     <br />&#160;&#160; <strong>end<font color="#0000ff">;</font></strong></p>
<p>&#160;&#160; Para implementar estes métodos é muito simples, basta na implementação, chamar o ancestral e passar para ele o comando:</p>
<p><strong>procedure</strong> TNovoGrid.MoveColumn(FromIndex, ToIndex: LongInt)<font color="#0000ff"><strong>;</strong></font>     <br /><strong>begin</strong>     <br />&#160;&#160;&#160; inherited<font color="#0000ff"><strong>;</strong></font>     <br /><strong>end<font color="#0000ff">;</font></strong></p>
<p><strong>procedure </strong>TNovoGrid.MoveRow(FromIndex, ToIndex: LongInt)<strong><font color="#0000ff">;</font></strong>     <br /><strong>begin</strong>     <br />&#160;&#160;&#160; inherited<font color="#0000ff">;</font>     <br /><strong>end<font color="#0000ff">;</font></strong></p>
<p align="justify">&#160;&#160;&#160;&#160; Você não precisa registrar este componente na paleta de componentes. Use o TStringGrid ou qualquer descendente de TCustomGrid normalmente como já faz hoje, e quando você precisar usar estes métodos, simplesmente faça um typecast (conversão de tipos) para a nova classe, e pronto. Veja o exemplo abaixo:</p>
<p><strong>procedure </strong>TForm1.Button1Click(Sender: TObject);     <br /><strong>begin      <br /></strong>&#160;&#160;&#160;&#160;&#160;&#160; TNovoGrid(StringGrid1).MoveColumn(<font color="#800000"><strong>2</strong></font>, <font color="#800000"><strong>5</strong></font>)<font color="#0000ff">;</font>     <br /><strong>end</strong><font color="#0000ff">;</font></p>
<p><font color="#0000ff">&#160;&#160;&#160; </font><font color="#000000">Bom, é isso aí, até a próxima.      <br />&#160;&#160;&#160; <a href="http://www.spectrus.com.br">www.spectrus.com.br</a></font></p>
<p><center>&copy; <a href="http://www.spectrus.com.br">TechTips</a></center></p>]]></content:encoded>
			<wfw:commentRss>http://www.techtips.com.br/programacao/movendo-colunas-e-linhas-em-um-stringgrid/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Delphi Video Aula : Padronizando sistemas com Frames</title>
		<link>http://www.techtips.com.br/programacao/delphi/delphi-video-aula-padronizando-sistemas-com-frames/</link>
		<comments>http://www.techtips.com.br/programacao/delphi/delphi-video-aula-padronizando-sistemas-com-frames/#comments</comments>
		<pubDate>Fri, 11 May 2007 21:51:29 +0000</pubDate>
		<dc:creator>leosimas</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Orientação a Objetos]]></category>
		<category><![CDATA[VCL/RTL]]></category>
		<category><![CDATA[Video Aulas]]></category>

		<guid isPermaLink="false">http://www.techtips.com.br/semcategoria/delphi-video-aula-padronizando-sistemas-com-frames/</guid>
		<description><![CDATA[Olá pessoal!Está é minha&#160;terceira video-aula sobre delphi para o TechTips. Nesta video aula, vocês poderão ver o quanto é util criar frames padronizados para cadastro e consulta de dados de uma tabela.Dessa forma, a produtividade aumenta imensamente e é uma opção aos famosos geradores de sistemas que existem por aí. Para ver a video-aula, clique [...]]]></description>
			<content:encoded><![CDATA[</p>
<p>Olá pessoal!<br />Está é minha&nbsp;terceira video-aula sobre delphi para o TechTips.
<p>Nesta video aula, vocês poderão ver o quanto é util criar frames padronizados para cadastro e consulta de dados de uma tabela.<br />Dessa forma, a produtividade aumenta imensamente e é uma opção aos famosos geradores de sistemas que existem por aí.<br /> 
<p>Para ver a video-aula, <a href="http://www.techtips.com.br/wp-content/uploads/VideoAulas/FramesCadastro/FramesCadastro.html">clique aqui</a>.
<p><a href="http://delphi.wikispaces.com/space/showimage/framescadastro.jpg"><img height="180" src="http://www.techtips.com.br/wp-content/uploads/2007/05/WindowsLiveWriter/DelphiVideoAulaPadronizandosistemascomFr_10B6F/framescadastro12.jpg" width="240" border="0"></a>
<p>Ps: Qualquer semelhança com nomes é pura coincidência.</p>
<p><center>&copy; <a href="http://">TechTips</a></center></p>]]></content:encoded>
			<wfw:commentRss>http://www.techtips.com.br/programacao/delphi/delphi-video-aula-padronizando-sistemas-com-frames/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Windows Service acessando WebService</title>
		<link>http://www.techtips.com.br/programacao/windows-service-acessando-webservice/</link>
		<comments>http://www.techtips.com.br/programacao/windows-service-acessando-webservice/#comments</comments>
		<pubDate>Tue, 10 Apr 2007 21:08:39 +0000</pubDate>
		<dc:creator>Zote</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Linguagem Delphi]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[VCL/RTL]]></category>

		<guid isPermaLink="false">http://www.techtips.com.br/programacao/windows-service-acessando-webservice/</guid>
		<description><![CDATA[Boa tarde pessoal! Na verdade, este não é um artigo, apenas uma solução de um problema que tivemos e que muitos podem ter&#8230; Temos um Windows Service feito em Delphi/win32 e hoje surgiu a necessidade dele acessar um WebService. Importamos o wsdl, codificamos e na hora de executar&#8230; &#8220;access violation&#8220;. Bom, pode ser algo que [...]]]></description>
			<content:encoded><![CDATA[<p>Boa tarde pessoal!<br />
Na verdade, este não é um artigo, apenas uma solução de um problema que tivemos e que muitos podem ter&#8230;</p>
<p>Temos um Windows Service feito em Delphi/win32 e hoje surgiu a necessidade dele acessar um WebService.<br />
Importamos o wsdl, codificamos e na hora de executar&#8230; &#8220;<strong>access violation</strong>&#8220;. Bom, pode ser algo que fizemos de errado!<br />
Refizemos o processo e mesmo erro! Vamos fazer um outro cliente pra testar. Fizemos em Delphi Application, PHP, c# e todos funcionaram.</p>
<p>Bom, pode ser algo de permissão do windows. Alteramos para rodar como administrador da máquina, e nada. Num teste a mais, apenas pra ninguém poder dizer que não foi testado, colocamos pra rodar como usuário do domínio e nada!</p>
<p>Então mais um pouco de pesquisa e encontramos a solução:</p>
<p><code>Faltava chamar a inicialização dos ActiveX (que provavelmente o Delphi usa por baixo pra chamar WebService).  </code>Assim sendo, colocamos no create do DataModule que fará o acesso ao WebService a seguinte linha: CoInitialize(nil);<br />
e no Destroy: CoUnInitialize; Pra isso, tivemos que adicionar ActiveX no uses.</p>
<p>Com isso conseguimos resolver o nosso problema e espero que o de alguns de vocês também.</p>
<p>Meus agradecimentos especiais vão para: <a href="http://www.techtips.com.br/author/leonel/" title="Leonel Togniolli">Leonel Togniolli</a>, <a href="http://blogs.codegear.com/AndreanoLanusse/" title="Andreano Lanusse">Andreano Lanusse</a> e Jone Cunha que encontrou a solução. Valeu pessoal!</p>
<p>Um abraço e até a próxima!</p>
<p><center>&copy; <a href="http://testdrive.bludata.com.br">TechTips</a></center></p>]]></content:encoded>
			<wfw:commentRss>http://www.techtips.com.br/programacao/windows-service-acessando-webservice/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Video Aula &#8211; Frames utilizando Frames</title>
		<link>http://www.techtips.com.br/programacao/delphi/vclrtl/video-aula-frames-utilizando-frames/</link>
		<comments>http://www.techtips.com.br/programacao/delphi/vclrtl/video-aula-frames-utilizando-frames/#comments</comments>
		<pubDate>Tue, 27 Mar 2007 21:38:24 +0000</pubDate>
		<dc:creator>leosimas</dc:creator>
				<category><![CDATA[Orientação a Objetos]]></category>
		<category><![CDATA[VCL/RTL]]></category>
		<category><![CDATA[Video Aulas]]></category>

		<guid isPermaLink="false">http://www.techtips.com.br/programacao/delphi/vclrtl/video-aula-frames-utilizando-frames/</guid>
		<description><![CDATA[Olá pessoal!Está é minha segunda video-aula sobre delphi para o TechTips. Nesta video aula, vocês poderão ver o quanto é util uma hierarquia de frames que podem utilizar outros frames. Os frames criados na video-aula anterior&#160;foram reutilizados para mostrar mais uma vez como isso é prático. &#160; Para ver a video-aula, clique aqui. &#169; TechTips]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal!<br />Está é minha segunda video-aula sobre delphi para o TechTips.</p>
<p>Nesta video aula, vocês poderão ver o quanto é util uma hierarquia de frames que podem utilizar outros frames. Os frames criados na <a href="http://www.techtips.com.br/arquivos/FramesInterfaces/FramesInterfaces.html">video-aula anterior</a>&nbsp;foram reutilizados para mostrar mais uma vez como isso é prático.</p>
<p>&nbsp;</p>
<p>Para ver a video-aula, <a href="http://www.techtips.com.br/arquivos/FramesEmFrames/FramesEmFrames.html">clique aqui</a>.</p>
<p><a href="http://delphi.wikispaces.com/space/showimage/videoaula02.jpg"><img height="180" src="http://www.techtips.com.br/wp-content/uploads/2007/03/WindowsLiveWriter/VideoAulaFramesutilizandoFrames_10843/videoaula02%5B1%5D%5B3%5D.jpg" width="240" border="0"></a></p>
<p><center>&copy; <a href="http://">TechTips</a></center></p>]]></content:encoded>
			<wfw:commentRss>http://www.techtips.com.br/programacao/delphi/vclrtl/video-aula-frames-utilizando-frames/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Video Aula &#8211; Frames com interfaces</title>
		<link>http://www.techtips.com.br/programacao/delphi/vclrtl/video-aula-frames-com-interfaces/</link>
		<comments>http://www.techtips.com.br/programacao/delphi/vclrtl/video-aula-frames-com-interfaces/#comments</comments>
		<pubDate>Thu, 15 Mar 2007 18:12:54 +0000</pubDate>
		<dc:creator>leosimas</dc:creator>
				<category><![CDATA[Orientação a Objetos]]></category>
		<category><![CDATA[VCL/RTL]]></category>
		<category><![CDATA[Video Aulas]]></category>

		<guid isPermaLink="false">http://www.techtips.com.br/programacao/delphi/vclrtl/video-aula-frames-com-interfaces/</guid>
		<description><![CDATA[Olá pessoal!Está é minha primeira video-aula para o techtips. Ela explica a utilização de frames com interfaces.Recomendo usar o fone de ouvido. Para ver a video aula, clique aqui. &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; . &#169; TechTips]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal!<br />Está é minha primeira video-aula para o techtips.</p>
<p>Ela explica a utilização de frames com interfaces.<br />Recomendo usar o fone de ouvido.</p>
<p>Para ver a video aula, <a href="http://www.techtips.com.br/arquivos/FramesInterfaces/FramesInterfaces.html">clique aqui</a>.</p>
<p><a href="http://delphi.wikispaces.com/space/showimage/fi.jpg"><img height="253" src="http://www.techtips.com.br/wp-content/uploads/2007/03/WindowsLiveWriter/VideoAulaFramescominterfaces_D525/fi%5B8%5D3.jpg" width="317" align="left" border="0"></a> </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>.</p>
<p><center>&copy; <a href="http://">TechTips</a></center></p>]]></content:encoded>
			<wfw:commentRss>http://www.techtips.com.br/programacao/delphi/vclrtl/video-aula-frames-com-interfaces/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Usando Frames na pr&#225;tica Parte 01/N</title>
		<link>http://www.techtips.com.br/programacao/delphi/vclrtl/usando-frames-na-prtica-parte-01n/</link>
		<comments>http://www.techtips.com.br/programacao/delphi/vclrtl/usando-frames-na-prtica-parte-01n/#comments</comments>
		<pubDate>Tue, 16 Jan 2007 16:29:09 +0000</pubDate>
		<dc:creator>leosimas</dc:creator>
				<category><![CDATA[VCL/RTL]]></category>

		<guid isPermaLink="false">http://www.techtips.com.br/semcategoria/usando-frames-na-prtica-parte-01n/</guid>
		<description><![CDATA[Olá Pessoal, estou aqui para falar de sobre frames.Frame é como se fosse uma form instanciada como um componente panel.O Help do delphi o chama de container, mas ele não é um mero container, se aplicado de forma corretamente. Situação:No seu sistema você tem um listbox aonde seu analista(um cara muito criativo) quer que o [...]]]></description>
			<content:encoded><![CDATA[</p>
<p>Olá Pessoal, estou aqui para falar de sobre frames.<br />Frame é como se fosse uma form instanciada como um componente panel.<br />O Help do delphi o chama de container, mas ele não é um mero container, se aplicado de forma corretamente.</p>
<p><strong>Situação:</strong><br />No seu sistema você tem um listbox aonde seu analista(um cara muito criativo) quer que o usuário possa incluir, alterar e excluir items.<br />É um listbox de filtro de likes. Ex: O usuário pode pesquisar por produtos que começam com &#8216;Abac&#8217; e &#8216;Lim&#8217;.</p>
<p><strong>Problema:</strong><br />Não convém criar uma tabela pra isso devido aos milhares de combinações diferentes já que sempre vai ser por algo específico.<br />Seu analista não te disse, mas tem centenas de telas de relatório que vc vai ter que alterar para mesma coisa.<br />Muitos podem pensar &#8220;Crio os 3 botões ali naquela tela e depois só copio e colo nas outras telas!&#8221;, mas o problema de fazer isso é a redundância de código.<br />Muitos podem pensar &#8220;Vamos criar uma classe e passamos os botões na criação&#8221; Mesmo assim o código vai ter que ter redundância.<br />Muitos podem pensar &#8220;Vamos criar um componente pra isso.&#8221;. Quase lá! O problema disso é ter q instalar o componente em cada máquina e sempre ter que recompilá-lo a cada alteração até ele estar pronto.<br />A solução é simples: Frames!<br />Você deve ter exclamado: &#8220;Ok. Ok Léo Simas! Como frames vai ser melhor que tudo isso aí?&#8221;<br />Para solucionarmos esse problema, nada melhor que um exemplo prático!<br />Mãos à obra!</p>
<p>*Crie uma nova aplicação.<br />*Com a Form vazia mesmo, vá em File-&gt;New-&gt;Frame.<br />Vai aparecer algo meio estranho. Parece um painel, mas tem botões de form.<br />Isso é o nosso frame.<br />*Chame-o de FmAddLista.<br />*Deixe o Frame com width como 280 e Height como 35.<br />*No public do nosso Frame declare isso:</p>
<pre>  public
    Lista : TListbox;
  end;
</pre>
<p>Não coloque um listbox na tela. O Objeto Lista vai ser apenas um referencial depois.<br />*Adicione 3 botões com os captions respectivos como &#8220;I&#8221;,&#8221;A&#8221;,&#8221;X&#8221;.<br />Vai ficar parecido com isso:<br /><img height="62" alt="frame01b.jpg" src="http://www.techtips.com.br/wp-content/uploads/2007/01/WindowsLiveWriter/UsandoFramesnaprticaParte01N_8F02/image001.jpg" width="288"><br />No primeiro botão vamos fazer ele incluir nesse objeto que chamamos Lista:
<pre>  procedure TFmAddLista.SpeedButton1Click(Sender: TObject);
  begin
    If not assigned(Lista) then exit;
    Lista.items.add(InputBox('Informe o items','Informe o item','item'));
  end;
</pre>
<p>No segundo botão vamos fazer ele alterar o item selecionado nesse objeto que chamamos Lista:
<pre>  procedure TFmAddLista.SpeedButton2Click(Sender: TObject);
  begin
    If not assigned(Lista) then exit;
    If Lista.itemindex &lt; 0 then exit;
    Lista.items[Lista.itemindex] := InputBox('Informe o item',
                                             'Informe o item',
                                              Lista.items[Lista.itemindex]);
  end;
</pre>
<p>No terceiro botão vamos fazer ele excluir o item nesse objeto que chamamos Lista:
<pre>  procedure TFmAddLista.SpeedButton3Click(Sender: TObject);
  begin
    If not assigned(Lista) then exit;
    If Lista.itemindex &lt; 0 then exit;
    Lista.items.delete(Lista.itemindex);
  end;
</pre>
<p>Se vc tentar compilar, vai compilar certinho. Mesmo não tendo um Listbox na tela.<br />Agora voltamos a tela principal do cliente.<br />Na aba Standard, o primeiro componente é o TFrame.<br />Clique nele e clique na form principal.<br />Uma janela aparecerá com todos os frames do seu projeto.<br />Escolha o FmAddLista.<br />Bingo!<br />Seu frame está na tela principal!<br />Assim:<br /><img height="308" alt="frame01a.jpg" src="http://www.techtips.com.br/wp-content/uploads/2007/01/WindowsLiveWriter/UsandoFramesnaprticaParte01N_8F02/image002.jpg" width="286"><br />Agora a Ultima parte.(Mas já?)<br />No oncreate da form principal coloque:
<pre>  procedure TForm1.FormCreate(Sender: TObject);
  begin
    fmaddlista1.lista := Listbox1;
  end;
</pre>
<p>Pode botar seu programa pra rodar!<br />Você deve estar se perguntando: &#8220;Como isso????&#8221;<br />Simples. Declaramos nosso frame como um controlador de items de um listbox.<br />Que listbox? Qualquer um que vc carregue para objeto lista dele.<br />Experimente dar Ctrl+C e Ctrl+V no seu frame da tela principal!<br />Isso mesmo! Você pode ter quantos quiser. Usados na sua aplicação.<br />Coloque vários frames e vários listbox e ligue eles no oncreate.<br />Ligue um mesmo listbox a vários frames FmAddlista.<br />Agora é por sua imaginação&#8230; <img src='http://www.techtips.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <br />Espero que tenham gostado.<br />Até a próxima!<br />Falowzzzzzzzzzzzzz</p>
<p><center>&copy; <a href="http://">TechTips</a></center></p>]]></content:encoded>
			<wfw:commentRss>http://www.techtips.com.br/programacao/delphi/vclrtl/usando-frames-na-prtica-parte-01n/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.615 seconds -->

