Árvore de páginas

Tecnologia DDK GUI (Smarts)


Visão Geral

Otimização de Programas

Os programas construídos a partir da tecnologia DDK GUI (Smarts) utilizam o conceito de Smarts Objects do Progress. Dessa forma, um programa é composto de vários outros Smarts Objects (programas). Não é possível movimentar objetos de um Smart Object para outro. Dessa forma, existem limitações para eventos de arrastar e movimentar objetos, entre outras propriedades.


Descrição

Inserção de Objetos Dinâmicos com Atributo de Extensão

Para objetos dinâmicos, sempre é gravado internamente o nome do Objeto Pai, que é o nome da “frame” onde o objeto foi instanciado.

Limitações:

Para DDK GUI (Smarts) não é possível criar objetos dinâmicos que necessitam de tabela de extensão em frames que não possuem tabelas relacionadas. Por exemplo: frame do container – Smarts.

Em alguns casos (principalmente em programas com folders) existe dificuldade no sentido de se verificar qual o tamanho da frame para instanciar o objeto na mesma).

Motivo:

Não existem eventos disponíveis para tratar manipulação de registros nesses objetos (o rowid da tabela sempre é ?).

Solução:

Instanciar o objeto na frame correta. Para verificar o tamanho da frame, pode-se modificar a cor de fundo da frame. Dessa forma, é possível visualizar sua dimensão exata.

Importante:

Dica -  Algumas frames (principalmente em programas que possuem páginas) não possuem toda a extensão aparente na tela. No programa cd0901, por exemplo, na página Saldo Inicial existem alguns campos e um espaço abaixo.

Para verificar a dimensão exata da frame, é necessário selecionar o objeto frame dessa tela (pode ser selecionado no espaço entre os dois retângulos, ou redimensionar o retângulo para clicar na frame). Após selecionada, alterar a propriedade cor de fundo, para uma cor que permita a visualização de toda a extensão da frame.

Nota:

Na área da barra de Ferramentas também não é possível inserir objetos dinâmicos que possuem atributos de extensão, pois essa frame não possui tabela associada.

Com a cor alterada, é possível verificar a real dimensão da frame. No espaço abaixo da frame não é possível adicionar objetos dinâmicos com atributos de extensão, pois aquela área em específico não trata a tabela relacionada do programa, impossibilitando criar tabela/atributo de extensão para a mesma. Ao tentar criar um objeto do tipo campo nesse espaço fora da frame, ocorre o seguinte erro:

"Frame não possui tabela associada: Você não pode criar um Fill-In numa frame que não possua tabela associada"

Eliminação de Registros para Objetos Dinâmicos (Banco Repositório)

Para os programas desenvolvidos em tecnologia DDK GUI (Smarts), a sincronização entre a tabela e a tabela de extensão (utilizada no tratamento de objetos dinâmicos que possuem atributo em tabela de extensão) no evento de eliminação de registro é feita no programa principal do procedimento.

Exemplo: Implantação de Documentos – CR0501

O novo atributo foi criado para o programa CR0501. Por ser um cadastro Pai x Filho, o cadastro Pai é efetuado por meio de outro programa – CR0501A. Dessa forma, é necessário criá-lo também no programa CR0501A (com as mesmas definições de dicionário de dados – nome, tipo de dado, formato etc).

O sincronismo entre a eliminação de um registro da tabela e da tabela de extensão é feito no programa principal – CR0501. O evento de eliminação faz parte do programa CR0501. Dessa forma, se o atributo fosse criado apenas no CR0501A (onde é feita a inserção de registros), quando fosse eliminado um registro da tabela ele não eliminaria o registro da tabela de extensão.

Essa é apenas uma das formas em que pode ocorrer erro de sincronia entre as tabelas. Veja mais detalhes na descrição da Função Sincronizador Banco Repositório (SO0707).

Objetos Dinâmicos Relacionados a Browse

Para programas das tecnologias DDK GUI (Smarts) e DDK GUI 2000 (Thin) é possível adicionar objetos dinâmicos relacionados a browse. Para isso, basta adicionar um novo objeto na mesma frame em que se encontra o browse. Dessa forma, toda vez que um browse for manipulado (selecionar um registro, abertura de query) o objeto dinâmico é atualizado conforme o registro corrente. Para a utilização completa é necessário criar o objeto dinâmico no programa principal e nos programas de incluir/modificar.

Coerência nas Otimizações

Em algumas situações, é necessária uma coerência por parte do usuário Administrador para não modificar algumas propriedades em determinados programas.
Exemplo:

  • Inicialização de campos: essa propriedade não tem efeito e não deve ser utilizada em objetos de uma tela de consulta, exceto quando utilizada em objetos dinâmicos do tipo radio, caixa de seleção e caixa de checagem, pois ela é utilizada para atribuir o valor inicial quando não há registro relacionado na ligação ou no banco repositório.