Artigo Clube Delphi 109 - Curso de Delphi Prism – Parte 2

Artigo da Revista Clube Delphi Edição 109.

Esse artigo faz parte da revista Clube Delphi Edição 109. Clique aqui para ler todos os artigos desta edição

Curso de Delphi Prism – Parte 2

Novidades da Linguagem – Métodos Anônimos e Delegates

 

         Na primeira parte deste curso, vimos um pouco da história do suporte do Delphi ao .NET Framework. Examinamos o que considero serem as principais novidades da linguagem do Prism, como variáveis in-line (onde você pode declarar variáveis e objetos dentro do código, e não só na sessão var) e também o recurso de type-inference, onde é possível omitir o tipo da variável, usando mesmo assim, objetos fortemente tipados. Também vimos que é possível inicializar variáveis locais e usar type-inference na sessão var, sem recorrer a recursos não muito atraentes à programação orientada a objetos.

         Neste artigo, vamos conhecer os métodos anônimos, que como o próprio nome do recurso sugere, são métodos que não têm nome. Esse é um recurso que possui uma íntima relação com eventos (e delegates, visto também neste artigo). Novamente peço para que você abra sua mente, deixe de ser um seguidor fiel do Niklaus Wirth e dê um passo rumo ao futuro.

 

Métodos Anônimos

Como de costume, para entendermos o presente e futuro, vamos analisar o passado, como funcionavam as coisas no mundo Delphi 7 Win32.

Em um formulário TForm do Delphi, quando adicionamos um manipulador para um evento de um controle de tela (Button, Edit, DBGrid), ou mesmo um componente não-visual (ClientDataSet, Timer, SQLConnection), estamos nada mais nada menos que apontando uma propriedade para um método. De fato, um evento é ponteiro para um método de uma classe, e também tem um tipo, como TNotifyEvent, principal tipo de evento da VCL do Delphi.

Por exemplo, na classe TControl, encontramos a definição do evento OnClick, que serve de base para muitas outras classes que herdam o evento, como um TButton. Observe o código da Listagem 1. A declaração do evento funciona exatamente como uma propriedade normal, possui uma variável privada que é mapeada por métodos Get e Set. Só que, ao invés de atribuirmos um valor para essa propriedade, como um objeto, uma string, um inteiro, apontamos para um método, que no Win32, obrigatoriamente deve ser um método de uma classe, functions rotinas e procedures fora desse escopo não funcionam (no Delphi for .NET do BDS funciona, pois units viram classes nos bastidores).

 

Listagem 1. Declaração do evento OnClick em TControl

TControl = class(TComponent)

...

FOnClick: TNotifyEvent;

...

property OnClick: TNotifyEvent

read FOnClick write FOnClick stored IsOnClickStored;

 

         Se colocarmos um " [...] continue lendo...

Artigos relacionados