Por que eu devo ler este artigo:O presente artigo trata de fundamentar o LiveBindings, uma das grandes novidades apresentadas pelo Delphi XE2 e que se caracteriza por ser um mecanismo voltado à criação de associações entre objetos. Por se tratar de um tema abrangente, o foco deste trabalho será sobre seus principais conceitos, expostos então da teoria à prática. Diz-se abrangente pelo fato do LiveBindings ser suportado por linguagens diferentes (Delphi e C++), bibliotecas de componentes diferentes (VCL e FireMonkey) e plataformas diferentes (Windows, MacOS e iOS), todos relacionados à família XE2 da Embarcadero.

Para a criação de interfaces visuais que se conectam a dados, de forma mais dinâmica e responsiva, com o mínimo de esforço, em especial a objetos de negócio ou até mesmo criar vínculos entre controles visuais.

LiveBindings, FireMonkey e DataSnap Mobile Connectors são apenas algumas das várias novidades trazidas pela versão XE2 do Delphi. Sendo assim, um prévio estudo sobre cada uma delas se faz necessário para que o desenvolvedor se mantenha atualizado mediante ao que sua ferramenta de trabalho lhe provê em termos de recursos. Indo além, o aprofundamento em determinada novidade fica a cargo da necessidade e da disposição do profissional. Do ponto de vista do desenvolvimento de Software, a apresentação de uma nova tecnologia, produto ou recurso tem como início a exposição de seus conceitos envolvidos, sua pré-visualização de utilização e, finalmente sua utilização na prática. De forma a elucidar este cenário, o artigo se foca no LiveBindings, contextualizando-o de forma geral, da teoria à prática. Antecipadamente, podemos rapidamente defini-lo como sendo um novo recurso de Data-Binding (ligação de dados) suportado tanto pela tradicional VCL, como também pela nova plataforma FireMonkey.

O termo LiveBindings, se traduzido de forma livre para o português, tomará o significado de algo como “ligações ao vivo”, o que no mundo do desenvolvimento não quer dizer muita coisa. O único indício que deixa transparecer é seu vínculo com algum recurso de Binding, neste caso Data Binding. De forma geral, o Data Binding consiste numa técnica que estabelece a ligação entre fontes de informações, a fim de se manter uma sincronia de dados entre as mesmas. A grosso modo, no Delphi este cenário é visto desde suas primeiras versões, principalmente em aplicações VCL Forms envolvendo banco de dados, refletido através da relação de uso entre DataSets e controles Data-aware (ver Nota 1), os famosos componentes DB (TDBEdit, TDBText, TDBGrid, TDBNavigator, entre outros). De um modo prático, tomando como exemplo um TDBEdit, ao ligá-lo a um campo (TField) de um TClientDataSet por meio de um DataSource, automaticamente é estabelecida uma sincronia de dados entre eles. Dessa forma, os dados do campo são devidamente mostrados em tela, através do controle, bem como qualquer alteração sobre estes dados na UI é refletida no campo, caracterizando assim um Data Binding.

Nota: No Delphi, o termo Data-Aware Components é designado para definir os componentes capazes de utilizar dados de outro componente, tal como um descendente de DataSet, por meio de um DataSource. Como exemplo, o controle TDBComboBox da VCL, nada mais é do que um controle combo Data-Aware, bem como um TDBCheckBox é considerado um controle Data-Aware de seleção de valores.

Com o lançamento do Delphi XE2, a Embarcadero introduziu então um novo conceito relacionado a ligações de dados, resultando em um novo recurso denominado LiveBindings. Em síntese, este mecanismo permite que qualquer propriedade de um objeto qualquer seja associada a uma expressão. Neste caso essa expressão pode ser, por exemplo, uma mera propriedade de outro objeto, outra propriedade do mesmo objeto, ou ainda uma expressão complexa que envolva desde operadores a métodos. Por esta razão o LiveBindings torna-se único, podendo ser aplicado nas mais variadas situações, numa amplitude maior de classes e propriedades compatíveis. Tomando como exemplo novamente a VCL, numa situação clássica do uso do LiveBindings, podemos ter então a associação entre dois controles, do tipo TProgressBar (ProgressBar1) e TSpinEdit (SpinEdit1). Sendo mais específico, suponhamos que haja a necessidade de se vincular a propriedade Position do primeiro com a propriedade Value do segundo, fazendo com que o incremento ou decremento de valores no SpinEdit seja refletido diretamente na posição da barra de progresso. Anteriormente ao , o estabelecimento desta associação seria então refletida num processo todo manual, via código, tal como mostrado a seguir na Listagem 1.


  procedure TForm1.SpinEdit1Change(Sender: TObject);
  begin
     ProgressBar1.Position := SpinEdit1.Value;
  end;
Listagem 1. Mudança do ProgressBar através do evento OnChange

Já a partir do Delphi XE2, com a utilização de seu novo mecanismo de Binding, podemos estabelecer essa mesma associação de uma forma mais direta, tirando proveito de um recurso apropriado para o processo, conforme será visto adiante. Indo além da VCL, talvez o maior beneficiário dos recursos providos pelo LiveBindings seja o FireMonkey. Isso pode ser justificado essencialmente pelo fato de que a biblioteca de componentes do FireMonkey não traz controles Data-Aware tal como a VCL. Dessa forma, utiliza-se o mecanismo de LiveBindings para estabelecer suas devidas associações de dados envolvendo seus componentes e possíveis fontes de informações, tal como um ...

Quer ler esse conteúdo completo? Tenha acesso completo