O que há de novo em 4D v17

Tradução automática de Deepl

Este documento é uma compilação de todas as características disponíveis em 4D v17, que foram introduzidas durante o programa de lançamento v16 R ou no último passo de 4D v16 R6 a 4D v17. Note que cada característica tem um post de blog relacionado para o acompanhar através de exemplos concretos. Estes posts do blog podem ser acedidos clicando no título da funcionalidade.

Também considere que as secções com a etiqueta blank estão relacionadas com todas as novas funcionalidades lançadas entre 4D v16 R6 e 4D v17.

Este documento está dividido em sete secções:

ORDA

4D v17 introduz um conceito inovador que lhe permite manusear a sua base de dados com uma abordagem orientada para objectos: ORDA (Object Relational Data Access).

Aqui estão as características que estamos a enviar com este lançamento:

Criar dados de actualização e eliminação blank

Com ORDA, as operações CRUD (Create, Read, Update and Delete) podem ser realizadas na sua base de dados através de uma camada de abstracção: a datastore, que é um objecto que fornece uma interface para o modelo da base de dados e dados através de objectos. Com ORDA, as operações Criar, Actualizar e Apagar não são realizadas numa selecção actual ou num registo actual, mas sim em entidades:

  • Criar: pode ser alcançado instanciando uma nova entidade com o novo método () e depois guardando-a com o método save().
  • Actualização: realizada numa entidade utilizando o mesmo método save().
  • Eliminar: realizado numa entidade ou numa selecção de entidades utilizando o método drop( ).

Ler documentação

Consulta de base de dados blank

Com ORDA, o datastore é um objecto que fornece uma interface para o modelo da base de dados e dados através de objectos. Também já não se trata da selecção actual para cada tabela e registo actual, mas sim de entidades que são objectos. Pode facilmente consultar várias tabelas ligadas, gerir relações recursivas numa mesma tabela, bem como utilizar vários operadores lógicos numa única consulta. 4D v17 fornece várias maneiras de lhe permitir consultar a sua classe de dados (ou seja, tabela): pode fornecer a consulta como uma única sequência, ou fornecer a consulta e os valores separadamente usando placeholders, ou fornecer a consulta e os valores separadamente usando uma colecção construída dinamicamente. Leia a documentação

Ir e vir entre a selecção actual para a ORDA blank

A ORDA pode ser integrada com o seu código existente! É possível actualizar a selecção actual de uma tabela a partir da selecção de uma entidade, assim como obter uma selecção de entidade a partir da selecção actual de uma tabela! São adicionados novos comandos para este fim: comando USE ENTITY SELECTION para actualizar a selecção actual na tabela correspondente, e o comando Create entity selection para obter uma selecção de entidade relacionada com a DataClass correspondente. Ler documentação

Converter-se em entidades, objectos e colecções blank

Com a ORDA pode separar entidades e selecções de entidades da base de dados para trabalhar nelas separadamente. Além disso, pode mover objectos e colecções existentes para a base de dados. Assim, para exportar uma entidade para um objecto, utilize o método toObject(); e o método toCollection() no caso de querer exportar uma selecção de entidade para a colecção. E a importação de uma entidade através de um objecto pode ser feita graças ao método fromObject() e a importação de uma selecção de entidade através de uma colecção pode ser obtida com o método fromCollection(). Ler documentação

Gerir fechaduras

Fecho óptimoblank

A ORDA permite-lhe trabalhar com um bloqueio optimista, fornecendo um conjunto completo de métodos para gerir erros que possam surgir enquanto se salva uma entidade na base de dados. O processo é silencioso e simples: Após recarregar a entidade da base de dados com o método reload(), o método touchedAttributes() permite-lhe saber que propriedades foram alteradas desde a última vez que foi carregada ou guardada, e finalmente pode comparar as duas entidades utilizando o método diff(). Ler documentação


Fecho pessimista blank

Para além do bloqueio optimista, a ORDA também lhe permite trabalhar com bloqueio pessimista utilizando o método lock() que bloqueia uma entidade, de forma a salvar uma referência sobre esta entidade em outros processos falhará até que a entidade seja desbloqueada. Assim, a partir de agora não há necessidade de verificar se uma entidade está bloqueada antes de a carregar, porque ao tentar actualizá-la, o método save() irá retornar um estado detalhado indicando as razões do bloqueio. Ler documentação

Manusear entidades na selecção de entidades blank

