Novidades em 4D v16 R4

Notação de Objeto

Objetos, introduzidos como um objeto de linguagem com 4D v14, suportado pelo motor de banco de dados com 4D v15, melhorado com 4D v16 – verá um imenso aumento de funcionalidade nos próximos lançamentos, a partir de 4D v16 R4. Vai começar fazendo com que codificação seja mais fácil e rápida – e vai guiar no futuro não muito distante a uma revolução em como escrever e usar código no motor de banco de dados.

Com notação de objeto, oferecida como  uma preview em 4D v16 R4, pode simplesmente escrever $myobject.attribute.subattribute:=5 ou acessar um atributo com $person.children[2].firstname. Como um lembre, o status preview significa que pode experimentar e aprender com a funcionalidade, mas ainda não está pronta para produção.

Na verdade, é possível usar notação de objeto como expressões. Por exemplo, crie um objeto formulário como uma variável texto e atribua diretamente o atributo objeto, por exemplo [person]relatives.grandfather.grandfather.firstname. Não é mais necessário usar  OB Get recursivamente para ler o valor e atribuir a uma variável temporária, apenas para exibi-la.

Para usar as propriedades da notação objeto, deve ativar a notação objeto na  Compatibility page da caixa de diálogo Database settings. Esta ação é irreversível.

Quando ativar essa propriedade, deve estar atento que não é mais permitido usar caracteres especiais como pontos (.) ou colchetes ([ ]) nos nomes de variáveis, tabelas, campos e métodos de projeto. Para verificar que sua aplicação está de acordo com os pré-requisitos de notação objeto, pode executar a ação Verify the application no MSC. Os elementos contendo caracteres proibidos serão listados no histórico de MSC, para que possa facilmente encontrar o que precisa renomear em sua aplicação.

Notação de objeto é compatível em:

  • Editor de Método: Usar a notação de objeto é mais elegante, fácil e intuitiva em manipulação de objeto que usar  OB Get e OB Set.
    Pode criar, ler ou modificar atributos de objeto diretamente, mesmo criar novos elementos em um atributo de array de objeto simplesmente usando-o. Se por exemplo um array dentro de um objeto tiver 3 elementos e criar em elemento 10, automaticamente ampliado e elementos faltantes são criados.
  • Editor de formulário: Pode usar notação de objeto como fonte de dados de objeto formulário no editor de formulário. Objetos complexos podem ser exibidos como campos de única entrada. Usando a linguagem você pode mesmo criar dinamicamente um formulário e simplesmente linkar os widgets formulários para atributos de objeto.
  • Debugger e Runtime Explorer: Pode usar a notação de objeto no Debugger para testar e checar seu código.

Novo tipo Coleção

4D v16 R4 introduz um novo tipo de Coleção na linguagem 4D. A primeira vista uma coleção parece com um array, mas enquanto um array é uma lista otimizada  do mesmo tipo  (Array intlong, Array Texto, …), uma coleção é um tipo de container que armazena uma lista de tipos individuais  (um intlong, depois um texto, depois um número, depois uma imagem, um objeto, mesmo outra coleção, etc). Uma coleção é muito flexível. Enquanto um array precisa de menos memória e pode ser rápido, uma coleção é mais flexível e acelera o tempo de desenvolvimento.

Pode imaginar um objeto como uma lista de atributos nomeados, enquanto uma coleção é uma lista de atributos não-nomeados, acessados com um índice. O comando New collection cria uma coleção nova vazia ou pré-preenchida. E coleções podem ser acessadas com  a notação de objeto

Comando Null

O novo comando Null pode ser usado para marcar se um atributo de objeto ou um membro de coleção tem um valor desconhecido ou faltando (lembre a diferença entre valores 0 ou uma string vazia  “” com um valor não estabelecido). Permite estabelecer um valor de atributo para desconhecido. E pode ser usado com notação de objeto.

Compatibilidade de imagens em objetos

Imagens podem ser armazenados em um campo objeto ou em uma variável objeto. Muitos desenvolvedores usaram o objeto de tipo campo para permitir que seus clientes aprimorem a estrutura de banco de dados com campos personalizados, armazenando todo tipo de informação. Imagens ainda não são possíveis.

Os comandos OB Get e OB SET foram atualizados para suportar o novo tipo  Is picture e para poder armazenar a imagem em um campo objeto. E, é claro, pode usar a notação objeto também…

Validar objetos JSON

Trabalhar com objetos vai eventualmente trocar objetos com outras aplicações ou serviços – e para isso é necessário strings JSON. Enquanto essas strings forem bem definidas, tudo funciona bem, mas às vezes podem criar problemas e uma nova opção pode ajudar a reduzir o tempo de debugging. A opção * de JSON Parse cria informação de debug adicional (__symbols property) que oferece caminho, posição de linha, e offset da linha de cada propriedade e sub-propriedade do objeto. Essa informação pode ser útil para propósitos de debugar.

Mesmo se um objeto for bem formado, poderia não seguir todas as especificações de normas de conteúdo. O novo comando  JSON Validate permite checar se a estrutura do objeto segue uma dada especificação (JSON schema).

4D Write Pro

Tabelas 4D Write Pro

