Novidades em 4D v18

Este documento é uma compilação de todas as novas funcionalidades disponíveis em 4D v18. Note que cada funcionalidade têm um blog post relacionada para ajudar através de exemplos concretos. Estes posts podem ser acessados clicando no título.

Além disso seções com a nova etiqueta mostram as novas propriedades lançadas entre 4D v17 R6 e 4D v18.

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

Project database – Versão controle

Uma solução em 4D v18 faz mais fácil para times distribuídos para trabalhar de forma colaborativa ao armazenar o código fonte em um sistema de controle de source usando arquivos de texto simples. Permite que aproveite o poder combinado da plataforma de desenvolvimento com a versatilidade de arquivos leves e distribuídos:

 

Arquitetura 

Um banco de dados projeto contém todos os códigos fonte de uma aplicação banco de dados 4D de uma estrutura database à interface de usuário, incluindo formulários, menus, configurações de usuário ou recursos exigidos. Já que bancos de dados projeto são feitos de arquivos baseados em texto, projetos contém múltiplas pastas e arquivos armazenados dentro de uma única pasta pai database. Quando criar um projeto database, encontrará várias das mesmas pastas que um banco de dados binário:

  • Data
  • Logs
  • Resources
  • Settings
  • WebFolder

Também há duas novas pastas:

  • Project – código fonte aplicação (equivalente a .4db)
  • userPreferences.<name> – Contém arquivos de configurações de usuário memorizadas (por exemplo, posições de breakpoint, posições de janelas, etc). Leia a documentação

 

Converter um banco de dados existente

Pode criar um banco de dados projeto seja criando um novo banco de dados projeto ou exportando um banco de dados binário existente (.4db) a uma pasta projeto. Para converter um banco de dados binário, clique em File > Export > Structure para menu item projeto. Quando estiver feito, uma mensagem é exiida para informar que a conversão está completa. 4D também informa de qualquer erro que exija sua intervenção. Por exemplo no caso de objetos formulários antigos que não são mais compatíveis.

Leia a documentação

Conversão de Post 

Em relação à estrutura para um banco de dados binário, a descrição de sua aplicação é armazenada em dois arquivos (.4DB e.4DIndx). Para um banco de dados projeto, vai achar a descrição dos arquivos armazenados na pasta “Project”. Depois da conversão, pode remover os arquivos abaixo da pasta (se quiser): <database>.4db e <database>.4dIndy. Os dados para novos bancos de dados projeto estão em uma pasta  “Data”, no mesmo nível que a pasta “Project”. Portanto, mesmo durante a fase de desenvolvimento, um arquivo localizado do lado da pasta Data será diferente de um arquivo localizado ao lado da estrutura. Recomendamos que após a conversão, crie uma pasta Data no mesmo nível que a pasta Project, e mova os arquivos data.4dd e data.4Dindx para ela. Finalmente, para manter os dados separados e com fácil lançamento, 4D agora nomeia os arquivos com a palavra
“preferences” para parâmetros relativos a desenvolvimentos, como a configuração de editor de código, enquanto usa “settings” para parâmetros relativos a lançamentos, como memória e configurações de backup. 

Gerenciar usuários e grupos

Como bancos de dados projeto estão baseados totalmente em texto, não há mais razão para gerenciamento de usuários e grupos para proteger o código. Este papel foi delegado para o sistema de controle de versão ou para o sistema de direitos de acesso ao arquivo/pasta. Por isso, usuários e grupos agora só são usados para manejar acesso de dados. São armazenados em um arquivo de texto chamado “directory.json” do lado do arquivo de dados. 

Lançamento melhorado 

Não é necessário mais diferenciar Desenvolvedores de Usuários. Portanto, ambos agora têm o tipo “User”. Para simplificar o lançamento, os comandos Get 4D fileFile agora aceitam a constante Directory file, para que possa manejar o arquivo correto de forma fácil e automática. Leia a documentação

Durante a conversão e migração

O arquivo de diretório vai ser gerado automaticamente durante o processo de conversão e localizado do lado das configurações projeto. Se usou o comando BLOB TO USERS para restaurar seus usuários e senhas, o comando vai gerar este arquivo de diretório para que não precise modificar seu código existente. Leia a documentação

Modo monousuário

Em modo monousuário, Usuários e Grupos estão totalmente desativados. O usuário atual é sempre o Designer e não pode ser mudado. Direitos de acesso a usuários e grupos podem ser delegados ao sistema. Se quiser usar uma máscara para o nome de Designer com a conta de sistema ou seu nome de usuário, pode chamar o comando SET USER ALIAS. Leia a documentação

Modo Cliente/Servidor

No modo cliente-servidor, os Usuários e Grupos estão totalmente operacionais. Pode mudar o usuário atual, estabelecer um apelido, mudar a senha, etc. 

Toolbox

As páginas de caixa de ferramentas de Usuários e Grupos estão acessíveis em todos os modos: monousuário e cliente-servidor. Entretanto, em modo monousuário, a caixa de ferramentas só pode ser usada para modificar os usuários e grupos que serão suados em modo cliente-servidor.  

 

Lance sua aplicação 

O lançamento consiste de dois passos: a compilação do código e a criação da aplicação. Pode compilar seu banco de dados projeto da mesma forma que compila seu banco de dados binário (.4db). Não há diferença. A interface é a mesma e o código de máquina produzido é o mesmo. A única diferença é que o resultado compilado é salvo no arquivo binário (.4db) para bancos de dados binário e na pasta “Project/DerivedData/CompiledCode” para bancos de dados projeto. Não é necessário fazer qualquer mudança para criar suas aplicações (bancos de dados compilados, componentes, aplicações stand-alone, aplicações cliente/servidor), pode usar o arquivo de configuração de seu banco de dados binário com seu banco de dados projeto convertido. A diferença fica nos arquivos gerados: bancos de dados projeto têm um arquivo com a extensão “.4dz” ao invés de um arquivo “4dc”. Leia a documentação

Upload para um sistema de controle source 

Quando compilar seu banco de dados, 4D armazena o código compilado na pasta “Project/DerivedData”. É recomendado subir a pasta “Resources”, a pasta “WebFolder” e a pasta “Project” (sem a subpasta “DerivedData”) para um sistema de source control. 

 