ORDA fornece métodos simples para criar e adicionar selecções de entidades, bem como métodos para navegar através de entidades num objecto de selecção de entidades, o que lhe permitirá tratar várias selecções de entidades ao mesmo tempo e navegar através delas de forma independente. Uma selecção de entidade é criada utilizando o novo métodoSelection() , e as entidades são-lhe adicionadas com o método add(). Uma selecção de entidade fornece os métodos first( ) e last() para obter a primeira e última entidade, e uma entidade fornece a anterior( ) e a próxima( ) para obter a anterior e a próxima entidade. Ler documentação

Operações lógicas sobre selecções de entidades blank

Os operadores lógicos podem ser utilizados na selecção de entidades, permitindo-lhe obter a intersecção, união, ou diferença entre duas selecções de entidades como com conjuntos em linguagem clássica. Ler documentação

Cálculo sobre as selecções de entidades blank

A ORDA fornece uma grande funcionalidade para canalizar os dados através de filtros e obter valores agregados, ela permite um conjunto de operações de agregação que examinam e efectuam cálculos sobre os conjuntos de dados. Por exemplo, os métodos soma(), média(), contagem(), min( ) e max() são utilizados para realizar operações que os seus nomes descrevem! Ler documentação

4D Língua

Aqui estão as maiores melhorias que trouxemos para a linguagem 4D para tornar a sua experiência de codificação muito mais fácil e mais intuitiva:

Notação de objectos

A funcionalidade de notação de objectos muda drasticamente a forma como se escreve o código e se utiliza o motor da base de dados, a sua codificação é tornada mais rápida e mais fácil de compreender. Por exemplo, pode simplesmente escrever $myobject.attribute.subattribute:=5 ou aceder a um atributo com $person.children[2].firstname, também pode utilizar a notação de objecto como expressão. Por exemplo, criar um objecto de formulário como uma variável de texto e atribuir directamente o atributo objecto, por exemplo [pessoa]parentes.avô.avô.primeironome. Já não é necessário utilizar OB Get recursivamente para ler o valor e atribuí-lo a uma variável temporária, apenas para o exibir. Uma das vantagens da notação de objectos é a utilização de propriedades e valores indefinidos, porque a linguagem 4D aceita agora valores indefinidos em qualquer parte de uma expressão. E, sempre que se atribui um valor indefinido a uma variável, este será definido para um valor por defeito, de acordo com o seu tipo.Isto significa que a leitura da propriedade de um objecto inexistente não irá gerar um erro nem interromper a execução do código. Ler documentação

Objectos e colecções partilhadas

Objectos partilhados e colecções partilhadas são uma forma fácil e eficiente de partilhar informação entre processos preventivos .Os objectos partilhados e as colecções partilhadas comportam-se exactamente como os normais, excepto que devem ser declarados como “partilhados” durante a sua instanciação com os novos comandos seguintes: Novo objecto partilhado e Nova colecção partilhada. Uma vez instanciados, podem ser utilizados directamente, tal como qualquer outra variável, para leitura. E para escrever ou modificar, devem ser rodeados pelas palavras-chave Use e End use . Ler documentação

Novo iterador: Para cada/ Fim para cada blank

O novo laço juntou-se à linguagem 4D: Para cada / Fim para cada um, para permitir a iteração sobre tipos de dados avançados, tais como colecções, e não há necessidade de ter conhecimento prévio de quantos itens pertencem à colecção antes de entrar no laço. Também pode ser utilizado para iterar sobre as propriedades dos objectos. Isto é útil se quiser escrever algum código genérico, sem conhecer antecipadamente os nomes das propriedades dos objectos. Ler documentação

Colecções

A colecção é um novo tipo acrescentado à língua 4D. As colecções são flexíveis e podem acelerar o seu tempo de desenvolvimento. Na primeira vista, uma colecção parece uma matriz, mas enquanto uma matriz é uma lista altamente optimizada do mesmo tipo (Array longint, Array Text, …), uma colecção é uma espécie de recipiente que armazena uma lista de tipos individuais (uma longint, depois um texto, depois um número, depois uma imagem, um objecto, até mesmo outra colecção, etc.); e pode ser acedida com notação de objecto. O comando Nova colecção cria uma nova colecção vazia ou pré-cheia. E a fim de facilitar a manipulação das colecções, é fornecido um conjunto de novos métodos a serem utilizados com a Notação de Objectos. Estes métodos permitem, por exemplo, adicionar ou remover elementos, ordenar a colecção, e muito mais. Mais de 40 novos métodos já estão disponíveis. Aqui estão apenas alguns deles: pop(), push(), concat(), resize(), query(), slice(), … Ler documentação

Comando nulo

