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:
Agora, adicionaremos nosso componente TCalendarEdit e o denominaremos de CEAGENDA: