Para aqueles que não conhecem o CnPack IDE Wizards, este é um plugin para Delphi/C++ Build/RAD Studio que trás um conjunto de ferramentas para melhorar a eficiência de desenvolvimento.
O changelog desde a última release trás as seguintes mudanças:
r891: [IDE] Add Support to RAD Studio 2011
r890: [Prefix Wizard] Fix a Conflict to TntFrame.
r589: [Procedure Toolbar] Add Saving and Restoring Size of Drop Down Box
r588: [IDE] Support Delphi 2011 Beta 15.0.3890.34076.
[Procedure Toolbar] Fix a Potential Exception when Clicking Location Buttons
r587: [IDE] Support Delphi 2011 Beta 15.0.3881.33894.
[Prefix Wizard] Change Rename Dialog BorderStyle to Sizable.
r586: [IDE] Support Delphi 2010 Beta 15.0.3875.33573.
[Source Highlight] Fix a Position Error when Wide-char-with-single-place Exists in BDS.
r585: [F2 Rename Identifier] Fix a Position Error when Unicode Char Exists in Delphi 2009 or Up.
r584: [IDE] Support Delphi 2011 Beta 3870 33544.
[Source Highlight] Fix a Position Error when Unicode Char Exists in Delphi 2009 or Up.
r583: [Source Highlight] Fix a Position Error for WideChar in Delphi 2009 or Above.
[CnDebugViewer] Fix a Searching Problem, Fix a Process Name Problem when new a Window.
r582: Add support to RAD Studio 2011 beta.
r581: [Source Highlight] Optimize Support to Anonymous Method.
r580: [Source Enhancement] Add Auto Quote Match Enter Function.
r579: [Wizards] Adjust Idle Interval to Keep Performance.
r578: [Tools] Change Tools Compiler to D7 to avoid False Trojan Warning.
r577: [Editor Toolbar] Decrease CPU Usage.
r576: [Editor Wizard] Add Zoom Font Functions.
[ASCII Chart] Fix an extension ASCII Display Problem.
r575: [Setup.exe] Try to Fix/Avoid Trojan Warning.
r574: [Replace Wizard] Add TRegExpr support.
r573: [Auto Input] Fix a little bug.
[Script Demo] Add RegExprReplace Script.
r572: [Feed Reader] Try to fix the problem of 0 size C file.
[Script Wizard] Add support for RegExpr.
r571: [Ascii Chart] Fix a painting bug under Win7.
[Project Backup] Fix a bug of backup path.
Eu utilizo esse plugin há pelo menos 2 anos e hoje ele já está totalmente integrado no dia-a-dia do desenvolvimento. Quando preciso trabalhar em uma IDE sem o CnWizards instalado, percebo como o RAD Studio tem muito espaço para evoluir.
Dentre as opções que o pacote possui algumas são versões melhoradas de recursos que o IDE do Delphi/C++ Builder já possui, algumas são inovações percebidas imediatamente após a instalação outras você vai descobrindo com o tempo, mas todas são de grande valia.
Devido ao grande número de ferramentas e opções de customização que esse add-in oferece é comum, de tempos em tempos, descubrir que já existe uma ferramenta para alguma tarefa que faço manualmente ou uma forma diferente e melhor de aproveitar o que já está sendo usado.
Vou dedicar esse post para descrever algumas notas dos principais recursos que esse maravilho pacote possui.
MessageBox Visual Designer
Penso que dificilmente, ao desenvolver um software, escapamos de ter que apresentar dialogs de notificações (Confirmação, Solicitação, Erro e Alerta).
As vezes utiliza-se o ShowMessage, as vezes o MessageBox do próprio delphi, outras vezes um componente de terceiro ou ainda uma solução própria.
Para auxiliar na hora de definir essas notificações, o CnWizards trás uma tool muito fácil e prática. Ela pode ser acessada através do menu CnPack ou via tecla de atalho, que por padrão vem configurada para CTRL + SHIFT + D.
Na tela você pode especificar todas as informações que o dialog irá exibir bem como visualizar o resultado através do botão Preview.
No lado direito há um painel (Return Value) que pode ser marcado e, assim, especificar que tais valores de retorno serão tratados. Assim, ao confirmar, será gerado o código fonte para a apresentação do dialog e também para o tratamento das opções de retorno.
Há também a aba Settings que trás algumas opções que definem como o código fonte deve ser gerado.
Propery Editor
String Caption Editor: Quando ativado, a propriedade "Caption" dos componentes é associado com um editor de texto (comum a outras propriedades do tipo string).
OBS: Nem todas as propriedades Caption de todos os componentes serão associados a esse editor.
Hint Editor: Esse editor é acionado através da propriedade Hint dos componentes visuais. Ele facilita bastante na hora de definir o hint que será exibido o ballon e o que será exibido na barra de status.
String List Editor: Por padrão o Delphi possui um editor default para as propriedades do tipo TStrings. Quando o editor String List do CnWizards está habilitado ele substitui o editor padrão pelo apresentado abaixo.
Esse editor é muito semelhante ao utilizado na propriedades Caption. A diferença é a presença do botão Code Editor, no lado direito.
Filename Editor: Esse editor associa um dialog de localização arquivo às propriedades cujo nome é "Filename".
Esse dialog pode ser acessado através do botão "..." situado à direita da propriedade (no Object Inspector).
Constraint Editor: Exibe os valores de cada uma das propriedades da classe TSizeConstraints diretamente ao lado do nome da propriedade, no object inspector. Evitando ter que expandir tal propriedade para conhecer os valores.
Outra ferramenta bastante prática é o editor associado à TSizeConstraints (pressione o botão "..." apresentado na imagem acima ou dê um duplo clique sobre a propriedade Constraints).
Esse dialog permite mais facilmente utilizar as dimensões atuais do componente para definir os limites de sua dimensão.
Inicialmente não ficou muito claro a vantagem de se usar dialog, já que eu poderia simplesmente copiar o valor das propriedades Height e Widht. Entretanto depois de algumas vezes que você utiliza esse editor, percebe-se que é mais fácil do que utilizar ctrl + c/ctrl + v.
Scrollbar Editor: Para as propriedades que representam as barras de scroll (vertical e horizontal), são apresentados os principais itens de sua configuração ao lado do nome da propriedade, evitando que seja necessário expandi-la para verificar.
Os itens de configurações que são exibidos, como pode ser visto na imagem abaixo, são: Visible, Tranking, Range e Position.
Font Editor: Da mesma forma que o editor do ScrollBar, não é preciso expandir as propriedades do tipo TFont para visualizar sua configuração. Isso proporciona pequenas economias de tempo em etapas de design e manutenção dos formulários.
Aling Editor: Este proporciona um pequeno incremento visual na hora de definir o tipo de alinhamento do componente, apresentando uma imagem associativa.
Component Name Editor: Esse editor está relacionado com um dos recursos mais significativos do CnWizards, que é a padronização dos prefixos utilizados nos nomes dos componentes.
Esse editor associa o dialog apresentado abaixo à propriedade "Name" dos componentes, facilitando a tarefa de atribuição do nome dos componentes.
O dialog irá utilizar o prefixo que foi anteriormente definido para o componente e irá sugerir um novo nome, caso este não esteja com o prefixo correto.
No caso de um prefixo ainda não ter sido definido para o componente selecionado, um outro dialog será apresentando antes solicitando tal informação.
Form Enhancements
Logo após a instalação você já consegue visualizar muitas mudanças tanto visuais quanto na escrita de código.
O CnWizard acrescenta duas barras de ferramentas no IDE. Uma para quando o ID está em modo de design e outro para quando o IDE está em modo de edição.
As opções abaixo referem-se às opções oferecidas para o modo de design.
Show/Hide Components: Em formulários com muitos componentes não visuais, essa opção é de muita utilidade na hora de realizar alguma manutenção. Como o próprio título sugere, a tool permite ocultar os componentes não visuais dos formulários evitando ter que arrastá-los de um campo para outro para poder acessar os demais componentes do formulário.
Display TabOrder: Quando essa opção está ativa, é apresentado um pequeno retângulo em cada um dos componentes com o respectivo valor da propriedade TabOrder. Assim, visualmente consegue-se identificar se a ordem de passagem de focus está ou não de acordo com o esperado.
Auto Set Update TabOrder in the Form: Outra tool bem útil durante a etapa de design. Com ela a propriedade TabOrder dos componentes é automaticamente setada conforme sua posição na tela.
Auto Update TabOrder after Componentes Moved: O próprio título da tool já resumo sua função. Quando ativa, o TabOrder é reajustado automaticamente sempre que um componente é movido
Locate Components in Designer: Localizado bem a direita da barra de ferramentas do CnWizards, essa ferramenta é de grande ajuda quando temos formulários com um número de componentes expressivo. Sua interface é simples e intuitiva.
Conforme é digitado no campo Find, a tool remove as entradas que não contém o texto digitado. Ao pressionar ENTER, ou o botão bem da esquerda - Locate and Select Component, o componente que está selecionado na listagem será automaticamente selecionado no formulário.
Caso o componente a ser localizado está incluso dentro de, por exemplo, um TPageControl cuja aba não está visível a tool irá automaticamente alterar a respectiva aba como ativa e selecionar o componente desejado. Entretanto, em pacotes de componentes de terceiros esse comportamento não foi verificado, ficando visível apenas as bordas de seleção na área do form onde o componente está localizado.
Mesmo assim é uma mão na roda!
Arrange the Non-Visual Components: Quando o formulário possui componentes não-visuais espalhados pelos cantos do form, uma ótima forma de organizá-los é através dessa tool. Ela apresenta um tela com opções que determinam como esses componentes devem ser alinhados e organizados dentro do form.
Se houver componentes, não-visuais, selecionados, a reorganização será aplicada somente sobre eles. Caso contrário, todos os componentes não-visuais serão movidos conforme as configurações definidas na tela acima.
Converte Selected Components to Creating Code: Logo que deparei-me com essa tool, de imediato pensei: "está aí o recurso que eu sempre tive vontade de implementar".
Como pode ser visto na imagem abaixo, a tool apresenta um dialog com o código fonte para o status atual do componente selecionado. O interessante é que só é gerado a respectiva linha de código para as propriedades que foram realmente modificadas.
A imagem abaixo mostra um exemplo utilizando um componente TButton e o código gerado está no formato C/C++ porque a tool foi utilizada em um projeto do C++ Builder. Se for um projeto Delphi, o código fonte gerado estará no padrão Object Pascal.
Um recurso extremamente útil quando há a necessidade de fazer várias alterações comportamentais/visuais nos componentes em runtime.
Quando se trata de alterar as posições dos componentes, é comum acrescentar as linhas de código com atribuições de valores aproximados para as respectivas propriedades e avaliar o resultado visualmente, ou seja, buildando e executando o software. Então se o resultado não foi satisfatório, faz-se pequenos ajustes nos valores das propriedades e novamente o sistema é buildado e executado.
Muitas vezes esse processo demanda bastante tempo. Já com essa tool, você visualmente altera o formulário para o "estado final" e gera o código dessa alteração, bastando praticamente colar as linhas dentro do método/evento desejado. Simples, não?!
Mas esse é apenas um dos muitos exemplos de uso prático desse recurso.
Copy Selected Component's Name to Clipboard: Impressionante como um recurso tão simples como esse pode facilitar tanto a vida do programador.
Esse recurso está associado com uma prática muito comum durante o designer/implementação dos formulários, que é procurar pelo componente desejado no formulário para obter seu nome.
Durante a implementação de algum método ou evento, nem sempre lembramos dos nomes dos componentes. Assim, é comum mudar o modo de exibição do IDE para design; localizar o componente a qual queremos referencia-lo; clicar no object inspector; localizar a propriedade "name"; pressionar um CTRL + C para copiar o nome do componente; voltarmos ao modo de edição; e pressionar CTRL + V.
O que essa tool faz é muito simples, apenas coloca o nome do(s) componente(s) selecionado(s) na área de transferência e retorna ao modo de edição, o que economiza alguns click de mouse e pressionamento de teclas.
Pode parecer pouco, mas quando você repete esses passos várias vezes tenho certeza que irá entender o benefício dessa tool.
Outra ponto bastante interessante é que você não precisa repetir o procedimento para cada componente, é possível você selecionar todos os componentes desejados e só então utilizar essa tool. Ela irá colocar na área de transferência o nome de cada componente acrescentando uma linha em branco entre eles.
Por padrão, a tecla de atalho CTRL + ALT + N já vem atribuída para esse recurso, que facilita ainda mais seu uso.
Select Current Form in Current Designer: Aqui temos outro recurso bem simples, mas que proporciona um melhor conforto ao lidar com o formulários. Quando selecionado ele muda o focus de design para o formulário.
Pode parecer pouco útil esse recurso e que bastaria, por exemplo, pressionar SHIFT e clicar no mesmo componente que já está selecionado, mas ao pensar em todas as vezes que acidentalmente essa ação resultou no redimencionamento ou na alteração de posição do componente, essa alternativa passar a ser bem útil.
Basta começar a usá-la que depois de um tempo você sentirá falta quando estiver trabalhando em um IDE sem esse plugin.
Lock Controls: Essa tool, quando ativada, impede o usuário de alterar tanto a posição quanto as dimensões dos componentes do formulário em focus. Em outras palavras, os componentes ficam bloqueados sendo possível somente selecioná-los.
Sem sombra de dúvida um recurso muito útil (ou você nunca deslocou um determinado componente do formulário quando na verdade só queria selecioná-lo?!).
Toggle Designer Guideline: Guidelines são aquelas linhas que ajudam no alinhamento dos componentes quando se está movendo-os. O guideline funciona como recurso "magnetic" do winamp, mas levando em consideração a posição dos outros componentes do formulário.
Mas se esse recurso não é útil ou atrapalha, você tem a opção de desabilitá-lo utilizando esse botão.
Atalhos para Alinhamento: Aqui são várias opções, mais especificamente 6, que ajudam muito tem toda a fase de criação dos formulários ou mesmo alteração/manutenção.
Essas opções ficam disponíveis quando há mais do que um componente selecionado e são destinados para realizar um determinado tipo de alinhamento. Por exemplo, o primeiro deles irá alinhar os componentes à esquerda, o segundo irá alinha-los à direita.
Note que a imagem de acada botão é bastante intuitiva e, na dúvida, basta posicionar o cursor do mouse sob eles que o hint irá descrevê-los.
Um ponto importante é que essas opções usam o primeiro componente que foi selecionado como base referencial para o alinhamento. Por exemplo, no caso do alinhamento à esquerda todos os componentes selecionados assumirão a posição esquerda (propriedade Left) do primeiro componente.
Atalhos para Espaçamento: Aqui temos mais 6 opções que também trabalham no possicionamento dos componentes, mas destinados para facilitar o trabalhano no quesito espaçamento.
Também muito intuitivos. Por exemplo, o segundo botão irá reposicionar verticalmente todos os componentes distribuindo o espaço em branco entre eles. Essa opção fica disponível quando há mais do que dois componentes selecionados e tanto o componente mais no topo quanto o mais na base do formulário não são reposicionados, mas sim os que estão entre eles.
Da mesma forma que as opções de alinhamento, há três botões que trabalham com premissa horizontal e três que trabalham com a premissa vertical.
Atalhos para Resize: São atalhos que trabalham com as propriedades Heigh e Width dos componentes. Alguns dessas opções só ficam habilitadas quando há mais do que um componente selecionado.
São igualmente simples, e dispensa maiores comentários.
Atalhos para Posicionamento: Aqui temos mais algumas opções que agilizam a tarefa de alinhar componentes.
Bastam alguns poucos clicks para entender como eles funcionam.
Editor Enhancements
Guide Lines
Esse melhoramento faz com que o IDE destaque e identifique individualmente os blocos de códigos através de cores e linhas de conexão.
As statments (if, try, for, while, begin-end, ...) que delimitam os blocos de códigos são destacadas em cores diferentes dependendo de seu nível. Além de facilitar a identificação dos trechos de código, em procedures grandes esse recurso proporciona uma segunda funcionalidade que é identificar se um bloco está ou não dentro de outro bloco sem precisar deslocar-se.O recurso se adapta facilmente aos diversos padrões de formatação de código fonte.
Highlight Matched Brackets: Propõem uma melhora na identificação dos limites dos parênteses "()" e dos conchetes "[]" destacondo-os em cores diferenciadas.
Um exemplo prático do quão útil essa melhoria representa é em linhas de código que possuem expressões matemáticas com vários parênteses ou então em condições lógicas mais complexas.
Auto Imput Matched Bracket: Insere automaticamente um fecha conchetes ("]") quando você digita "[". O mesmo ocorre com o parênteses e chaves ("{}")..
Extented Home Key: Quando pressionamos a tecla HOME no modo de edição do IDE o cursor é deslocado para a primeira coluna da linha corrente. Com essa opção ativada, a tecla HOME passa a ter uma segunda função quando é pressionado pela segunda vez consecutiva que é posicionar o cursor no primeiro caracter válido.
Basicamente ele irá ignorar todos os espaços em branco situados na esquerda da linha.
Auto add "end" when pressing ENTER after "begin": Durante a escrita de código fonte, ao digitarmos "begin" e pressionarmos a tecla ENTER, esse recurso irá automaticamente acrescentar um "end" na linha abaixo
Tab/Shift + Tab to Ident/Unindent Selected Block: Por padrão o Delphi vem configurado para usar as combinações CTRL + I e CTRL + U para identar/retroceder identação do um bloco de código que está selecionado.
O CnWizard reconfigura essa função atribuindo essa tarefa de identação para as respectivas combinações TAB/SHIFT + TAB, as quais são mais largamente utilizadas.
F3/Shift + F3 to search the selected text: A tecla F3 passa a ser utilizada para procurar a próxima ocorrência da última pesquisa, enquanto que Shift + F3 tenta encontrar a ocorrência imediatamente acima da posição corrente do cursor.
Show Total Lines Count: Exibe o canto inferior esquerdo do editor o total de linhas da atual unit aberta. Evitando ter que deslocar-se até o final do arquivo para obter o número total de linhas que a unit possui.
Change var name: Um das opções de refacting que o RAD Studio trás é o "Rename Variable" que, ao ativá-lo, apresenta um dialog solicitando o novo nome e, após, exibe um tool panel com todas as ocorrências encontradas onde o usuário pode optar por continuar o refacturing.
Uma versão melhorada desse recurso está incluso no CnWizards e pode ser acessado pressionando a tecla F2 sobre a variável/método a qual se deseja renomear. Mas essa tecla de atalho não está limitada a apenas ao editor de código.
Em mode de design o pressionamento da tecla F2 irá exibir um dialog solicitando o novo nome do componente que está selecionado.
Tools
Uses Cleaner
Quando estamos na etapa de criação/design de formulários é normal fazermos algumas combinações e testes para encontrar os componentes mais adequados para a solução em questão. Nesse processo costuma-se acrescentar, remover e substituirmos alguns componentes por outros mais adequados.
Os componentes novos quase sempre acrescentam novas entradas de units na cláusula uses quando são dropados no form pela primeira vez. No entanto, quando removemos ou substituimos esses componentes do formulário, o Delphi não remove as respectivas units da cláusula uses e, dependendo da frenquência com que é feito essa ação, podemos chegar a ter várias referências desnecessárias.
O simples fato de instalarmos uma versão mais recente de algum pacote de componentes, por exemplo, pode tornar a referência de algumas units obsoletas.
A função dessa tool tem o objetivo justamente de fazer uma limpeza na cláusula uses, removendo todas as entradas desnecessárias.
Comments Cropper
Uma ótima ferramenta quando a intenção é distribuir/publicar código fonte.
Essa tool é um assistente destinado, principalmente, à eliminação de comentários do código fonte. Além disso o dialog trás opções bem interessantes como a eliminação de linhas em brancos duplicadas e remoção de TODOs.
A range de ação não necessariamente se aplica a apenas a corrente unit, é possível extender para até um diretório.
MSDN Help Wizard
Permite de forma prática e ágil realizar pesquisas no help MSDN, da Microsoft.
A tool disponibiliza dois atalhos. Um deles é o MSDN Toolbar (Shift + F1) que permite inserir palavras de pesquisa e, ao ser pressionado ENTER ou o botão search, é aberto no IDE a página do MSDN exibindo o resultado da pesquisa. O outro atalho, MSDN Help (Alt + F1), apenas abre no IDE a página de pesquisa do MSDN.
O MSDN Toolbar também armazena o histórico de pesquisas e pode ter o número máximo de entradas de log configurado.
Copy as HTML Format
Pense em todas as vezes que, por exemplo, ao redigir um email você copiou um trecho de código fonte e depois ficou vários minutos apenas colorindo as palavras reservadas e outros identificadores e símbolos para imitar a highlight syntaxe do Delphi.
Bom, agora não é mais preciso gastar um tempo preciso para essa tarefa. Através dessa tool o texto selecionado é posto na área de transferência incluindo também a formatação.
O CnWizard acrescenta um item no menu de contexto que é exibido em modo de edição e a imagem acima mostra onde essa opção pode ser encontrada.
Observe que muitas outras opções estão disponíveis e vale cada segundo de tempo investido para conhecer esses recursos.
Source Statistics
Coletar informações estatísticas é a proposta dessa tool.
Ao ser acessada (CnPack -> Source Statistics) um dialog semelhante ao da imagem abaixo é apresentado solicitando o ranger de arquivos a serem pesquisados.
Ao pressionar o botão "Calculate", será apresentado um dialog com informações básicas de cada unit ou a soma delas, no caso de pertencer a um projeto.
Source Templates
Particularmente utilizo muito esse recurso e tem se mostrado de extretamente útil.
O Source Templates é semelhante ao Live Templates do Delphi. No entanto ele não permite a edição de campos diretamente no editor. Em vez disso, é apresentado um dialog solicitando o conteúdo de cada um desses campos definidos no template.
O CnWizard trás um editor para gerenciar todos os templates definidos e permite, inclusive, associar uma tecla de atalho para cada template.
Um diferencial no Source Templates é o número de customizações e informações dinâmicas que se pode utilizar na criação dos template.
Na imagem acima também pode-se observar a definição de um template que utilizo para a geração do cabeçalhos de comentários nos métodos.
A quantidade de recursos utilizados no script acima é pequena, mas o suficiente para entender o que tudo se pode fazer com essa tool.
Quando ativado um dialog, igual ao apresentado abaixo, é listando todos os campos definidos no template com a opção de definir um valor/texto.
De forma geral, vejo essa tool como uma evolução do Live Template do Delphi.
Code Editor Wizard
Aqui temos um conjunto rico de opções que podemos utilizar para auxiliar as tarefas de codificação, documentação, edição, investigação, code review, ...
Cada item do menu apresentando na imagem abaixo representa um pequena ferramenta.
Vou deixar por sua conta a prazerosa tarefa de descobrir o benefício que cada um desses itens têm a oferecer.
Replace in Files
Até hoje não entendi a razão do Delphi não trazer uma ferramenta de substituição de texto que se extenda para além do arquivo corrente.
Um exemplo de uso prático é a substituição do nome de um classe, variável ou definição que é utilizado em vários arquivos. Na verdade esse é apenas um exemplo, há muitas maneiras úteis de se utilizar batch file replace.
Prefix Wizard
Em ambientes de trabalho que utilizam ferramentas de desenvolvimento baseadas em componentes, é clássico e certo a discussão em torno da padronização de prefixos para os componentes.
O que essa ferramenta faz é gerenciar a lista de prefixos de seus respectivos componentes e incentivar o desenvolvedor a adotá-los.
Toda vez que um componente é dropado no formulário, um dialog é apresentado solicitando o nome do componente. Entrentanto o próprio CnWizard já faz uma sugestão de nome acrescentando o prefixo estipulado para aquele componente.
No caso de um prefixo ainda não ter sido definido, um outro dialog é apresentado requisitando tal informação.
A imagem abaixo apresenta a tela de configuração dessa ferramenta (observe o número de customizações disponíveis).
Mas essa tool ainda reserva uma opção a mais que é o compartilhamento da lista de prefixo.
Ela permite definir a localização do arquivo na qual essas opções e a lista dos prefixos serão armazenadas, permitindo que outras estações de trabalho utilizem as mesmas configurações.
No caso de um estação acrescentar ou modificar alguma opção, imediatamente a mudança fica visível para os demais.
IDE Config Backup/Restore Tool
Pense em todas as vezes que você instalou ou reinstalou o Delphi/C++ Builder e passou um bom tempo reconfigurando o IDE para assumir a mesma condição anterior. Ou pior, depois de muito tempo descobre que esquecei de copiar um template, ou outro recursos qualquer.
É justamente para sanar esse problema que o CnWizard trás uma ferramenta capaz de fazer backup e restauração do IDE.
Conclusão
O que foi apresentado nesse artigo é uma parcela muito pequena da quantidade de ferramentas que esse pacote oferece.
O potencial de desenvolvimento que o CnPack proporciona é imenso tanto é que mesmo após 2 anos, e durante a escrita desse post, descobrir recursos que não haviam sido notados antes.
Para aqueles que desejam ler um pouquinho mais sobre os demais melhoramentos, eu indico esse documento: http://www.intitec.com/varios/Delphi_al_limite_2009.pdf
São nada menos do que 294 páginas!