O novo comando Null pode ser utilizado para verificar se um atributo de objecto ou um membro da colecção tem um valor desconhecido ou em falta (atenção à diferença do valor 0 ou uma cadeia de caracteres vazia “” com um valor não definido). Também permite definir um valor de atributo para desconhecido. Este comando pode ser utilizado com notação de objecto. Ler documentação

Desenvolver com objectos

Datas dentro de objectos

As datas podem agora ser definidas como datas e não como cordas num objecto, tornando a utilização de datas dentro de objectos mais fácil e mais intuitiva. Assim, OB SET e OB Get podem ser utilizados sem que seja necessária a constante de datas, e a notação do objecto pode ser aplicada a eles como qualquer outro objecto típico. Para utilizar datas dentro de objectos, basta verificar a opção “Use date type instead than ISO date format in objects” a partir da página de configuração de compatibilidade em Database Settings. Ler documentação

Suporte de imagens em objectos

As imagens podem agora ser armazenadas num campo de objectos ou numa variável do objecto. Os comandos OB Get e OB SET suportam o novo tipo de imagem Is e a possibilidade de armazenar uma imagem num campo de objecto. E a notação de objecto também pode ser usada. Ler documentação

Validar um objecto JSON

Uma nova opção foi acrescentada para ajudar a reduzir o seu tempo de depuração ao analisar as cordas do JSON. A opção * parâmetro do JSON Parse cria informação adicional de depuração (propriedade __símbolos) que fornece caminho, posição de linha, e offset de linha de cada propriedade e sub-propriedade do objecto. Mesmo que um objecto seja bem formado, pode não cumprir as especificações ou normas de conteúdo solicitadas. O novo comando JSON Validate permite verificar se a estrutura do objecto se ajusta a uma determinada especificação(esquema JSON). Ler documentação

Uma maneira fácil de inicializar um objecto

O comando Novo Objecto permite-lhe criar um objecto vazio ou criá-lo com propriedades e valores iniciais numa única linha de código. Ler documentação

Consulta de uma lista de elementos num único objecto

É agora possível pesquisar numa matriz dentro de um objecto usando argumentos ligados. O comando QUERY BY ATTRIBUTE permite a execução de consultas complexas dentro de uma lista de elementos dentro de um único objecto. Ao pesquisar em atributos de matriz com múltiplos argumentos de consulta unidos pelo operador AND, terá a opção de escolher obter os registos onde os argumentos correspondentes estejam em pelo menos um elemento ou no mesmo elemento. Ler documentação

Ordenar registos por atributo de objecto

É agora possível ordenar os registos com base num atributo de objecto específico ao exibir uma selecção, por exemplo, numa caixa de listagem, graças ao novo comando ORDER BY ATTRIBUTE. Ler documentação

Preemptivo multi-tarefas

A multi-tarefa preventiva permite que a sua aplicação tire o máximo partido dos computadores multi-core. Como resultado, as suas aplicações funcionam mais rapidamente e podem suportar mais utilizadores conectados. Mais de vinte comandos existentes foram melhorados para que possam ser utilizados em processos preventivos. Leia a documentação

Formulários dinâmicos

É agora possível criar e utilizar formulários dinâmicos. Armazenados num formato baseado em texto (JSON), estão a abrir uma vasta lista de novas oportunidades: criar formulários totalmente adaptados ao contexto do utilizador final, partilhar o mesmo formulário entre várias bases de dados. A descrição textual do formulário pode ser guardada num objecto 4D ou num ficheiro. Depois, em tempo de execução, os formulários podem ser carregados. Os seguintes comandos foram melhorados para que um objecto 4D ou um caminho de ficheiro JSON possa ser passado: Abrir janela do formulário, DIALOGAR, FORMAR SET INPUT, FORMAR SET OUTPUT, OBJECTO SET SUBFORM, OBJECTO GET SUBFORM, FORMULÁRIO LOAD, Imprimir formulário. Ler documentação

Comunicação simplificada entre formulários

Livre-se do seu código complexo e das variáveis globais ligando um objecto a um formulário e utilize-o internamente com o novo comando Form . Tudo o que precisa de fazer é passar parâmetros de um objecto para um formulário utilizando o comando DIALOG. Qualquer propriedade deste objecto estará então disponível a partir do interior do formulário através do comando Form. Isto também é válido para subformulários. Ler documentação

Novas possibilidades de programação com acções padrão

