<?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; Experts</title>
	<atom:link href="http://www.techtips.com.br/category/programacao/delphi/experts/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>CnWizards para Delphi 2007</title>
		<link>http://www.techtips.com.br/programacao/delphi/cnwinzards-para-delphi-2007/</link>
		<comments>http://www.techtips.com.br/programacao/delphi/cnwinzards-para-delphi-2007/#comments</comments>
		<pubDate>Tue, 01 May 2007 16:10:08 +0000</pubDate>
		<dc:creator>Alexandre José</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Experts]]></category>
		<category><![CDATA[IDE]]></category>

		<guid isPermaLink="false">http://www.techtips.com.br/programacao/delphi/cnwinzards-para-delphi-2007/</guid>
		<description><![CDATA[Como o CnWizards ainda não possui uma versão estável para Delphi 2007 e eu estava precisando de algumas boas ferramentas que ele possui acabei baixando do CVS dele os fontes e compilando uma versão compatível, mas ainda não estável. Você pode baixar essa instalação clicando aqui. As instruções de como instalar estão dentro do arquivo [...]]]></description>
			<content:encoded><![CDATA[<p>Como o CnWizards ainda não possui uma versão estável para Delphi 2007 e eu estava precisando de algumas boas ferramentas que ele possui acabei baixando do CVS dele os fontes e compilando uma versão compatível, mas ainda não estável.</p>
<p>Você pode baixar essa instalação clicando <a href="http://www.waveobjects.com.br/blog/arquivos/CnWizards_D2007.rar">aqui</a>. As instruções de como instalar estão dentro do arquivo &#8220;<strong>instalar.txt</strong>&#8220;.</p>
<p><center>&copy; <a href="http://www.waveobjects.com.br/blog">TechTips</a></center></p>]]></content:encoded>
			<wfw:commentRss>http://www.techtips.com.br/programacao/delphi/cnwinzards-para-delphi-2007/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Compilando seu Pr&#243;prio GExperts</title>
		<link>http://www.techtips.com.br/programacao/delphi/experts/compilando-seu-prprio-gexperts/</link>
		<comments>http://www.techtips.com.br/programacao/delphi/experts/compilando-seu-prprio-gexperts/#comments</comments>
		<pubDate>Sun, 11 Mar 2007 19:10:42 +0000</pubDate>
		<dc:creator>Leonel Togniolli</dc:creator>
				<category><![CDATA[Experts]]></category>

		<guid isPermaLink="false">http://www.techtips.com.br/programacao/delphi/experts/compilando-seu-prprio-gexperts/</guid>
		<description><![CDATA[Gosto de acompanhar o desenvolvimento de alguns projetos. Sendo estáveis, é interessante usar versões bastante recentes de produtos, mesmo que sejam chamadas de &#8220;instáveis&#8221;, para acompanhar as novidades. Algum tempo atrás resolvi baixar o GExperts direto do CVS, pois queria usar um recurso novo que não estava na distribuição ainda &#8211; era o Grep Replace, [...]]]></description>
			<content:encoded><![CDATA[<p>Gosto de acompanhar o desenvolvimento de alguns projetos. Sendo estáveis, é interessante usar versões bastante recentes de produtos, mesmo que sejam chamadas de &#8220;instáveis&#8221;, para acompanhar as novidades. Algum tempo atrás resolvi baixar o GExperts direto do CVS, pois queria usar um recurso novo que não estava na distribuição ainda &#8211; era o Grep Replace, busca e substituição de texto em vários arquivos. Acabei, além de usar a nova funcionalidade, fazendo algumas sugestões, encontrando bugs, e até corrigindo alguns deles. Até incluí um novo expert na distribuição e adicionei novos recursos em outro. Ou seja, acabei ganhando mais recursos do que eu esperava.</p>
<p>Hoje o Grep Replace já está na distribuição oficial do GExperts faz algum tempo. Mas, por outro lado, o código fonte do DelForEx, o formatador de código fonte Delphi que muita gente usa, foi doado para o GExperts algum tempo atrás. Como não foi atualizado para formatar todas os novos recursos de linguagem adicionados recentemente no Delphi, não está na distribuição oficial ainda. Mesmo assim teve alguns incrementos e correções. Se o formatador de código fonte te interessa, se você quer acompanhar outras novas funcionalidades, ou quem sabe até escrever algum expert para ajudar em alguma tarefa chata do dia a dia, escrevi esse guia rápido para se manter atualizado com a distribuição do GExperts. De bônus, primeiro passo dele serve como base pra qualquer outro projeto do SourceForge que você tenha interesse.</p>
<h2>Passo 1: Baixando o código fonte</h2>
<p>Apesar de o GExperts oferecer <a href="http://gexperts.sourceforge.net/daily/">zips diários</a> com os fontes, é uma solução trabalhosa para se manter atualizado, sendo só uma alternativa para quem não consegue acessar o repositório CVS por algum motivo.</p>
<p>Acessar o servidor de CVS diretamente é a melhor opção para baixar qualquer atualização facilmente, e se você pretende fazer qualquer customização na sua própria versão, mesclar essas alterações sem muito esforço. Para baixar os fontes dessa forma, recomendo usar o <a href="http://www.tortoisecvs.org">TortoiseCVS</a>, mas qualquer outro cliente de CVS que preferir também funciona. Depois de instalado, vá até o windows explorer e clique com o botão direito em alguma pasta que queira guardar os fontes, selecione CheckOut, e usar o CVSROOT como <tt>:pserver:anonymous@gexperts.cvs.sourceforge.net:/cvsroot/gexperts. </tt>Pela <a href="http://gexperts.cvs.sourceforge.net/gexperts/">interface web</a> do repositório de CVS do projeto, descobri que nome do módulo é &#8220;gexperts&#8221;. Então é só apertar OK e esperar que todos os arquivos sejam baixados. Depois, sempre que quiser receber as atualizações feitas no projeto, é só clicar com o botão direito na pasta e utilizar a opção &#8220;Update&#8221; do TortoiseCVS.</p>
<h2>Passo 2: Compilando a DLL</h2>
<p>O GExperts vem com diferentes projetos para cada versão do Delphi. É só abrir o apropriado para a versão que você usa, e compilar. No meu caso, escolhi o GExpertsBDS2006.bdsproj, e gerei o arquivo GExpertsBDS2006.dll. Fácil. Se for para uso do dia-a-dia, desligue a opção para gerar informações de Debug, na aba Compiler das opções do projeto. Se essa opção ficar ligada, o GExperts vai enviar várias mensagens de depuração para uma janelinha de debug que ele cria na bandeja do sistema.</p>
<p>Se você quer testar o formatador de código fonte que mencionei anteriormente, basta adicionar os arquivos das pastas Src\Formatter, Src\Formatter\Common e Src\Formatter\Engine no projeto e recompilar.</p>
<h2>Passo 3: Instalando no Delphi</h2>
<p>Antes de instalar essa DLL que acabou de ser compilada no Delphi, recomendo copiá-la para outra pasta. Explico porquê: da próxima vez que você baixar atualizações e quiser compilar novamente, ela vai estar instalada e carregada pelo Delphi. E então, é claro, você não vai conseguir substituir um arquivo em uso, sendo necessário removê-la, compilar e instalar de novo. Assim, facilitamos esse trabalho no futuro.</p>
<p>Após copiar a DLL, temos que fazer manualmente um passo que o instalador do GExperts faria: atualizar a configuração do Delphi no registro para que ela seja carregada. Basta abrir o RegEdit, navega para HKEY_CURRENT_USER\Software\Borland\BDS\4.0\Experts substuindo BDS\4.0 pela sua versão do Delphi (da versão 7 e anteriores é Delphi\n.0, e para frente, BDS\n.0). BDS 4.0 é o Delphi 2006. Você pode criar a chave experts se ela não existir. Nesta chave crie uma nova entrada com o nome &#8220;GExperts&#8221; e no conteúdo coloque o caminho completo da DLL que foi compilada anteriormente.</p>
<p>Agora basta carregar o Delphi e aproveitar as novas funcionalidades.</p>
<p>Se você tem interesse em desenvolver experts para facilitar sua vida, não deixe de ler os FAQs de <a href="http://gexperts.org/devfaq.html">desenvolvimento do gexperts</a> e da <a href="http://gexperts.org/opentools/">Open Tools API</a>. E, é claro, futuros artigos aqui.</p>
<p><center>&copy; <a href="http://www.techtips.com.br">TechTips</a></center></p>]]></content:encoded>
			<wfw:commentRss>http://www.techtips.com.br/programacao/delphi/experts/compilando-seu-prprio-gexperts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Escrevendo um Expert para a IDE do Delphi</title>
		<link>http://www.techtips.com.br/programacao/delphi/experts/escrevendo-um-expert-para-a-ide-do-delphi/</link>
		<comments>http://www.techtips.com.br/programacao/delphi/experts/escrevendo-um-expert-para-a-ide-do-delphi/#comments</comments>
		<pubDate>Fri, 23 Feb 2007 20:10:52 +0000</pubDate>
		<dc:creator>Leonel Togniolli</dc:creator>
				<category><![CDATA[Experts]]></category>

		<guid isPermaLink="false">http://www.techtips.com.br/programacao/delphi/experts/escrevendo-um-expert-para-a-ide-do-delphi/</guid>
		<description><![CDATA[&#160; Já aconteceu de você ter uma idéia de algo que poderia ter na IDE do Delphi para facilitar sua vida? Uma opção é fazer uma solicitação e esperar que seja implementado. Uma outra opção é arregaçar a mangas e implementar você mesmo. A IDE do Delphi é bastante extensível. Existe uma API chamada Open [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>Já aconteceu de você ter uma idéia de algo que poderia ter na IDE do Delphi para facilitar sua vida? Uma opção é fazer uma solicitação e esperar que seja implementado. Uma outra opção é arregaçar a mangas e implementar você mesmo.</p>
<p>A IDE do Delphi é bastante extensível. Existe uma API chamada Open Tools API (OTA) que permite customizar vários pontos da IDE, integrando seu código em várias partes. Apesar de a documentação ser um pouco escassa e ser um pouco difícil de descobrir algumas coisas, é bem possível escrever experts para quase tudo na IDE.</p>
<p>Por enquanto, vou deixar a implementação do seu expert com você. Vou mostrar como passar&nbsp;pelo&nbsp;primeiro&nbsp;problema no meio do caminho, carregar seu expert integrado na IDE.</p>
<p>Um expert geralmente é uma BPL (pode ser uma DLL também, mas é um&nbsp;pouco mais complicado). Crie, então um novo package, salve um algum lugar e adicione uma unit nele.</p>
<p>A OTA é baseada em interfaces, e a maioria delas está definida em ToolsAPI.pas. Adicione então ToolsAPI no uses do seu package. Por padrão, se você compilar agora, o compilador não vai encontrar essa unit. Não saia procurando ela e alterando seu Library Path ou o Search Path do projeto &#8211; não é para você compilar essa unit &#8211; ela está dentro de DesignIDE.dcp. Vá no nó de Requires do project manager, clique com o direito e selecione Add Reference, e navegue até a pasta Lib dentro da instalação do seu Delphi, encontrando DesignIDE.dcp lá. Depois de adicionar essa referência, o projeto já compila corretamente encontrando ToolsApi sem problemas.</p>
<p>O Expert mais simples que podemos criar agora&nbsp;é chamado de &#8220;Wizard&#8221; pela OTA. Você pode abrir ToolsAPI.pas e procurar IOTAWizard lá para ver o que precisamos implementar para criar um Wizard:</p>
<blockquote><pre>  IOTAWizard = interface(IOTANotifier)
    ['{B75C0CE0-EEA6-11D1-9504-00608CCBF153}']
    { Expert UI strings }
    function GetIDString: string;
    function GetName: string;
    function GetState: TWizardState;

    { Launch the AddIn }
    procedure Execute;
  end;</pre>
</blockquote>
<p>As três primeiras funções devem ser implementadas para retornar um ID único para seu wizard, o nome dele, e o seu estado (que pode ser habilitado, assinalado, os dois ou nenhum). O quarto método que precisamos preencher é o Execute, que é onde vamos colocar nosso código para a ação vai acontecer realmente.</p>
<p>Não adianta muito ter um wizard se ele não aparecer em lugar algum. Vamos implementar a interface IOTAMenuWizard também, para que nosso wizard apareça no menu da IDE. Se você for dar uma olhada no ToolsAPI.pas, ele está declarado assim:</p>
<blockquote><pre>  IOTAMenuWizard = interface(IOTAWizard)
    ['{B75C0CE2-EEA6-11D1-9504-00608CCBF153}']
    function GetMenuText: string;
  end;</pre>
</blockquote>
<p>Nessa interface, só temos que implementar uma função que retorne o texto que vai aparecer no menu. A interface wizard é descendente de IOTANotifier. Para não precisarmos implementar mais métodos que não vamos usar por enquanto, vamos usar a implementação padrão dessa interface que o ToolsAPI inclui como base, o TNotifierObject. Minha implementação ficou assim:</p>
<blockquote><pre>uses
  Dialogs, ToolsAPI;

type
  TPrimeiroWizard = class(TNotifierObject, IOTAWizard, IOTAMenuWizard)
  public
    // IOTAWizard:
    function GetIDString: string;
    function GetName: string;
    function GetState: TWizardState;
    procedure Execute;
    // IOTAMenuWizard:
    function GetMenuText: string;
  end;

function TPrimeiroWizard.GetIDString: string;
begin
  Result := 'PrimeiroWizard';
end;

function TPrimeiroWizard.GetName: string;
begin
  Result := 'Primeiro Wizard';
end;

function TPrimeiroWizard.GetState: TWizardState;
begin
  Result := [wsEnabled];
end;

procedure TPrimeiroWizard.Execute;
begin
  ShowMessage('Primeiro Wizard!');
end;

function TPrimeiroWizard.GetMenuText: string;
begin
  Result := 'Primeiro Wizard';
end;</pre>
</blockquote>
<p>Vamos a implementação das duas interfaces, retornando as informações necessárias. Finalmente, precisamos registrar esse wizard para que possamos utilizá-lo. Vamos utilizar a seção de initialization da unit para isso:</p>
<blockquote><pre>initialization
  RegisterPackageWizard(TPrimeiroWizard.Create);</pre>
</blockquote>
<p>E pronto. Agora basta clicar com o direito na sua package dentro do Project Manager, selecionar Install. Se tudo deu certo, um menu com o caption &#8220;Primeiro Wizard&#8221; apareceu no item Help do Menu principal da IDE. Clicando nele, uma mensagem dizendo &#8220;Primeiro Wizard&#8221; aparece.</p>
<p>Partindo disso como modelo, é fácil implementar qualquer coisa que quiser agora dentro do Execute do seu expert. É&nbsp;claro, o menu Help não é o melhor lugar para&nbsp;ter um item de menu, e com certeza&nbsp;você quer acessar mais informações da IDE.&nbsp;Vamos fazer isso da próxima vez!&nbsp;</p>
<p><center>&copy; <a href="http://www.techtips.com.br">TechTips</a></center></p>]]></content:encoded>
			<wfw:commentRss>http://www.techtips.com.br/programacao/delphi/experts/escrevendo-um-expert-para-a-ide-do-delphi/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

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