Tabelas chegaram em 4D Write Pro. Tabelas reais, células individuais, se entrar um texto comprido em uma célula, o texto vai ter quebras de linha e a largura da célula continuará a mesma. Pode criar uma tabela do nada usando e modificando o estilo da tabela, de suas colunas, linhas e células individuais, tudo por programação.

O novo comando WP Insert table permite que crie uma tablea com um número de células, linhas ou vazia. Os comandos abaixo foram criados para permitir manejar tabelas em seu documento 4D Write Pro: WP Table append row, WP Table get rows, WP Table get columns, WP Table get cells. Todos esses novos comandos são  thread-safe.

4D Write Pro hyperlinks

Adicione um link pro logo de sua companhia ou nome de companhia agora é tão fácil como mudar o texto para negrito. Graças ao novo atributo wk link url, hyperlinks podem sera adicionados em imagens, texto ou uma combinação dos dois, usando os comandos WP SET ATTRIBUTES e WP GET ATTRIBUTES.

Crie sua própria barra de ferramentas com ações padrão

Crie facilmente sua barra de ferramentas personalizada 4D Write Pro, sem qualquer programação. O mecanismo de ações padrão, simples mas poderoso, foi estendido com 4D v16 R4. Na verdade ações padrão agora podem também ser atribuidas a  checkboxes e pop-up menus.

Usar ações padrão fazem com que se beneficie de mecanismos automáticos que poupam tempo: a ativação/desativação de objetos é automaticamente manejada por 4D dependendo do contexto e o status atual (para checkboxes) ou valor (para pop-up menus) é automaticamente atualizado por 4D de acordo com a seleção atual de texto.

Linha de produtos Altura-free 4D Windows 64-bit

A inteira linha de produtos 4D Windows 64-bit não mais exige a biblioteca  Mac2Win de Altura. 4D Server Windows 64-bit foi o último passo para completar e isso foi feito com 4D v16 R4. Isso permite a 4D internamente usar tecnologias modernas na plataforma Windows, e aproveitar novas propriedades como  SDI.

Suporte de SDI em Windows

Em Windows, 4D foi usado para ter uma janela principal cinza (nomeada MDI window) com todas as janelas de aplicação que estejam dentro (como janelas filhas). Aplicações SDI, como por exemplo Microsoft Outlook, têm uma janela principal mas podem abrir janelas adicionais que são independentes da janela principal. Podem ser movidas sobre outras telas, e se mantém visíveis mesmo se a janela principal estiver escondida e assim por diante…

Por outro lado, MDI também tem benefícios para algumas aplicações de negócios, já que todas as janelas pertencem juntas a construir a aplicação. Um bom exemplo é  Adobe Photoshop. Por isso que  4D permite os dois modos para aplicações fusionadas.

Planilhas 4D View Pro

4D v16 R4 introduz o primeiro passo das Planilhas  4D View Pro como uma preview. Descubra o novo objeto de formulário 4D View Pro, e os novos comandos 4D View Pro. Crie um novo documento com  VP NEW DOCUMENT, salve-o em disco com VP EXPORT DOCUMENT ou no banco de dados usando VP Export to object e o abra novamente com VP IMPORT DOCUMENT ou VP IMPORT FROM OBJECT.

Janela de Administração de Server personalizada

Uma série de propriedades em desenvolvimento permitem que crie sua própria janela de administração de servidor, controlando qual informação quer exibir ou permitir que o admin mude.

Informação sobre processos e usuários

Como um primeiro passo o novo comando Get process activity dá uma snapshot de sessões de usuário conectadas, processos sendo executados e todos os processos atuais, incluindo processo internos que não eram alcançados pelo comando PROCESS PROPERTIES. Pode também computar a partir da informação da sessão/processo retornada o tempo de CPU consumido pelo processo desde a conexão (em segundos) e a porcentagem de atividade (por exemplo: 2%).

Informação detalhada sobre licenças

O novo comando Get license info retorna informação detalhada sobre as licenças instaladas e licenças de usuário/disponíveis.

Controle aumentado de exibição de dicas

Pode programar simplesmente para ativar ou desativar todas as dicas dentro da aplicação 4D com o comando SET DATABASE PARAMETER. Melhorado, pode definir o delay de exibição e a duração máxima da exibição por linguagem. Mas isso não é tudo, também é possível modificar o texto dinamicamente o texto de uma dica de ajuda usando o comando OBJECT SET HELP TIP.

Definir a ordem da aba de formulário por programação

Essa propriedade permite que defina em um formulário a ordem de input de objeto por programação, para que possa controlar em qual objeto formulário o foco quando o usuário pressionar a tecla TAB. Dois comandos novos – FORM SET ENTRY ORDER e FORM GET ENTRY ORDER – permitem que respectivamente, estabeleça dinamica o conjunto, e obtenha a ordem de entrada do objeto de formulário atual do processo atual. Essa propriedade é útil quando criar formulário dinamicamente.

Melhora de Interface de usuário IPv6-related

4D v16 R4 oferece melhoras de UI para uma melhor experiência de usuário usando as configurações IPv6 network.

Quer saber mais? Leia todos os blog posts sobre 4D v16 R4!