Acções padrão – tais como First Record ou color?value=red podem ser atribuídas a um botão ou a um item de menu na interface do utilizador ou por programação. Uma das vantagens, é que 4D também gere automaticamente o item de menu ou a desactivação do botão sempre que a acção não seja aplicável. Além disso, dois novos comandos foram adicionados à linguagem 4D para tratar facilmente acções padrão através da programação:

  • INVOKE ACTION pode ser utilizado para desencadear qualquer acção padrão, opcionalmente no contexto alvo (formulário actual ou formulário principal).
  • Para saber se uma acção padrão é aplicável e válida no contexto actual, pode usar o comando Get action info.

Ler documentação

Controlo prioritário do gestor de cache

4D 64-bit inclui um gestor de cache totalmente optimizado baseado num mecanismo de gestão automática de prioridades para objectos na memória cache. O controlo total sobre a prioridade é dado para lidar com os objectos na memória cache, permitindo uma afinação avançada.

Para utilização avançada e casos específicos, é possível personalizar as prioridades da cache usando dois conjuntos de comandos 4D:

Ler documentação

Segurança

4D v17 dá um grande salto em matéria de segurança com as melhorias abaixo indicadas:

Para mais detalhes sobre as ferramentas e técnicas incorporadas envolvidas na criação de um ambiente seguro para as suas aplicações comerciais, consulte o nosso Guia de Segurança.

Classificação A+ para sítios Web 4D blank

É agora possível obter a classificação A+ (taxa mais alta) dos SSL Labs para os seus sítios Web, bastando activar a funcionalidade HSTS (HTTP Strict Transport Security) no seu servidor Web 4D! HSTS permite que os servidores Web declarem que os navegadores só devem interagir com ele através de ligações HTTPS seguras. Uma vez activado, o servidor Web 4D adicionará automaticamente informação relacionada com HSTS a todos os seus cabeçalhos de resposta. Quando um navegador recebe a resposta inicial do servidor Web 4D com a informação do HSTS, ele irá gravá-la. A partir desse momento, quaisquer pedidos HTTP futuros serão automaticamente transformados em HTTPS. E pode especificar o período de tempo para o navegador armazenar esta informação com a opção de idade máxima do HSTS da Web. Ler documentação

Activação do Perfect Forward Secrecy no servidor Web 4D

A segurança padrão do servidor Web 4D foi aumentada através do suporte do Perfect Forward Secrecy (PFS). Esta implementação proporciona à sua aplicação uma melhor conformidade para algumas características de segurança de rede, bem como uma classificação mais elevada nos testes de auditoria de segurança na Web. O PFS é automaticamente activado quando o TLS é activado no servidor. O comando WEB Get server info pode ser utilizado para garantir que o PFS está activado. O valor do novo atributo perfectForwardSecrecy é verdadeiro sempre que todas as condições necessárias para utilizar o PFS são satisfeitas. Tenha em mente que o algoritmo RC4 é agora depreciado no Servidor Web 4D como resultado de alguns problemas de segurança conhecidos. Ler documentação

Segurança melhorada para servidor web 4D

4D suporta Transport Layer Security (TLS v1.0, TLS v1.1, e TLS v1.2) para permitir comunicações encriptadas entre clientes e servidores. A versão padrão mínima suportada é a TLS v1.2, as versões mais antigas serão rejeitadas por poderem ser inseguras. Mas se quiser suportar browsers (ou ferramentas) mais antigos que não suportam TLS v1.2, pode diminuir o nível de segurança com o novo selector de versões Min TLS para o parâmetro Obter base de dados e definir os comandos PARÂMETRO DA BASE DE DADOS. Ler documentação

Verificação de hastes e palavras-passe

O mecanismo de hashing é ideal para armazenar palavras-passe. Dois novos comandos foram criados para gerar e verificar senhas de hashing: Gerar hash de palavra-passe e Verificar hash de palavra-passe. Ambos se baseiam no algoritmo bcrypt, que é lento por concepção. Assim, os ataques de força bruta são mais lentos e os impactos são minimizados. Ler documentação

Apoio SHA-2

As funções de digestão são úteis quando se trata de verificações de integridade de dados durante o intercâmbio ou comparação de dados. O comando Generate digest foi melhorado para apoiar o SHA-2. Suporta agora dois algoritmos da família SHA-2: SHA-256 e SHA-512. A sintaxe permanece a mesma, e as constantes de digestão SHA256 e SHA512 foram adicionadas. Ler documentação

Restaurar a última cópia de segurança da base de dados por defeito

Para proteger os seus dados contra danos, a opção Restaurar última cópia de segurança se a base de dados estiver danificadada página “Backup” das Configurações da Base de Dados é verificada por defeito para novas bases de dados, o que lhe proporciona o melhor nível de protecção. Leia a documentação

4D Write Pro

Documentos multicolunas blank

