Se você programahá algum tempo, já deve ter passado por uma situação muito comum: em algum momento sentiu falta de alguma função em algum componente, seja ele nativo ou não!
Quando comecei a sentir a necessidade de funções em determinados componentes, aprendi a criar os meus próprios componentes!
Porém, será que realmente precisamos criar um componente novo para acrescentar poucas funções, muitas vezes métodos super simples?
O Class Helper é uma excelente solução! Como o próprio nome já diz, é um "ajudante de classe", traduzindo ao pé da letra!
Ele funciona como uma "biblioteca", que ao ser importada através do "uses", disponibiliza todos os métodos para uma determinada classe. O Compilador ao ver o Helper, acrescenta à classe referenciada as funções contidas no Helper.
Este recurso está disponível à partir da versão 2006 do Delphi.
E como eu descobri o Helper? Através de um método contido no tipo String, a função ToInteger(). Quando Atualizamos o delphi, percebi que haviam funções no tipo String, entre elas o método ToInteger. Foi aí que descobri esse mundo maravilhoso!
Então vamos à parte prática!
O helper pode ser criado tanto em uma unit separada, como na própria unit onde será chamado. Aí entra a sua organização. Eu particularmente gosto de criar unit's específicas com os helper's.
Como exemplo prático, vamos imaginar que temos um TEdit que receberá um texto, e precisamos alterar todas as iniciais de palavra para maiúsculas.
É algo simples de se fazer! Poderia ser uma função que retornasse o resultado, ou que alterasse diretamente no componente em específico, porém, temos a oportunidade de criar uma biblioteca para utilizarmos a função em qualquer TEdit e em qualquer projeto, chamando o método diretamente no componente.
Então criaremos nossa Unit, vou nomeá-la como "editLib.pas".
Abaixo disponibilizarei o código para que você possa copiar e testar:
unit editLib;interfaceuses /// Acrescentando todas as units necessárias. Não podemos esquecer de /// acrescentar a unit que contém a classe a qual faremos referência em /// nosso helper. /// Uma observação importante é que este exemplo fiz para FireMonkey. /// A unit que contém o TEdit para VCL é Vcl.StdCtrls FMX.Edit, System.SysUtils;type /// Criando o tipo TEditHelper, que será um Class Helper para a classe TEDIT. /// Sempre, após nomear nosso helper, informamos que é um Class Helper, e /// dizemos para qual classe ele servirá de apoio, que no nosso caso, é o /// TEdit. Isso fazemos através do "for", ou seja, nós estamos dizendo que /// estamos criando um Ajudante de Classe para o TEdit. TEditHelper = Class Helper for TEdit public /// Aqui podemos criar todos os métodos necessários para a nossa classe. /// Neste exemplo, criamos um método que coloca todas as iniciais de /// palavras contidas no texto em maiúsculo. procedure UpIniciais; End;implementation{ TEditHelper }procedure TEditHelper.UpIniciais;var vStr: String; // Variável auxiliar para a conversão do texto. i: Integer; // Contador para o loop que percorerá o texto.begin /// Limpando possíveis espaços no início e fim do texto. /// Lembrando que, aqui temos acesso a todas as funções e propriedades /// da classe a qual estamos criando o helper. A propriedade Text poderia /// ser chamada diretamente, mas coloquei "Self.Text" para melhor /// compreensão de que é como se estivéssemos dentro da classe TEdit. Self.Text:= Trim (Self.Text); /// Loop para copiar o texto em uma variável auxiliar, colocando as iniciais /// em maiúsculo. for i := 1 to Self.Text.Length do begin /// Verificando se o caracter é inicial de palavra if (i = 1) or ((i > 1) and (vStr[i-1] = ' ')) then /// Copiando o caracter em maiúsculo. vStr:= vStr + AnsiUpperCase(Self.Text[i]) else /// Copiando o caracter sem alteração. vStr:= vStr + Self.Text[i]; end; /// Devolvendo para o Edit o texto já com as iniciais em maiúsculo. Self.Text:= vStr;end;end.
Após a implementação do código do nosso helper, basta adicionarmos editLib na unit que contém o nosso TEdit, e a qualquer momento chamamos a função pelo próprio nome do TEdit.
Por exemplo: Edit1.UpIniciais; como mostra na imagem abaixo:
Você poderá acrescentar quantos métodos precisar ao seu Helper e com isso ter uma super biblioteca acrescentada à sua classe, de forma muito prática!
Gostou da dica? Conta aqui depois o resultado!