Style Sheets viram CSS 

As possibilidades de folhas de estilo foram melhoradas dramaticamente. 4D se inspirou na gramática e sintaxe de CSS para folhas de estilo de bancos de dados projeto, adaptando para necessidades específicas de formulários 4D. Isso permite que configure as propriedades de objetos formulário com folhas de estilo. Leia a documentação

 

Criptografia 

Nova criptografia integrada em seus bancos de dados 4D está à disposição. Dados podem ser criptografados via código ou a interface de usuário, para todas as tabelas ou apenas em tabelas selecionadas. As ferramentas de criptografia 4D são baseadas em frase-passe. É composta de uma sentença ou uma combinação de palavras que é  usada para gerar uma chave de criptografia binária para criptografar os dados com o algoritmo AES. Para funcionar com um arquivo de dados criptografado, a frase-passe ou a chave de criptografia binária é obrigatória. 4D criptografa dados ao nível de arquivo, o que significa que seu arquivo de dados (4DD), seu backup e seu histórico estão criptografados. Além da segurança em seu computador, isso faz com que os backups para a nuvem ou discos externos seja mais segura, já que os dados permanecem criptografados.

 

Criptografia  via  MSC 

Um novo atributo Criptografável/Encryptable está disponível para tabelas em modo Design. Estabelece o estado de criptografia de uma tabela ao estabelecer que ela pode ser criptografada. Quando estiver preparado para criptografar seus dados, a maneira mais fácil é através da nova página Criptografia em MSC. Esta página oferece todas as propriedades para monitorar sua criptografia de dados. Pode usar a página para criptografar ou descriptografar os arquivos de dados, recriptografar e ainda mudar sua frase-passe.. Leia a documentação

 

Criptografia com comandos 4D

Além do MSC, 4D v18 inclui um conjunto de comandos criados para ser compatível com as exigências de criptografia. Por exemplo, pode gerenciar a codificação via o comando Encrypt data file() ou usar o comando provideDataKey() para fornecer a chave de criptografia de dados para um arquivo de dados aberto. Pode até usar o comando encryptionStatus() para checar se o arquivo de dados aberto está codificado e se uma chave válida de criptografia foi fornecida. A lista completa de comandos está disponível no Doc center. Leia a documentação

Para saber mais detalhes sobre as ferramentas integradas e técnicas envolvidas no ambiente de segurança para suas aplicações de negócio, veja nosso Guia de segurança.

 

4D for iOS 

 

4D for iOS é uma solução que permite estender suas aplicações de negócio para aparelhos móveis. 4D for iOS está integrada com 4D para que não precise de instalações adicionais (exceto Xcode) ou experiência prévia. Aqui estão as propriedades que estão sendo enviadas com este lançamento:

 

Criar, editar, deletar 

A edição de dados diretamente de seu app agora é possível graças à ações. Isso significa que seus usuários podem editar dados diretamente no app iOS. Para proteger sua lógica de negócios, cada “ação” é enviada para 4D e executa seus métodos 4D para checar, calcular dados adicionais, e finalmente aprovar ou rejeitar a entrada do usuário. Ações predefinidas também foram fornecidas para gerenciar o conteúdo de app: Add, Edit, e Delete. Leia a documentação

 

Formatadores de Dados

Formatadores de dados, um conceito novo introduzido permite que define tipos de dados específicos para seus campos para que o conteúdo seja exibido no formato correto. Pode substituir facilmente o formato normal de seus campos para exibir o formato de sua escolha, como moeda, booleano, porcentagem, datas e muito mais. Por exemplo, imagine que queira exibir uma imagem para visualizar faturas “pagas” e “não pagas”, mas que se encaixaria melhoria no iPhone que uma simples checkbox. Leia a documentação

 

Pesquisa multicritério

4D for iOS agora é compatível com pesquisa multicritério! Depois de selecionar seu modelo de lista formulário, solte vários campos na área de pesquisa para ativar a pesquisa multicritério. Quando especificar valores múltiplos para o mesmo campo, um operador OR é usado atrás das cenas. Por exemplo, arraste o nomes Empresa, Sobrenome e Cidade na área pesquisa para permitir que seu usuário digite qualquer uma dessas informações na pesquisa por um cliente. Leia a documentação 

 

Pesquisas restritas

Outro conceito introduzido foi o de Pesquisas Restritas. Elas permitem filtrar os dados a serem sincronizados com seu app móvel. Limitar os dados apenas para as faturas do último ano, clientes ativos ou apenas à região sob responsabilidade do gerente de vendas é uma maneira incrivelmente prática de salvar tempo na sincronização dos dados e BASTANTE espaço em seu iPhone. Leia a documentação

 

Sincronização incremental de dados

Outro conceito interessante incluindo em 4D for iOS é a sincronização incremental de dados.É uma resposta à dois problemas diferentes: mesmo as pesquisas restritas podem criar conjuntos muito grandes de dados, então 4D agora mantém registro de registros atualizados ou apagados e apenas atualiza estes dados no aparelho. Além disso, seus dados não apenas é atualizado quando lança o app, mas cada vez que o app vai para o primeiro plano ou em resposta à uma ação do usuário. Leia a documentação

 

Gerenciar relações

4D for iOS é compatível tanto com tipos de relação N to One quanto One to N. Para N to one, é simples, pode usar campos relacionados em um formulário para o phone como campos na tabela principal. Para relações One to N, o formulário contém um botão, que troca para outra página mostrando a lista de registros relacionados, permitindo que o usuário retorne com um deslizar de dedos. Leia a documentação

 

Personalize seu app

Crie seus próprios modelos de formulários lista e detalhado 

4D for iOS fornece vários modelos de formulário lista e detalhado para cobrir a maioria de suas  necessidades. Mas também pode criar facilmente seus próprios modelos de formulários lista ou detalhado. Usando Xcode Storybuilder, você ou um colega com habilidades em Xcode podem criar novos modelos ou personalizar os já existentes, usando todas as funcionalidades que iOS oferece. Para usar o modelo criado, nenhuma habilidade especial é necessária, pode usar os modelos como qualquer outro modelo integrado  Leia a documentação

