Uma das grandes novidades do Delphi XE2 é a implantação do conceito de Live Bindings (Ligações ao vivo). Este método que está disponível tanto em VCL quanto em Firemonkey, torna as propriedades dos componentes vivas e conscientes e disponíveis para utilização em qualquer outro componente. Essas ligações podem ser feitas de forma unidirecional ou bi-direcional de leitura / gravação através da utilização de expressões (Expressions).

• Cada ligação consiste em quatro aspectos:

     Ø  Objeto de Origem - este pode ser um Field de um Data Source  ou uma variável de formulário ou componente;

     Ø   Expressão de origem – Consiste em uma string que pode ser editado em tempo de execução.

     Ø  Objeto de Controle - esse é o objeto de destino que você está ligado.

     Ø  Expressão de controle – Consiste em uma string que permite formatar os dados com destino a exibição. Por exemplo, você deseja que o nome da cor selecionada passe diretamente a um componente da classe TLabel sem adição de código.

Todas as ligações são armazenadas em TBindingsList, o qual permite que você, também, registre métodos disponíveis para ser chamado a partir das expressões. O motor de avaliação da expressão também acessa o RTTI.

Faz-se necessário definir um escopo para a ligação e isso pode ser feito automaticamente usando um TBindScope ou TBindScopeDB ( caso queira se vincular a um TDataSource).

O tão conhecido TDBNavigator da antiga VCL  foi substituído pelo TBindNavigator que é ligado a um TBindScopeDB ou um TBindScope.

LiveBindings introduz novas oportunidades maravilhosas e versáteis (Por exemplo, você pode ligar quaisquer propriedades de componentes e até mesmo  pontos em um modelo 3D), entretanto introduz um potencial significativo de erros de execução com as expressões, pois elas não fazem mais parte do mecanismo de sintaxe, compilador e particularmente, se você alterar o nome de um controle ou variável durante um “refactoring”  e se esquecer de mudá-lo dentro da expressão, ou simplesmente fazer um erro de digitação, você não vai ter um erro do compilador, mas potencialmente terá um erro mais difícil de detectar , que pode ou não criar uma exceção.

Para criar um LiveBinding em um controle de formulário, basta clicar sobre a propriedade LiveBindings do controle e você terá a opção de criar uma manualmente ou escolhendo "Link para Campo DB", que irá automaticamente colocar o Componentes LiveBinding no formulário, e serão exibidos  todos TDatasources e seus campos para que você selecione um campo para ligar.

A criação do conceito de LiveBindings é fantástico. Na linguagem comum significa que você pode passar as propriedades de qualquer componente para qualquer componente.

 Vamos agora, ver um exemplo de como criar uma conexão LiveBinding usando um componente da classe TCalendarEdit:

Primeiro, precisamos criar uma conexão com o banco de dados. No nosso exemplo, estaremos utilizando uma conexão direta de um componente TClientDataSet com um arquivo XML. O ClientDataSet denominamos de CDSAGENDA e o colocamos dentro de um Data Módulo que denominamos de DM:



       Dentro de nosso formulário principal precisaremos adicionar dois novos componentes:

    .     TDataSource:
Ø  Name: DSAGENDA;
Ø  Dataset: DM.CDSAGENDA; (Declare em Uses: uDM).

·     TBindScopeDB:
  Ø  Data Source: DSAGENDA;
Ø  Name: BSDBAGENDA;


      Agora, adicionaremos nosso componente TCalendarEdit e o denominaremos de CEAGENDA:

      No Object Inspector localizaremos a propriedade LiveBindings e fazemos um link para o Field do DB:



      E apontamos para o Field DATA:


      Esse Processo substitui a conexão com o famoso componente Data Source que conhecemos da VCL e pode ser repetido em diversos componentes.
      Teste o mesmo procedimento com outros componentes como TLabel, TEdit, TComboEdit etc.

      Bom trabalho e até o próximo artigo!
Rafael Marins Ribeiro
Engenheiro de Softwares