No desenvolvimento de aplicações, é frequentemente necessário criar formulários de forma dinâmica. Por exemplo, pode querer gerar um formulário de busca na hora, adaptado às necessidades do usuário. Em 4D, há duas abordagens principais para construir formulários dinâmicos: ou construir o formulário inteiro programaticamente ou adicionar objetos a um layout de formulário existente. Para a segunda opção, até agora, era possível duplicar objetos com OBJECT DUPLICATEe modificar a fonte de dados com OBJECT SET DATA SOURCEtudo usando uma abordagem clássica baseada em ponteiros.
Com 4D 20 R10, novos e poderosos comandos, OBJECT SET DATA SOURCE FORMULA e OBJECT Get data source formulapermitem aos desenvolvedores associar uma fórmula como fonte de dados de objetos de formulário. Além disso, pode atribuir fórmulas dinamicamente a propriedades chave da caixa de listagem com o comando LISTBOX SET PROPERTY como o item atual, a posição do item atual e os itens selecionados.
Isto abre caminho a uma abordagem mais moderna, flexível e legível, graças, nomeadamente, a expressões como Form.xx ou as classes.
Novos comandos para manipular a propriedade da fonte de dados
Foram adicionados dois novos comandos para modificar a propriedade da fonte de dados:
OBJECT SET DATA SOURCE FORMULA ( {* ;} object ; formula)
OBJECT Get data source formula ( {* ;} object) : formula
Exemplo 1: Atualizar a fórmula
Imaginemos que temos uma entrada de texto chamada “myInput” num formulário e queremos associar a sua fonte de dados à fórmula “Form.myText”.
$myFormula:=Formula(Form.myText)
OBJECT SET DATA SOURCE FORMULA (*; "myInput"; $myFormula)
Exemplo 2: Recuperar a fórmula
Para recuperar a fórmula associada a um objeto de formulário, como uma entrada de texto chamada “myInput”, pode simplesmente escrever:
$formula:=OBJECT Get data source formula(*; "myInput")
Estes novos comandos facilitam a criação de modelos de formulários genéricos e reutilizáveis que podem ser configurados dinamicamente.
Capacidades alargadas para ListBoxes
Essas propriedades são acessíveis usando as seguintes constantes com os comandos LISTBOX Get property e LISTBOX SET PROPERTY:
- lk current item expression
- lk current item pos expression
- lk selected items expression
Exemplo:
LISTBOX SET PROPERTY(*; "myListBox"; lk selected items expression; "Form.selectedItems")
Conclusão
Com OBJECT SET/GET DATA SOURCE FORMULA e as novas constantes de propriedade listbox, 4D fornece uma nova, elegante e poderosa maneira de construir interfaces dinâmicas.
Ao abraçar fórmulas e programação orientada a objetos, agora é possível criar formulários que são mais adaptáveis, mantidos e fáceis de ler.