Use seus próprios ícones

4D for iOS tem uma grande biblioteca de ícones que cobre várias áreas como comércio, finanças, educação, governo, saúde, indústria, imóveis, serviços, etc. Leia a documentação 

Criar um formatador de dados personalizado

4D for iOS inclui formatadores de dados básicos para datas, porcentagem, hora, etc. Mas também pode criar seus formatadores de dados e usá-los diretamente do Editor de Projetos. Por exemplo, se quiser criar um formatador integertoString, que substitui números internos com nomes, tal como códigos de entrega. Ou  integerToImage, para substituir códigos tais como 1,2,3,4 com emblemas coloridos mostrando o estado de partner.  Leia a documentação

 

ORDA

4D v18 continua a trazer melhorias para ORDA com as funcionalidades abaixo:

Datastore Remota

Não está mais limitado ao banco de dados atual, você pode acessar um ou mais bancos de dados 4D remotos publicados em Servidores 4D. Um banco de dados remoto pode ser publicado como um recurso REST e acessados do software cliente 4D. Este banco de dados remoto é usável (leitura/escritura) diretamente com conceitos ORDA (que ativa as petições REST entre cliente e servidor). Conexões TLS são compatíveis. Pode restringir acesso para usuários 4D alvos ou desenvolver seu próprio controle de acesso nas credenciais de usuário. Mesmo usando o Servidor Web para acessar o Servidor REST, não exige uma licença Web Server. Licenças padrão 4D client são usadas para conexões. Leia a documentação 

 

Histórico de petições ORDA 

Novos métodos ORDA estão disponíveis no objeto ds para ajudar a depurar e otimizar seu código ORDA para que ganhe um melhor entendimento das petições enviadas. O método startRequestLog() é bem flexível já que quando chamado com um objeto File, pode criar histórico de petições ORDA par aum arquivo ou para a memória. Para parar o registro de petições ORDA pode chamar o método stopRequestLog()Leia a documentação 

 

Novo método para ordenar uma Seleção de Entidade 

Com a ajuda de fórmulas, pode ordenar uma seleção de entidades usando critérios complexos em um método projeto ou em uma expressão 4D. A fórmula avalia o critério de ordem que pode ser dado na forma de um objeto  String ou Formula para o método orderByFormula(). Leia a documentação

 

Pesquisas avançadas usando fórmulas 

O método query() foi atualizado para ser compatível com o objeto Formula como um parâmetro e retornar um novo objeto do tipo SeleçãoDeEntidade contendo todas as entidades encontradas. Isso permite a criação de critérios de pesquisa mais sofisticados. Leia a documentação

 

Otimização de Performance em cliente/servidor

Acessar grandes tabelas (especificamente aquelas com relações) em modo Cliente/Servidor usando ORDA foram melhoradas. Quando usar seleções de entidade em list boxes ou em loops de código (por exemplo., While ou For each) os campos usados serão automaticamente analisados para otimizar a transferência de rede. Verá até 2 a 3 vezes melhorias em performance LAN e até 30 vezes mais rapidez em WAN (dependendo da rede e tamanho de registros). E melhor que tudo – não há necessidade de mudar nada em seu código, é tudo automático. 

 

Métodos para obter a informação de estrutura

Muitos métodos estão disponíveis permitindo que obtenha informação relacionada a estrutura, tal como número de tabela ou campo. Isso pode ser útil quando integrar ORDA passo a passo com o código clássico 4D. Entretanto, o propósito principal desses métodos é dar um maneira de escrever código genérico aplicável sem importar a estrutura do banco de dados. Leia a documentação

 

Placeholders nomeados para atributos de caminho

Pode usar placeholders para atributos de caminho (nomes de campos em tabelas) Dois tipos estão disponíveis: Indexed – inseridos como  :paramIndex (e.g. :1, :2,… com um incremento de 1) na string de pesquisa e seus valores correspondentes são fornecidos pela sequência de valor dos parâmetros e Named – inseridos como :paramName e seus valores são fornecidos nos objetos atributos ou parâmetros na string de pesquisa. Leia a documentação

Placeholders nomeados para valores

Agora é mais fácil escrever pesuisas ORDA genéricas graças aos placeholders nomeados para valores. Estes placeholders são fornecidos como parâmetros objeto nas configurações de pesquisa e substituidos por outro valor quanod a string de pesquisa for avaliada.  Leia a documentação

 

 Linguagem 4D & outras propriedades de programação

Enviar Mail

Uma nova maneira de criar e enviar emails está disponível. A nova funcionalidade é fácil de usar – e também mais poderosa que maneiras anteriores usando Comandos 4D Internet. O novo comando SMTP New transporter permite que configure uma nova conexão SMTP. Criar e enviar emails segue três passos: criar seu transporter SMTP, criar um objeto mail e enviar o email. Um objeto mail têm propriedades múltiplas: fromccbctosender,textBody, htmlBody, entre outras. Além disso, um anexo pode ser adicionado com o comando MAIL New attachment . Quando criado, o objeto mail pode ser enviado com o comando transporter.send().

 

Histórico de conversações SMTP

O comando SMTP New transporter cria uma conexão entre um servidor SMTP (tal como exchange ou gmail) e o cliente, e históricos – em texto simples, sem criptografia – todas as comunicações). Uma nova propriedade logFile está disponível, contendo a rota completa do arquivo histórico de texto definido para a conexão SMTP. O arquivo pode ser produzido  em duas versões: uma versão padrão e uma estendida. Ambas podem ser ativadas pelo comando SET DATABASE PARAMETER. Leia a documentação

 

Analisar, modificar e reenviar um documento MIME

O novo parser r MAIL Convert from MIME converte um email recebido ou um documento MIME criado de 4D Write Pro para um objeto. Isso permite editar ou modificar o objeto como quiser, tal como mudar o tema, remover ou adicionar recipientes, modificar o corpo da mensagem, adicionar bordas e assim por diante – e então enviar o documento. Por exemplo no caso de usar 4D Write Pro para criar emails HTML com imagens estáticas no texto e precisar enviá-los, aqui está como proceder:

  • Exporte seu documento 4D Write Pro em formato MIME,
  • use o comando MAIL Convert from MIME para transportar o MIME em um objeto email,
  • então envie via o comando SMTP New transporter. Leia a documentação 

 

 

Ativar Debugger em modo compialdo e engined

Agora pode usar o depurador 4D para depurar o código em modo produção, durante a execução do comando PROCESS 4D TAGS via o comando TRACE em código inserido entre as etiquetas <!–#4DCODE–>. Leia a documentação

 

Construa seu diálogo de conexão para selecionar o servidor

Agora pode usar uma aplicação monousuário fusionada para construir seu diálogo de conexão para um servidor fusionado. Leia a documentação

 

Comando Form Event retrabalhado

O comando Form event foi renomeado como Form event code por propósitos de claridade quando o comando FORM Event, retornando um objeto, foi adicionado – não precisa mudar seu código. O novo comando retorna um objeto com múltiplas informações. Além do evento em si mesmo também retorna informação sobre o objeto que ativou o evento, tal como o nome de objeto e dados adicionais dependendo do tipo objeto. Leia a documentação

 

Notação de objeto para manejar arquivos e pastas 

Criar, modificar e apagar arquivos e pastas em seu disco ficou mais fácil e intuitivo. Um novo comando Folder foi adicionado que permite criar um objeto pasta para uma constante, uma rota POSIX, ou uma rota de plataforma. O objeto pasta tem propriedades (ou sejanamemodificationDatemodificationTime) e métodos (por exemplo, create()moveTo()rename()delete()) que ativam a criação e manipulação de pastas. O comando File também está disponível para manejar arquivos. O novo objeto arquivo permite acessar e manipular atributos dee arquivo. Pode usar os métodos de arquivo para escrever e ler os conteúdos de um arquivo, movê-lo, apagá-lo, etc. Leia a documentação

 

Comandos Zip

Pode compactar ou descompactar seus arquivos com código sem chamar bibliotecas externas ou ferramentas. O novo comando Zip Create archive permite que crie um arquivo zip enviando um arquivo, pasta ou um objeto com os parâmetros. Para descompactar, use o novo comando ZIP Read archive para retonar um objeto arquivo que possa ser manipulado para obter a lista de arquivos, extrair um arquivo particular ou volume completo. Usar ou criar um arquivo zipado é bem parecido com o funcionamento dos comandos File e Folder, mantendo seu código simples e fácil de ler. Leia a documentação

 

Recuperar a cadeia de execução 

O novo comando Get call chain está disponível para dar informações sobre o código executado. Isso ajuda a saber onde você está no código, especialmente quando um método chama outros métodos, que por sua vez podem chamar outros métodos. O comando retorna uma coleção de objetos com cada objeto representando um passo da execução e descrevendo seu banco de dados, tipo método, nome do método e linha de chamada. O comando pode ser usado em todos os contextos de execução de código, em modos interpretado e compilado. Leia a documentação

 

Novas ferramentas para analisar históricos de depuração 

Uma nova ferramenta está disponível para ajudar a analisar os históricos de depuração. Por exemplo, pode ver quais processos consumem mais tempo, a cadeia de chamadas com seu tempo de execução correspondente e muito mais. Esta ferramenta foi criada para ajudar a encontrar conflitos no código e melhorar a performance de seus bancos de dados. Leia a documentação

 

Aplicações 4D Headless

Agora pode lançar aplicações 4D sem interface, chamado modo headless via CLI (Command Line Interface) com o novo parâmetro headless. Disponível para todos os tipos de aplicações: 4D, 4D Server, standalone, remoto, aplicações fusionadas. Mensagens de erro ou outros diálogos são captados automaticamente e redirecionados para o arquivo histórico, evitando parar o servidor. Leia a documentação

 

Preemptivo

Desativar checagem local de  thread-segurança

Agora é possível dizer ao compilador que uma parte do código não deveria ser checada para compatibilidade não preemptiva, se souber que esta parte do código não será executada porque é parte de uma cláusula If ou Case of e só executada em modo cooperativo. Para fazer isso, precisa cercar o código a ser excluído da checagem de segurança thread com as diretivas especiais %T- e %T+ como se fossem comentários. O comentário //%T- desativa a checagem de segurança thread e  //%T+ ativa novamente. Leia a documentação

Processos preemptivos em  4D remoto

Seus processos podem rodar preemptivamente em 4D Remote, Isso significa maior vantagem do  poder de computadores multi-núcleo. Dividir uma operação em partes e rodar em todos os núcleos disponíveis, em paralelo, para ter resultados mais rápidos. Leia a documentação

Mais comandos  thread-seguros

Com todos os novos comandos thread seguros, suas aplicações podem aproveitar de computadores multi-núcleo. Isso traz respostas mais rápidas para as petições simultâneas.

Os comandos 4D abaixo agora são thread seguros: COMPRESS BLOBEXPAND BLOB, BLOB PROPERTIES, ENCRYPT BLOB, DECRYPT BLOB,GENERATE ENCRYPTION KEYPAIR, GENERATE CERTIFICATE REQUEST, RECEIVE BUFFER, SET DEFAULT CENTURY, GET DOCUMENT ICON, TRANSFORM PICTURE, SVG EXPORT TO PICTURE, Get localized document path, Get database localization, LOCKED BY, LOG EVENT, Current client authentication, GET MEMORY STATISTICS. Leia a documentação

Begin/End SQL em modo preemptivo

Begin SQLEnd SQL, e as declarações SQL associadas, usadas com um banco de dados interno, agora são compatíveis com modo preemptivo.  Pode iniciar todas suas petições em paralelo e aumentar a velocidade de suas aplicações se estes comandos forem usados para várias atividades assíncronas. Leia a documentação 

Sincronizar seus processos

Pode usar  New signal – por exemplo – para delegar trabalho para um processo cooperativo para usar u m comando não preemptivo. O comando cria um objeto partilhado e permite gerenciar a progressão do processo atual com dois novos métodos: trigger()wait(). Leia a documentação

 

Chamarl o evento onResize em subformulários

Quando um formulário conter um ou mais subformulários pode gerenciar diretamente no evento on resize no método subformulário. Este evento será ativadao cada vez que o tamanho do objeto subformulário for modificado dentro do formulário principal. Isso pode ocorrer:

  • Quando o formulário principal for redimensionado
  • Quando um divisor modificar a altura ou largura do objeto subformulário.
  • Quando o tamanho de um objeto subformulário for modificado por programação usando OBJECT Set coordinates. Leia a documentação

 

Novo tipo de dados  “variant” 

Um novo comando está disponível para usar variáveis como um tipo variável Variant: C_VARIANT. O tipo de dados variant pode ser usado para representar qualquer outro tipo de dados (BLOB, Booleano, Coleção, Data, Longint, Objeto, Imagem, Ponteiro, Real, Texto, Hora, Null, Undefined.) com exceção dos arrays. Pode também usar o comando Type para descobrir o tipo da variável e  Value type para o tipo de valor. Dados Variant ajudam a escrever código genérico, como permitir que um método receba um parâmetro que seja texto ou blog, sem precisar do uso de um ponteiro. Leia a documentação

 

Ler campos objeto 4D com motor SQL

O motor SQL foi atualizado para permitir a leitura de campos objeto 4D. Para navegar o conteúdo de um campo objeto, a função SQL CAST foi estendida para retornar uma representação  JSON do campo. Leia a documentação

 

Melhorar testes de banco de dados

Produtos 4D podem ser lançados usando comandos de parâmetros de linha que permitem testes ou lançamentos automáticos. Entretanto, novos parâmetros foram adicionados para dar maior flexibilidade quando abrir seus bancos de dados:

–opening-mode: define a abertura de seu banco de dados em modo  interpretado ou compilado.

–create-data: permite criar novos dados se o arquivo de dados atual for  not found ou com um specific name se –dados forem passados.

–user-param: envia uma string que pode ser lida depois que o banco de dados for lançado usando o comando GET DATABASE PARAMETER. Leia a documentação

 

Define um nome alternativo para a conta de usuário 4D

Um novo comando está disponível para definir um nome personalizado para usar ao invés do nome da conta de usuário 4D. SET USER ALIAS. Aceita uma string como um parâmetro. Esta string (alias – apelido) substitui o nome de usuário no ambiente 4D. Um alias permite que use seu sistema usuário/senha ou então um diretório externo de usuário como Active Directory ou LDAP enquanto aproveitando todos os conceitos de identificação integrados em 4D. . Leia a documentação

 

Exportar um formulário 4D clássico para um formulário dinâmico

Um novo comando FORM Convert to dynamic está disponível que permite exportar um formulário clássico 4D (armazenado em arquivo .4DB) para um formulário dinâmico. Pode passar o nome de formulário e receber um objeto descrevendo o formulário. Dependendo de suas necessidades, pode mudar suas opções de formulário tais como tamanho de fonte ou posição de objetos na tela ou até adicionar objetos antes de exibí-los. Leia a documentação

 

Melhorias no histórico de debug

O comando SET DATABASE PARAMETER foi melhorado para permitir o histórico apenas de processos específicos, assim como métodos membros (métodos coleção ou objetos) Um novo seletor está disponível) (Current process debug log recording) que lança um histórico de depuração do processo atual. Leia a documentação

 

Formulários dinâmicos e ordem de entrada

AGora pode definir uma ordem de input que não é associada necessariamente com a ordem-z. Para cada página de sua definição de formulário, o atributo “objetos” contém uma lista de elementos de formulário que são arranjados de acordo com a ordem-z. Um novo atributo foi adiconado para esta lista: “entryOrder”. Permite que especifique sua ordem de input personalizada. Se este atributo estiver indefinido, 4D usa a z-order (ou seja, a ordem definida no atributo “objects”). Leia a documentação

 

Instâncias Multi-cliente

Rodar clientes múltiplos no mesmo computador e simultaneamente conectá-los ao mesmo Server 4D agora é possível. Cada conexão cliente inclui uma pasta de cache separada contendo o endereço IP da conexão, porto e código hash. Graças a isso, pode conectar vários clientes para a mesma máquina para servidores múltiplos em máquinas diferentes. Nenhuma configuração é necessária. Leia a documentação

 

Escrever seus próprios métodos para objetos

O comando New formula foi estendido para permitir que crie fórmulas como objetos. Pode passar parâmetros ou acessar os conteúdos do objeto fórmula. Fórmulas como objetos podem realizar cálculos para atributos objetos para serem passados a um método. Objetos agora podem ter sua própria callback ou manejamento de erro. Se já usar ORDA ou usando seleção clássica baseada em codificação, objetos ficaram muito mais poderosos Leia a documentação

Blocos comentário 4D

Comentários podem ser uma única linha de comentário ou divididos em várias linhas. Aoo invés de ter várias linhas com o prefixo //, pode simplesmente usar /* no começo de um comentário e */ no final para comentar um bloco inteiro. Também pode colapsar e expandir o bloco. Os comentários também podem ser adicionados para qualquer parte de uma linha, mesmo dentro de uma condição if ou de um loop. Leia a documentação

Atributo de compatibilidade SVG “non-scaling-stroke”

Em SVG standard, o atributo “non-scaling-stroke” indica que a  largura da linha stroke não depende de zoom ou escalamento. Em outras palavras, as linhas de um objeto não são afetadas por transformações e zoom. Foram adicionados novos comandos para o tema “4D SVG”. Pode definir o atributo “non-scaling-stroke” para desenhar objetos com o método VG_SET_STROKE_VECTOR_EFFECT. Leia a documentação

Comandos de administração 4D Server

A lista de comandos dá a habilidade de criar sua interface de administração como diálogos no servidor, cliente ou mesmo páginas  HTML para acesso web.

  • SEND MESSAGE TO REMOTE USER para enviar uma mensagem do servidor para um usuário remoto.
  • Get process activity para criar uma lista de sessões de usuário.
  • DROP REMOTE USER para terminar uma sessão de usuário.
  • ABORT PROCESS BY ID para parar um processo específico usando seu número de processo único.
  • Get process activity ou Process properties para descobrir o número de processo único.
  • REJECT NEW REMOTE CONNECTION para bloquear novas conexões remotas.
  • Get application info para dizer se as conexões foram aceitas ou recusadas.
  • SOAP REJECT NEW REQUESTS para bloquear petições SOAP.
  • WEB Get server info para saber se conexões foram aceitas ou recusadas
  • Refresh license para atualizar uma licença. Leia a documentação

