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.
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 file e File 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.
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
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:
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, 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
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
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
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
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
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: from, cc, bc, to, sender,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 seja, name, modificationDate, modificationTime) 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
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 BLOB, EXPAND 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 SQL, End 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
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() e 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
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
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
- 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
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
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 sheets: preenche 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).
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 header e WP 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 HEADER e WP DELETE FOOTER. Leia a documentação
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
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 width, wk page height – para tamanho página
- wk page orientation – para orientação de página
- wk page margin, wk page margin left, wk page margin right, wk page margin top, wk 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 ATTRIBUTES: wk 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
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 ATTRIBUTES e WP GET ATTRIBUTES. Pode criar subseções com o código usando o novo comando WP Create subsection. Leia a documentação
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: bounds e rangeHeight. 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: top, bottom, left, e right. O segundo atributo descreve a altura da borda do retângulo. Leia a documentação
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(…;*) e 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
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
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 |
Trabalhando com documentos .xlsx em 4D View Pro
Os comandos existentes 4D View Pro VP IMPORT DOCUMENT e VP 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 Cell, VP Cells, VP Column, VP Row, VP 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
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 VALUES, VP Get values, VP 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 STYLE e VP Get default style ou
- comandos folha de estilo para definir estilos frequentemente usados com os comandos VP ADD STYLESHEET, VP REMOVE STYLESHEET, VP 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 STYLE e VP 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