Pode agora criar documentos multicolunas com o Write Pro 4D, bem como converter os seus documentos Write Write 4D existentes contendo múltiplas colunas. Os comandos WP SET ATTRIBUTES e WP GET ATTRIBUTES foram actualizados para suportar novos atributos para gerir colunas:

  • wk contagem de colunas: defina o número de colunas para o documento ou para a secção
  • wk espaçamento das colunas: definir o espaçamento entre duas colunas
  • wk estilo da regra da coluna, wk cor da regra da coluna, wk largura da regra da coluna: definir o estilo do separador vertical da coluna (pontilhado, tracejado, etc.), cor ou largura.

Ler documentação

Obter a posição de qualquer parte de um documento 4D Write Pro blank

Um novo comando, dedicado a 4D Write Pro, está agora disponível: WP Obter posição. Dado um intervalo específico, elemento, ou referência, este comando devolve uma variável de objecto com cinco dados importantes de uma só vez: o número da secção onde o intervalo começa, o número da página, o número da coluna, o número da linha, e mesmo a posição do primeiro caractere do intervalo na linha. Ler documentação

Elementos de acesso programático em 4D Write Pro blank

O comando WP Get elements retorna uma colecção de elementos de qualquer tipo (parágrafos, tabelas, imagens, etc.). Se um intervalo datilografado for passado, o comando retorna uma colecção contendo apenas elementos do tipo correspondente (a menos que especificado no segundo parâmetro). Caso contrário, o comando retorna uma colecção contendo todos os elementos disponíveis, independentemente do seu tipo. Ler documentação

Como lidar facilmente com a inserção de texto blank

O comando WP SET TEXT permite-lhe escrever texto em qualquer posição dentro de um documento. Este comando é utilizado da mesma forma que a maioria dos comandos “Inserir” em 4D Write Pro. São necessários três argumentos: o objecto de intervalo (onde o texto deve ser inserido), o próprio texto, depois uma constante para definir se o texto deve ser colocado antes, depois, ou substituir o intervalo. Ler documentação

4D Tabelas Write Pro

As tabelas chegam em 4D Write Pro! Tabelas reais, células individuais, se introduzir um texto grande numa célula, o texto será automaticamente embrulhado, e a largura da célula permanecerá a mesma. Pode criar uma tabela do zero e modificar o estilo da tabela, ou as suas colunas, linhas e até células individuais, tudo isto por programação.

O comando Inserir tabela WP permite-lhe criar uma tabela com um número de células, linhas ou vazia. Os seguintes comandos foram criados para lhe permitir gerir tabelas no seu documento 4D Write Pro: WP Tabela anexar linha, WP Tabela obter linhas, WP Tabela obter colunas, WP Tabela obter células. Todos estes novos comandos são seguros para as linhas. Ler documentação

Mecanismo de acções padrão alargado a 4D Write Pro

Mais de 80 novas acções padrão dedicadas a 4D Write Pro foram criadas, permitindo-lhe manusear facilmente áreas 4D Write Pro com novas acções tais como Negrito, Cor, Verificação Ortográfica, Expressão de Congelamento, Mostrar Sistema de Selecção de Fontes Dialog…Mais de 80+ acções estão disponíveis. É agora possível criar a sua própria interface de utilizador 4D Write Pro sem escrever uma linha de código. Ler documentação

Desenhe a sua própria barra de ferramentas utilizando acções padrão

Crie facilmente a sua barra de ferramentas 4D Write Pro personalizada, sem qualquer programação. O mecanismo de acções padrão, simples mas muito poderoso, foi alargado para que possa também ser atribuído a caixas de verificação e menus pop-up.

A utilização de acções padrão faz beneficiar de mecanismos automáticos que pouparão o seu tempo: a activação/desactivação do objecto é automaticamente tratada por 4D dependendo do contexto e o estado actual (para caixas de verificação) ou valor (para menus pop-up) é automaticamente actualizado de acordo com a selecção de texto actual. Ler documentação

Desenhe o seu próprio menu contextual para 4D Write Pro

O comando do menu pop up dinâmico foi actualizado, tornando possível conceber os seus próprios menus contextuais 4D Write Pro com base em acções padrão. Ler documentação

4D Write Pro e manipulação de imagens

Fotos em posição absoluta

É dado total controlo sobre a inserção da imagem numa posição específica: em frente ou atrás do texto, bem como ancorado à página ou partes específicas do documento (isto é, cabeçalho, rodapé, secções) . O comando WP Adicionar imagem adiciona a imagem à página, depois, para definir a sua posição exacta, bem como outras propriedades, pode usar acções padrão, ou usar o conjunto de selectores que foram adicionados aos comandos WP GET ATTRIBUTES e WP SET ATTRIBUTES. Ler documentação