Mais informação sobre processos web

Novas informações sobre a URL usada por processos web está disponível. Esta informação pode ser recuperada de duas maneiras: via a Janela de Administração 4D Server ou via a linguagem 4D com o comando  Get process activity; um novo atributo “url” foi adicionado ao objeto de processo quando o tipo de processo for um processo web. Leia a documentação

 

O novo comando Get application info recupera informação detalhada sobre a atividade e configuração da rede de seu banco de dados ativo. Este comando pode ser chamado em cliente remoto ou no 4D Server. Leia a documentação

Relatório rápido

Gerenciar métodos de callback

AGora é possível estabelecer o parâmetro “methodName” no comando QR REPORT. Este método é uma callback que roda em cada evento gerenciado:
  • qr cmd open
  • qr cmd save
  • qr cmd save as
  • qr cmd generate
  • qr cmd page setup
  • qr cmd print preview

No método callback, pode interceptar todos os eventos gerenciados, fazer o que precisar, e executar o evento com o comando QR EXECUTE COMMAND. Leia a documentação

Gerenciar espaçamento subtotal

Para cada quebra (subtotal), pode estabelecer uma quebra de página ou uma altura de linha diferente. No caso de uma altura de linha diferente, a diferença pode ser expressa em pontos  (pt) ou porcentagem (%). Leia a documentação

Gerenciar a Borda

Pode mudar a aparência da frame da célula, coluna ou linha em seu relatório mudando a cor ou a grossura da linha. Coloque o mouse sobre o elemento que deseja configurar para exibir o botão que chama a janela pop-up, clique nela, e depois pode escolher o parâmetro apropriado (a configuração de borda, grossura de linha ou a cor). Leia a documentação

Melhorias UI

A primeira melhoria é  um novo botão“Save / Save as”. Escolher “Salvar” salva seu trabalho atualizando a última versão salva do arquivo com a versão em sua tela. Escolher “salvar como” exibe uma pergunta se deseja salvar como um arquivo com nome diferente. A segunda melhoria são dicas de ferramentas (pequenas mensagens quando passa por uma área). São adicionadas para as linhas subtotais para que possa facilmente ver a direção de ordenação: ascendente ou descendente Leia a documentação

 
4D Write Pro

 

Nova barra de ferramentas

Uma nova barra de ferramentas está disponível com 4D Write Pro para ajudar com o processo de criação de documentos. Arrastando e soltando um novo item da Biblioteca de Objetos, pode ter acesso a uma barra de ferramentas completa com sete tipos diferentes de abas para que possa alternar rapidamente entre ações. Leia a documentação

 

Folhas de Estilo 4D Write Pro

Pode gerenciar suas próprias folhas de estilo para parágrafos ou caracteres graças aos novos comandos que permitem criar, apagar e importar folhas de estilo. Uma folha de estilo de caractere permite que defina como um caractere (ou palavra) será exibida e impressa, enquanto uma folha de estilo de parágrafo permite que defina cores de margem, preenchimento, abas, bordas e muito mais. Uma folha de estilo é um objeto que pertence a um documento. É criada usando o comando WP New style sheet. Após criado, pode usar este objeto como um parâmetro para WP Set attributes. Abaixo está u ma lista dos novos comandos para ajudar a manejar folhasde estilo:

  • WP New style sheet: permite criar uma folha de estilo
  • WP DELETE STYLE SHEET: permite apagar uma folha de estilo
  • WP Get style sheet: permite encontrar uma folha de estilo por seu nome,
  • WP Get style sheetspreenche uma coleção de folhas de estilo de um dado tipo e finalmente
  • WP IMPORT STYLE SHEETS: permite importar folhas de estilo existentes criadas em outro documento 4D Write Pro (como um modelo, por exemplo).

Leia a documentação

 

Converter seus documentos para formato .docx

Agora documentos 4D Write Pro podem ser exportados em formato .docx. Para fazer isso, use a nova constante wk docx com o comando existente WP EXPORT DOCUMENT ou use o comando WP EXPORT VARIABLE . Leia a documentação

Redimensionar largura coluna

Uma propriedade fora da caixa é fornecida para permitir que usuários finais redimensionem a largura de suas colunas. Para isso pode passar com o mouse sobre os separadores de linha e o ponteiro do mouse vira uma flecha dupla que a coluna pode ser redimensionada. Quando clicar e arrastar estes separadores, colunas direita e esquerda serão redimensionadas. Se a tecla shift for pressionada enquanto arrastar, só as colunas esquerdas serão redimensionadas e todas as colunas direita serão mudadas. Leia a documentação

 

Adicionar e remover linhas e colunas

Gerenciar a inserção e deleção de linhas e colunas é possível com quatro novos comandos: para inserir linahs e colunas, dois novos comandos foram criados: WP Table insert rows e WP Table insert columns. Ambos comandos retornam ranges que correspondem à partes criadas dentro da tabela. Para remover linhas e colunas, dois comandos novos estão disponíveis: WP TABLE DELETE ROWS e WP TABLE DELETE COLUMNS. Leia a documentação

Altura fixada para cabeçalhos e rodapés

Um novo atributo de documento: wk header and footer autofit está disponível para determinar se cabeçalhos e rodapés deveriam ser redimensionados automaticamente para evitar truncar seus conteúdos. Este atributo pode ser estabelecido como True ou False, No caso de documentos criados recentemente, este parâmetro é estabelecido como (auto-redimensiona cabeçalhos e rodapés serão ativados) e para  False no caso de importar um documento 4D Write Pro. Leia a documentação

 

Criar cabeçalhos e rodapés com código

Dois novos comandos foram adicionados: WP New headerWP New footer para permitir programação para criar cabeçalhos e rodapés. Também pode usar código para apagar um cabeçalho e rodapé com os comandos WP DELETE HEADERWP DELETE FOOTER. Leia a documentação

Régua vertical 4D Write Pro

