Aba RTTI — Data-Binding com Objetos em Memória
Visualmente e na interação com o usuário final, um TTIEdit é idêntico a um TEdit comum. A mágica deles é totalmente arquitetural.
Para entender: os Data Controls (aba Data Controls) como TDBEdit servem para ligar um campo de texto diretamente a um campo de uma tabela no Firebird (via TDataSource), sem escrever código para mover o dado do banco para a tela. Os componentes RTTI fazem exatamente a mesma coisa, mas em vez de se conectarem a um banco de dados, eles se conectam a propriedades de classes/objetos em memória.
O Problema que o RTTI Resolve
-
Imagine que você criou uma classe no seu ERP para gerenciar as configurações da balança do PDV:
Se você fosse criar uma tela para o usuário editar isso com componentes da aba Standard, você teria que escrever:
TTIEdit, TTICheckBox, TTISpinEdit
-
São os equivalentes RTTI dos componentes comuns. Você os configura via Object Inspector apontando para o objeto e a propriedade que eles devem refletir.
Para usar o TMultiPropertyLink: É o componente "ponte" que liga vários componentes RTTI a um único objeto, parecido com o papel do
TDataSourcenos Data Controls. Ao trocar o objeto noTMultiPropertyLink, todos os componentes conectados a ele atualizam ao mesmo tempo.
TTIPropertyGrid — O Object Inspector no seu Sistema
-
Esta é a estrela absoluta da aba. Sabe o Object Inspector do próprio Lazarus (aquela janela onde você muda o
Name,WidtheColordos componentes durante o desenvolvimento)? OTTIPropertyGridé o Object Inspector — disponível para você colocar dentro do seu próprio sistema.Se você apontar qualquer objeto do seu sistema (uma nota fiscal, uma configuração, ou até um componente da própria tela) para a propriedade
TIObjectdesse grid, ele varre a classe, descobre sozinho todas as propriedadespublishedque ela tem, e monta o grid visual com as opções de edição corretas — tudo em tempo de execução.
Cenários Práticos em ERP
-
Telas de Configuração Universais
Em vez de desenhar uma aba gigante de configurações com dezenas de campos para cada módulo, você pode ter um único
TTIPropertyGridna tela. Conforme o usuário clica no menu (Fiscal, Impressão, Balcão, Certificado Digital), você simplesmente passa o respectivo Objeto de configuração para o Grid e ele redesenha a tela de edição sozinho. -
Padrão MVC/MVVM
Para arquiteturas mais modernas, onde as regras de negócio ficam estritamente em classes e não nos formulários, o RTTI cria a ponte visual perfeita sem sujar a classe de domínio com código de interface gráfica. Seus objetos de negócio permanecem puros e testáveis.
-
Ferramentas de Personalização pelo Usuário
Se você estiver criando uma ferramenta onde o próprio usuário pode montar telas ou mexer no layout do recibo, você usa o
TTIPropertyGridpara deixá-lo alterar as propriedades dos objetos (fontes, cores, tamanhos) visualmente — igual você faz na IDE do Lazarus durante o desenvolvimento.