Apoio de expressões de imagem

4D Write Pro suporta agora expressões de imagem. O comando ST INSERT EXPRESSION foi expandido para suportar qualquer expressão que devolva uma imagem. Uma expressão pode ser uma variável 4D, campo, função, ou um método definido pelo utilizador. Tenha em mente que antes de usar um método 4D numa expressão, é necessário primeiro permitir a utilização deste método usando o comando SET ALLOWED METHODS. Ler documentação

Imagens de fundo em tamanho real

A criação de imagens de fundo a preencher toda a página é possível com 4D Write Pro, graças a um atributo de estilo de fundo para recorte de imagem e origem. Este atributo pode ser controlado via:

  • linguagem 4D: Pode utilizar o comando WP SET ATTRIBUTES e definir o novo valor da caixa de papel wk para recorte de imagens de fundo e/ou origem.
  • Acções padrão: O comando INVOKE ACTION pode ser utilizado, ou em modo de desenho como qualquer outra acção padrão.
  • Write Pro widget 4D: Ao seleccionar os itens “imagem de fundo” e “documento”, o clip e as opções de origem terão uma nova opção de caixa de papel disponível.

Ler documentação

Gerir programmaticamente cabeçalhos e rodapés

4D Os cabeçalhos e rodapés Write Pro podem ser geridos programmaticamente para criar outros documentos com base num modelo, graças a novos comandos, divididos em duas categorias:

  • Comandos para obter referências de qualquer cabeçalho, rodapé ou corpo dentro de documentos, que podem ser utilizados para obter gamas associadas, criam documentos para uma secção específica: WP Get header, WP Get body e WP Get footer.
  • Comandos para mover o cursor para uma posição específica: WP Get frame é utilizado para obter uma referência ao frame onde o cursor se encontra actualmente, enquanto WP SET FRAME define o cursor para um frame específico.

Ler documentação

Hiperligações 4D Write Pro

Pode adicionar um link ao logótipo ou nome da sua empresa com atributo wk link url. Hyperlinks podem ser adicionados em imagens, texto ou uma combinação de ambos, apenas usando os comandos WP SET ATTRIBUTES e WP GET ATTRIBUTES. Ler documentação

Utilizar caracteres principais para separadores

4D Write Pro fornece uma funcionalidade adicional para afinar o seu design: caracteres principais (por exemplo, os pontos repetidos ou qualquer outro carácter num índice, por exemplo). Os caracteres principais podem ser controlados quer a partir do menu contextual quando se clica num separador existente na área da régua, quer programmaticamente graças ao novo selector de limites do separador wk e ao comando WP SET ATTRIBUTES. Ler documentação

4D Régua horizontal Write Pro

Use a régua horizontal numa área 4D Write Pro para ajustar margens, recuos e alinhar horizontalmente texto, gráficos, separadores, e outros elementos nos seus documentos. Leia a documentação

4D Ver Pro

Converter documentos em 4D View Pro

O primeiro passo para converter os seus actuais documentos 4D View para 4D View Pro está em funcionamento. Graças ao novo comando VP Convert from 4D View, a maioria das propriedades e informações armazenadas em 4D View documentos são automaticamente convertidas, incluindo estrutura de documentos, valores, formatos, estilos, margens e fórmulas! Ler documentação

4D Ver folhas de cálculo Pro

Graças ao novo objecto de formulário 4D View Pro, e aos novos comandos 4D View Pro, pode agora criar folhas de cálculo 4D View Pro. Criar um novo documento com VP NEW DOCUMENT, guardá-lo em disco com VP EXPORT DOCUMENT ou na base de dados usando VP Export to object e reabri-lo com VP IMPORT DOCUMENT ou VP IMPORT FROM OBJECT. Ler documentação

Caixa de listagem automática variável de altura de linha

4D View Pro suporta altura variável automática das linhas, o que significa que uma caixa de listagem adapta a altura de cada linha ao seu conteúdo para que o texto completo ou imagem possa ser exibido evitando todo o tipo de problemas de embrulho. Três novas propriedades estão disponíveis na Lista de Propriedades: Altura automática das filas, Altura mínima das filas e Altura máxima das filas. Estas configurações permitem aos programadores definir se uma caixa de listagem utiliza o modo automático de altura de linha, para além da altura mínima e máxima de linha permitida.
Estas configurações também podem ser geridas programmaticamente usando o comando LISTBOX SET PROPERTY e o novo comando LISTBOX SET AUTO ROW HEIGHT . Ler documentação