Uma nova régua vertical foi adicionada. Permite que usuários gerenciam graficamente margens verticais. Se seu documento conter cabeçalhos ou rodapés, o espalo entre eles e o corpo de seu documento também será modificado com a linha vertical. A nova propriedade Show vertical ruler está disponível da Lista Property, permitindo que ative a exibição da régua. Leia a documentação

Layout de Página

Pode definir o tamanho de página, orientação e margens com código. Novos atributos podem ser usados com os comandos  WP SET ATTRIBUTES e  WP GET ATTRIBUTES . Pode estabelecer as propriedades para um documento inteiro  4D Write Pro. Os valores abaixo são usados como padrão para todas as seções de documento que pode mudar para uma seção dada:

  • wk page widthwk page height – para tamanho página
  • wk page orientation – para orientação de página
  • wk page marginwk page margin leftwk page margin rightwk page margin topwk page margin bottom – para margens de página.  Leia a documentação

Novos atributos para evitar linhas viúvas, órfãs e quebras de páginas

Novas opções foram adicionadas para  4D Write Pro para ajudar a evitar linhas viúvas e órfãs para parágraos ou tabelas, e quebras de páginas dentro de parágrafos ou tabelas.

Linhas viúvas e órfãs são as linhas no início ou final de um parágrafo que são deixadas sozinhas no final ou fundo da página. Para evitá-las, pode usar o novo atributo com o comando WP SET ATTRIBUTESwk avoid widows and orphans. Os valores disponíveis para este atributo são  wk true ou wk false. Quando este atributo for estabelecido para um parágrafo ou uma tabela, 4D Write Pro evita que este parágrafo ou tabela crie uma linha única separada em outra página.

Para quebras de páginas dentro de parágrafos ou tabelas, um novo atributo está disponível: wk page break inside. Os valores disponíveis são wk avoid ou wk auto. Esta opção é útil quanod não quiser um parágrafo, vários parágrafos ou uma tabela quebradas entre duas páginas. Leia a documentação

Gerenciar seções com código

Uma seção permite que obtenha layouts diferentes dentro do mesmo documento. Por exemplo, para cada seção, pode definir um tamanho diferente de papel e orientação, margens diferentes, cabeçalhos e rodapés diferentes e assim por diante. Isso resulta em documentos complexos e com lindo dessign. Seções pdoem ser manipuladas por código com o comando WP Get sections, permitindo que obtenha uma coleção de seções em seu documento. O comando WP Get section pode ser usado para obter a seção atual. Para mudar os atributos para uma seção especifica, pode passar a referência de seção aos comandos WP SET ATTRIBUTESWP GET ATTRIBUTES. Pode criar subseções com o código usando o novo comando WP Create subsection.  Leia a documentação

Paginação de Tabela

Tabelas grandes são agora exibidas automaticamente em mais de uma página. Não precisa contar linhas para checar o tamanho da página ou sua orientação porque tabelas são divididas dinamicamente quando uma quebra de página ou coluna acontecer. O comando WP INSERT BREAK foi atualizado para ser compatível com a nova constante: wk paragraph break. Leia a documentação

4D expressões compatíveis em imagens ancoradas

Uma expressão válida 4D pode ser associada com uma imagem ancorada com o novo atributo wk image fornecendo ainda tmais flexibilidade. Apenas estabeleça esta constante para qualquer imagem ancorada para definir um método que retorna uma imagem. Leia a documentação

Obter coordenadas em um documento 4D Write Pro

Pode obter as coordenadas em um documento 4D Write Pro. O comando WP Get position retorna mais informação sobre a posição atual de uma range ou uma referência de elemento usando dois novos atributos: boundsrangeHeight. O primeiro atributo descreve o retângulo ao redor de uma range de acordo com seu tipo (seja “default type” (charateres), “paragraph type”“table type” ou “picture type”). Também têm atributos próprios: topbottomleft, e right. O segundo atributo descreve a altura da borda do retângulo. Leia a documentação

Estrutura Virtual

Expressões de Tabela e campo inseridos nos documentos 4D Write Pro são agora compatíveis com definição de estrutura virtual no banco de dados. Isso é feito com os comandos SET TABLE TITLES(…;*) SET FIELD TITLES(…;*). O editor de fórmula também é compatível com a estrutura virtual e já que 4D automaticamente estabelece a interface de usuário baseada nas configurações de sistema, o editor de formulário será exibido na linguagem do usuário.  Leia a documentação

Links em um documento 4D Write Pro

WP SET LINK permite estabelecer uma URL e também dá a habilidade de chamar um método de sua aplicação 4D (com parâmetros) ou bookmarks alvo de seu documento. O novo comando WP Get links retorna uma coleção de todos os links no documento em uma única chamada. Cada link da coleção é u m objeto com uma descrição do link em seus atributos. Leia a documentação

Manejar propriedades de vista

Propriedades da vista podem ser gerenciadas por programação. O comando WP SET VIEW PROPERTIES permite estabelecer dinamicamente uma ou mais propriedades de vista na área 4D Write Pro. As configurações pdoem ser retornadas em um objeto com todas as propriedades de vista via o comando WP Get view properties. Leia a documentação

Configurações tabulação

Tabulações podem ser estabelecidas com uma coleção de strings, valores numéricos ou mesmo com coleções de objetos! Precisa apenas modificar os valores normais de tabulação, pode usar um objeto com uma nova constante wk tab default (adicionado especificamente para este propósito).  Leia a documentação

Mais alvos e comandos renomeados

Os comandos listados abaixo foram estendidos para aceitar qualquer tipo de alvo como primeiro parâmetro. Podem usar uma range, mas agora também podem usar uma referência (cabeçalho, corpo, rodapé), elemento (imagem, parágrafo)( ou o documento inteiro como escopo:

  • WP SET TEXT
  • WP INSERT BREAK
  • WP INSERT DOCUMENT
  • WP INSERT PICTURE
  • WP Insert table
  • WP SET ATTRIBUTES
  • WP GET ATTRIBUTES

 

Vários comandos foram renomeados:

Nome anterior Novo nome
WP Create Paragraph range WP Paragraph range
WP Create Picture range WP Picture range
WP Create range WP Text range
WP Create Table range WP Table range
WP Get bookmark range WP Bookmark range
WP Get selection WP Selection range

Leia a documentação

 
 4D View Pro

 

Trabalhando com documentos .xlsx em 4D View Pro

Os comandos existentes 4D View Pro  VP IMPORT DOCUMENTVP EXPORT DOCUMENT foram melhorados. Agora são compatíveis com arquivos usando a extensão .xlsx  (Microsoft Excel). Pode passar sua rota de arquivo para os comandos para começar e executar. Leia a documentação

 

Uma barra de ferramentas estilo ribbon 

Uma barra de ferramentas poderosa do estilo ribbon para melhorar a interface de usuário 4D View Pro é fornecida. permite organizar as propriedades 4D View |Pro em uma série de abas, para aumentar a visibilidade das funções a ativar rapidamente o acesso a diferentes comandos. Vale mencionar que esta barra de ferramentas também introduz novas funções como opções de exportação de  PDF e CSV . Leia a documentação

 

Use methods and database fields 

Your database security is enhanced as you now have even more control over the data you choose to make available (or not) to your end-users, as well as which fields or methods allow access.

Commands and variables can’t be called directly from a cell for security reasons, but they can be accessed through allowed methods which return the command’s or variable’s value. Methods can be authorized with the SET ALLOWED METHODS command, tables or fields can be declared as virtual structures with the SET TABLE TITLES and SET FIELD TITLES commands. Variables, as well as 4D commands, must be contained in an allowed method. Leia a documentação 

Mais controle sobre suas configurações 4D method  

VP SET ALLOWED METHODS, um novo comando que permite especificar par|âmetros do método, tipo e inclui um sumário. Agora seus métodos podem ser mais informativos e descritivos para o usuário final. Leia a documentação

 

Imprimir e exportar PDF

Agora pode definir opções especificas de impressão para cada folha com o comando VP SET PRINT INFO. Estass opções podem ser usadas para preparar o documento antes de exportar ou imprimir um PDF. Para exportar um documento em formato PDF pode usar o comando VP EXPORT DOCUMENT. A informação de  VP PRINT INFO será usada para embeber automaticamente todas as fontes usadas em seu documento em um arquivo pdf gerado. Para a impressão pode usar o comando VP PRINT.  Leia a documentação

 

Convert to SVG

O comando VP Convert to image permite converter a folha ou parte da folha para SVG. A SVG pode então ser usada dentro de um formulário 4D para ser impresso como parte de uma impressão 4D, junto com outros formulários ou dados. Leia a documentação

 

Adicione novos eventos na propriedade Lista

Um novo conjunto de eventos de formulário 4D View Pro estão disponíveis e listados na propriedade Lista. Retorna informação especial que pode ser acessada com o comando Form Event: “On Column Resize”, “On Row Resize”, “On Clicked”, “On Double Clicked”, “On Header Click”, “On Selection Change”, e “On After Edit”. Quando o evento ocorrer, todas as informações associadas podem ser obtidas do objeto retornado pelo comando FORM Event . Leia a documentação

 

Codificar uma range em 4D View Pro

Criar ranges via código agora é possível. Novos comandos estão disponíveis para permitir que defina um objeto range para manipular suas células: VP CellVP CellsVP ColumnVP RowVP All, VP Combine ranges, e VP Name. Leia a documentação

 

Obter e estabelecer conteúdos de célula

Um novo conjunto de comandos para preencher seus documentos vai programação está disponível: VP SET VALUE, VP SET BOOLEAN VALUE, VP SET DATE TIME VALUE, VP SET DATE VALUE, VP SET TIME VALUE, VP SET NUM VALUE, VP SET TEXT VALUE, VP SET FORMULA, VP SET FIELD, VP Get value, VP Get formula. Leia a documentação

 

Nomeie suas ranges e fórmulas

Um novo conceito foi introduzido: ranges e fórmulas nomeadas. Pode criar dois tipos de nome via programação:

O primeiro é para uma range de células onde pode aplicar um nome legível via código para as células que está interessado com  VP ADD RANGE NAME.

O segundo refere a uma fórmula com  VP ADD FORMULA NAME para substituir cálculos com nomes legíveis em suas folhas de cálculo. Também cria uma constante e faz mais fácil os cálculos em suas folhas de cálculo. Leia a documentação

 

Gerenciar seleções e a célula ativa

Um conjunto de comandos foi incluido para ajudar a estabelecer a célula ativa ou seleções em seus documentos:

  • VP Get active cell
  • VP Get selection
  • VP SET ACTIVE CELL
  • VP SET SELECTION
  • VP ADD SELECTION
  • VP RESET SELECTION

 

E se quiser ver uma célula em uma posição especifica em sua área 4D View Pro (por exemplo, superior esquerda ou inferior direita),pode usar o comando VP SHOW  CELL. Leia a documentação

Usar coleções para ler e escrever em 4D View Pro 

Quatro novos comandos estão disponíveis para permitir que leia um grande número de valores diferentes ou fórmulas de forma mais fácil e rápida via coleções: VP SET VALUESVP Get valuesVP SET FORMULAS, e VP Get formulas. Para estabelecer valores ou fórmulas em células, simplesmente crie uma coleção onde cada elemento representa uma linha. Cada linha é uma coleção de valores de células nas colunas. Para leitura, pode passar uma range de células para VP Get values. O comando retorna os valores nas coleções correspondentes. Leia a documentação

 

Personalizar estilos

Pode personalizar o estilo em seus documentos 4D View Pro. Três opções diferentes estão disponiveis. POde usar:

  • comandos estilo para definir o estilo geral da folha com os comandos VP SET DEFAULT STYLEVP Get default style ou
  • comandos folha de estilo para definir estilos frequentemente usados com os comandos VP ADD STYLESHEETVP REMOVE STYLESHEETVP Get stylesheet, e VP Get stylesheets , ou
  • comandos de estilo de célula para definir o estilo em células especificas com os comandos VP SET CELL STYLEVP Get cell style.

Também o novo comandoVP SET BORDER  foi adicionado para gerenciar as bordas da range. Leia a documentação

 

 Lançamentos R em profundida