Mais capacidades de programação

Obter informação sobre o hardware da máquina blank

O comando Get system info recupera todo o hardware e detalhes do sistema para a máquina em funcionamento e informação que inclui: que SO está a ser utilizado, que processador(es), quanta RAM está disponível, e mais. Ler documentação

Informação detalhada sobre o Servidor Web 4D

O comando WEB Get server info recupera informação detalhada sobre o seu servidor Web 4D. Este comando tem um parâmetro de entrada opcional, comCacheInfo, que é útil se a informação de cache do servidor Web for necessária. Este atributo é definido como “Falso” por defeito. Ler documentação

Informação detalhada sobre utilizadores e processos

O comando Get process activity dá um instantâneo das sessões de utilizador ligadas, dos processos em execução relacionados e de todos os processos actuais, incluindo processos internos que não eram acessíveis através do comando PROCESS PROPERTIES. Além disso, é incluído um atributo systemID para identificar de forma única qualquer processo: utilizador, 4D, e reserva. Também se pode calcular a partir da sessão/informação do processo devolvido o tempo de CPU consumido por este processo desde a ligação (em segundos) e a percentagem de actividade (por exemplo: 2%). Para além disto, o comando facilita a análise dos resultados. Ler documentação

Informação detalhada sobre licenças

O comando Get license info retorna informações detalhadas sobre as licenças instaladas e as licenças utilizadas/disponíveis. Ler documentação

Melhor gestão de ficheiros e extensões de pastas

Foram criados dois comandos para facilitar a gestão de caminhos de ficheiros e pastas. O comando Path to object retorna um objecto contendo as propriedades específicas (pasta pai, nome de ficheiro ou pasta, extensão de ficheiro ou pasta) do caminho que passou no parâmetro. O comando Caminho para o caminho constrói um caminho a partir dos atributos do objecto passados no parâmetro. Assim, para compor um novo caminho, modifique os atributos do objecto de que necessita e apenas os recombine.
Estes comandos devem agora ser utilizados no lugar dos comandos obsoletos do tipo _o_Documento e _o_SET DOCUMENT TYPE. Ler documentação

Fácil acesso aos ficheiros de registo

O comando Obter ficheiro 4D foi melhorado para um melhor acesso aos ficheiros de registo. Agora pode encontrar facilmente um determinado ficheiro de registo em vez de obter a pasta que contém todos os registos. Foi criado um conjunto de novos selectores para este comando: Pedir ficheiro de registo, Depurar ficheiro de registo, Ficheiro de registo de cópia de segurança, Ficheiro de registo de verificação, Ficheiro de registo de compactação, Ficheiro de registo de reparação, Ficheiro de registo de depuração HTTP e Construir ficheiro de registo de aplicação. Ler documentação

Comando de carimbo da hora

O comando Timestamp permite obter um carimbo de tempo UTC preciso, incluindo milissegundos. Ler documentação

Experiência do utilizador

Preenchimento e sugestão de código para atributos de objectos

O editor do método foi aperfeiçoado para fornecer o completamento de código para atributos de objectos. Uma lista de atributos sugeridos está a ser exibida, sempre que um caractere de ponto é digitado após um objecto, para melhorar a velocidade de codificação e evitar erros ou erros de digitação. O comportamento de auto-completar pode ser personalizado a partir do painel“preferências 4D“, para definir se a lista de sugestões será aberta automaticamente após a digitação de um caracter de ponto (opção marcada), ou apenas após a utilização da tecla tab (opção desmarcada). Ler documentação

Linha de produtos sem Altura 4D Windows 64-bit

Toda a linha de produtos 4D Windows de 64 bits já não depende da biblioteca Mac2Win da Altura. O Servidor 4D Windows 64-bit foi o último passo para completar e isto é feito com 4D v16 R4. Isto permite ao 4D utilizar internamente tecnologias modernas na plataforma Windows, e fazer beneficiar de novas funcionalidades como a SDI. Ler documentação

Suporte SDI no Windows

4D Aplicação Windows utilizada para ter uma janela principal cinzenta (denominada MDI – Multiple Document Interface) com todas as janelas da aplicação expostas no interior (como janelas de criança). As aplicações SDI(Single Document Interface) têm uma janela principal que pode abrir muitas janelas adicionais que são independentes da janela principal. Podem ser movidas noutros ecrãs, permanecem visíveis mesmo que a janela principal esteja oculta e assim por diante… Porquê 4D permite agora ambos os modos no Windows 64-bit para aplicações fundidas. Ler documentação

Dicas de ajuda em caixas de listagem

Pode desactivar ou activar programando todas as dicas de ajuda dentro de uma aplicação 4D usando o comando SET DATABASE PARAMETER. Pode também definir o atraso de visualização e a duração máxima da visualização por língua. Mas não é tudo, é também possível modificar dinamicamente o texto de uma dica de ajuda usando o comando OBJECT SET HELP TIP. Além disso, o comando LISTBOX GET CELL POSITION suporta agora dois novos parâmetros opcionais (posição x e y, em pixels) e retorna os números de coluna e linha correspondentes, para o ajudar a exibir dicas numa coluna, linha ou célula em particular de uma caixa de listagem. Ler documentação

Definir ordem de tabulação do formulário por programação

Definir a ordem de entrada do objecto num formulário através de programação, para que se possa controlar em que próximo objecto do formulário o foco será quando o utilizador carregar na tecla TAB. Dois novos comandos – FORM SET ENTRY ORDER e FORM GET ENTRY ORDER – permitem-lhe definir dinamicamente e obter a ordem de entrada dos objectos do formulário actual para o processo actual. Ler documentação

Melhoria da interface do utilizador relacionada com o IPv6

A IU melhorou para uma melhor experiência do utilizador para utilizadores com configurações de rede IPv6. Ler documentação

Resultados de exportação após um “achado no desenho”

O diálogo “find in design” foi habilitado com duas novas funcionalidades relacionadas com a janela de resultados. Um novo botão foi adicionado para permitir a interrupção de uma pesquisa em curso. Além disso, uma nova opção de filtro está disponível para que possa seleccionar os itens de resultado que deseja manter e remover todos os outros itens excepto esta selecção. Além disso, os resultados de uma operação “Find in Design” são exibidos numa lista hierárquica. Também pode agora exportar os resultados da pesquisa para um ficheiro de texto que pode ser aberto mais tarde numa folha de cálculo, por exemplo, permitindo-lhe partilhar ou armazenar facilmente os resultados. Para o fazer, basta seleccionar o novo item Exportar Resultados, disponível no menu de acção “Encontrar no Design”. Ler documentação

Customize list box selection highlight color

É agora possível ter um controlo detalhado sobre a cor de realce, para cada linha ou mesmo célula. Para este efeito, uma nova opção foi adicionada à lista de propriedades da caixa de listagem: Hide selection highlight. Quando esta opção é assinalada, o programador precisa de tornar visíveis as selecções da caixa de listagem, utilizando as opções de interface disponíveis. Depois podem definir uma cor de fundo específica, cores de fonte e/ou estilos de fonte, programando para personalizar a aparência das linhas seleccionadas. Isto pode ser feito utilizando matrizes ou expressões, dependendo do tipo de caixa de listagem a ser exibida (selecções ou matrizes). Ler documentação

Tabbed windows in 4D Design mode on MacOS Sierra

On macOS SierraAs aplicações têm agora a oportunidade de utilizar janelas com separadores em vez de múltiplas janelas. 4D Developer Edition 64-bit pode agora tirar partido desta nova funcionalidade da Apple no ambiente de design graças à nova opção de tabulação Window disponível em Preferências 4D. Quando a nova preferência está activa, as janelas Method e Form Editor podem ser combinadas numa única janela com separadores. Ler documentação

Tabela cruzada em editor de relatórios rápidos

O editor Quick Report 64-bit suporta agora relatórios de tabelas cruzadas, para além dos relatórios de listagem, permitindo aos seus utilizadores finais apreciar a experiência suave do utilizador ao conceberem relatórios. A escolha do modo de tabelas cruzadas permite-lhe exibir o seu relatório como uma tabela Pivot. Note que a reabertura de um relatório existente criado com os produtos 32-bit 4D ainda é possível. Leia a documentação

Novo motor de renderização para áreas web

Para uma melhor experiência do utilizador e um melhor suporte das novas características HTML, 4D está a actualizar a sua componente interna para objectos incorporados na área Web em 4D 64-bit para Blink (também utilizado pelo Google Chrome). Blink é o motor de renderização existente mais actualizado e bem conservado. A mudança para a estrutura Blink não requer qualquer mudança de código para a sua aplicação e não tem qualquer impacto na utilização da área Web; todos os comandos e eventos para Áreas Web embebidas funcionam da mesma forma que antes, excepto poucas preferências que não são suportadas e são ignoradas. Quando a opção Use embedded Web rendering engine é verificada, 4D usa WebKit em versões de 32 bits e Blink em versões de 64 bits. Ler documentação

Solicitações R em profundidade