4D Doc Center : Manual de Desenho 4D

Propaganda
Manual de Desenho 4D
Introdução
Gestão de arquivos 4D
Preferências
Propriedades do Banco
Explorador
Explorador de Execução
Procurar e substituir no ambiente Desenho
Arrastar e Soltar Objetos
Criar uma estrutura de banco de dados
Gerenciar Formulários
Criar formulários
Trabalhar com objetos ativos
Propriedades de objetos ativos
List boxes
Subformulários e widgets
Formulários de saída e relatórios
Formulários de usuário
Editar Métodos
Usuários e grupos
Menus e barras de menus
Biblioteca de imagens
Dicas de ajuda
Listas
Folhas de estilo
Filtros e formatos
Explorador de Recursos
Gerenciar registros
Procurar registros
Ordenar registros
Editor de fórmulas
Relatórios rápidos
Editor etiquetas
Exportar e importar dados
Publicar ou utilizar serviços Web
Backup e restauração do banco de dados
Centro de segurança e manutenção
Compilação
Finalizar e distribuir aplicativos
Desenvolver e instalar componentes 4D
Apêndices
-1-
Introdução
Bem-vindo
Ambientes de trabalho
Servidores integrados
Novas características de 4D v12
Principais novidades de 4D v13
Principais novas funcionalidades de 4D v14
-2-
Bem-vindo
4D é uma poderosa aplicação de banco de dados relacional, um motor SQL, uma ferramenta completa de desenvolvimento
RAD multi-plataforma e um servidor web dinâmico.
Você pode utilizar 4D para administrar seus próprios dados ou para desenvolver aplicações personalizadas para diferentes
tipos de tarefas de administração de banco de dados.
É possível, por exemplo:
Criar uma estrutura de banco de dados de tabelas e campos,
Construir formulários para introduzir, modificar e visualizar registros,
Buscar e ordenar registros,
Criar relatórios e etiquetas com informações do seu banco de dados,
Importar e exportar dados entre banco de dados 4D e outras aplicações,
Publicar seu banco de dados na World Wide Web.
Com 4D, você pode melhorar as tarefas mais comuns de administração de dados graças às seguintes características:
Um poderoso assistente de formulários que permite criar formulários e relatórios sofisticados em poucos passos,
Um sistema de senhas para proteger dados privados que permite diferenciar os níveis de acesso,
A possibilidade de criar aplicações personalizadas com seus próprios menus, caixas de diálogo, barra de ferramentas
e botões; estas aplicações podem ser compiladas e distribuídas a outros usuários,
A possibilidade de utilizar em seu banco de dados inumeráveis Serviços Web publicados na Web,
Uma linguagem de programação altamente funcional, que permite incorporar comandos ou funções escritas em outras
linguagens.
Um motor SQL dentro dos melhores padrões permite criar tabelas, campos, manipular e buscar os dados do banco.
Uma janela centralizada de administração e controle da aplicação.Os usuários principiantes podem criar rapidamente
banco de dados e começar a administrar seus dados.
Os usuários iniciantes podem criar rapidamente bancos de dados e começar a administrar os seus dados. Os usuários com
um pouco mais de experiência podem personalizar seus bancos de dados com as ferramentas de desenvolvimento da 4D.
Os usuários experientes podem utilizar a poderosa linguagem de programação da 4D ou SQL, para adicionar
funcionalidades sofisticadas ao seu banco de dados, tal como a transferência de arquivos ou a publicação na Web.
-3-
Ambientes de trabalho
4D pode ser utilizado em dois ambientes diferentes: o ambiente Desenho e o ambiente Aplicação.
O ambiente Desenho
O ambiente Desenho é utilizado para planejar, desenvolver e testar os seus bancos de dados. Todos os aspectos do design
de seu banco de dados estão no ambiente Desenho. O ambiente Desenho é utilizado para criar tabelas e campos; definir
relações entre as tabelas, criar formulários para a entrada de dados, visualização e impressão de dados, implementar um
sistema de acesso por senhas, criar menus personalizados ou associar métodos aos objetos do banco de dados.
Por exemplo, se você quer fazer um acompanhamento da informação de cada um dos empregados de sua empresa. No
ambiente Desenho, você pode criar uma tabela [Empregados] e adicionar os campos necessários para armazenar dados
dos empregados tais como nome, cargo, data de ingresso e salário. Você também pode adicionar uma tabela
[Departamentos] que contenha a informação de cada um dos departamentos em sua empresa. Logo, poderia criar uma
relação entre estas duas tabelas que lhe permita determinar em que departamento trabalha um empregado e quais
empregados trabalham em cada departamento.
O ambiente Desenho lhe dá acesso a várias janelas e editores permitindo que se realizem operações padronizadas nos
dados de seu banco. Você pode introduzir dados, procurar um registro em particular, importar e exportar dados, imprimir
relatórios ou gerar etiquetas para um envio de correio. Você pode testar o funcionamento do seu banco de dados, por
exemplo, introduzindo ou importando registros ou executando seus métodos. Os editores são os mesmo que estão
disponíveis para os usuários no ambiente Aplicação.
O ambiente Desenho lhe permite realizar as seguintes operações:
Criar as tabelas e campos que armazenarão os dados,
Definir relações entre os campos,
Criar formulários para a entrada, visualização, impressão ou publicação de dados,
Criar listas de seleção para facilitar e controlar a entrada de dados,
Escrever e executar métodos para automatizar operações em seu banco de dados,
Criar menus personalizados e associá-los com métodos ou ações automáticas,
Criar e administrar múltiplos processos, permitindo-lhe realizar várias operações simultaneamente no banco de dados,
Definir um sistema de senhas para controlar o acesso à informação,
Lançar um servidor web ou um servidor SQL com o propósito de usar os dados através de aplicaçoes externas,
Chamar serviços web e publicar métodos como serviços web,
Compilar o banco de dados para acelerar sua execução,
Combinar o banco de dados com o motor de 4D para gerar aplicações autônomas.
Introduzir e modificar dados,
Visualizar e imprimir dados,
Buscar e ordenar registros,
Criar relatórios, etiquetas e gráficos,
Importar e exportar dados,
Trabalhar com todos os plug-ins 4D instalados na base.
O ambiente Aplicação
O ambiente Aplicação é o ambiente que você utiliza para executar uma aplicação personalizada – uma aplicação que utiliza
4D mas que tem seu próprio sistema de menus e sua própria interface. Este é o ambiente no qual geralmente são
distribuídas as aplicações criadas no ambiente Desenho. Para acessar desde o ambiente Desenho, só deve selecionar o
comando Testar a Aplicação no menu Executar.
Nota
O ambiente Aplicação só pode ser utilizado se foi criado pelo menos um menu utilizando o editor de barra de menus.
Por padrão, 4D cria uma barra de menu padrão.
É possível fechar automaticamente todas as janelas do ambiente Desenho ao passar ao ambiente Aplicação (ver Sair
do ambiente Desenho ao passar ao ambiente Aplicação).
-4-
No ambiente Aplicação, você controla todo o funcionamento da aplicação, dos menus e formulários que você utiliza, até os
métodos usados para validar, processar e visualizar os dados. Você é responsável por definir os comandos de menus e
associar os métodos ou ações automáticas que administram tarefas básicas tais como a entrada e a edição de dados, as
consultas, a ordenação e os relatórios. Você pode utilizar alguns ou todos os editores padrões oferecidos por 4D (ordenar
por, etiquetas, etc.) ou criar suas próprias telas e editores.
O ambiente Aplicação pode ser completamente diferente para cada aplicação que você crie. Desde o ponto de vista do
usuário, o ambiente Aplicação é uma aplicação completa que lida com um tipo específico de gestão de informaçoes.
A barra de menus gerada por 4D inclui um menu Ambiente permitindo-lhe “Voltar ao modo Desenho.”
Quando os dois modos estão abertos ao mesmo tempo, você pode alterar o ambiente clicando em suas respectivas
janelas. Ao clicar em uma janela, 4D coloca esta janela no primeiro plano e seleciona esse como o ambiente ativo.
-5-
Servidores integrados
4D tem três servidores integrados: um servidor de dados e de aplicação (4D Server), um servidor web y um servidor SQL.
Em geral a administração desses servidores é muito simples e só necessita um mínimo de parâmetros. Existem comandos de administração que
permitem controlar sua execução. Note que para ativar esses servidores, é necessário possuir as licenças apropriadas.
A implementação e administração desses servidores é tratada nos seguintes manuais:
* Servidor de dados e de aplicação: manual 4D Server, seção SET ENTERABLE
* Servidor web 4D: manual Linguagem, seção Configuração web server e gestão de conexão
* Servidor SQL 4D: manual 4D - Referencia SQL, seção Configuração do servidor SQL de 4D
-6-
Novas características de 4D v12
Totalmente orientado às tecnologias mais abertas e utilizadas, cheio de novas características destinadas a aumentar a produtividade e a
criatividade dos desenvolvedores, 4D v12 é um novo grande passo na evolução da linha de produtos 4D.
Foram integradas numerosas funções muito pedidas pelos desenvolvedores da comunidade 4D, tanto ao nível de
arquitetura, do workshop de desenvolvimento, assim como também a respeito da linguagem; novo editor de código,
otimização das funções de buscar e substituir, possibilidade de se executar scripts PHP, gestão de números UUID,
gestão de metadados nas imagens, melhora dos comandos de gestão das propriedades dos objetos e suporte
estendido de XML e SVG.
A nova possibilidade de instalar componentes na aplicação 4D permite ter todos eles à sua disposição de forma
automática em todos os seus bancos de dados. Além disso, o mecanismo dos bancos de dados externos SQL
permite aos componentes criar e utilizar as tabelas e campos.
As funções de impressão foram enriquecidas com o novo comando PRINT OBJECT, assim como também com a
possibilidade de imprimir list boxes e o suporte estendido das impressões PDF.
Os novos objetos de formulários e widgets aceleram a criação de interfaces modernas e sofisticadas: steppers, textos
com estilos, selecionadores de data (datepicker) ou de hora, área de busca textual, e além disso list boxes
hierárquicos também formam parte das novas características. Os subformulários receberam várias melhoras,
particularmente para que ficassem mais fáceis de se usar como componentes. A nova biblioteca de objetos préconfigurados oferece acesso rápido a essas funcionalidades.
Finalmente, a linguagem SQL de 4D oferece novas funções, como a replicação e sincronização de dados e a
capacidade de abrir e fechar diferentes bases 4D durante a mesma sessão.
-7-
Principais novidades de 4D v13
4D v13 está totalmente focado na abertura, enquanto mantém uma compatibilidade máxima com as bases existentes:
Abertura a outras bases de dados e a Internet graças a um servidor HTTP totalmente reescrito, um cliente HTT
completamente novoP, assim como também um driver ODBC de 64 bits,
Abertura a outras ferramentas de desenvolvimento com o novo source toolkit, um conjunto de comandos completo
(tema ) que oferece um acesso em leitura e escritura a todos os métodos da base, permitindo por exemplo exportar e
gerenciar todo seu código em forma de arquivos texto estandarte.
Abertura para as interfaces de nova geração com o uso do novo motor gráfico Direct2D e do visualizador de
impressão XPS (em Windows), uma seleção de motores de renderização para as áreas web, numerosas novas
opções de list box e a possibilidade de indexar os dados dos campos imagem,
Por último, 4D v13 também oferece várias novas funcionalidades destinadas a otimizar e melhorar o desenvolvimento
de suas aplicações 4D: armazenamento externo de dados volumosos, assim como um novo conjunto de comandos
complementários do tema Objetos (Formulários) que pode utilizar para acessar aos objetos de formulário por
programação.
-8-
Principais novas funcionalidades de 4D v14
Enquanto mantém a máxima compatibilidade com as aplicações 4D existentes, 4D v14 se caracteriza por importantes
adiantamentos em sua arquitetura, assim como numerosas adições que permiten enriquecer as interfaces de suas
aplicações.
Modernização do núcleo 4D: internamente, a reescrita do código utilizando as antigas livrarias carbon permite a 4D
v14 superar as limitações de rendimento impostas por estas livrarias, e por outra parte, as tecnologias de gerações
anteriores, como QuickTime, 4D Chart ou o formato de imagem Pict já não são compatíveis.
Os formulários em 4D v14 tem muitas características novas, em particular nos objetos em lista (list box, listas
hierárquicas, combo box, etc.), as áreas web (novas passarelas JavaScript, depurador), assim como nas áreas de
texto (rotação de textos estáticos, extensão da função de texto com estilo).
O seminário de desenvolvimento também melhorou mediante a simplificação do procedimento para a atualização de
versões, de novas caixas de diálogo de consulta, ajuda estendida na depuração e o novo On Host Database Event
database method.
Se implementaram funções específicas no núcleo de 4D para permitir as aplicações Wakanda utilizar diretamente os
dados em bases 4D.
E finalmente, A linguagem de programação de 4D foi enriquecido com numerosos novos comandos, em particular
para permitir um maior controle sobre as propriedades dos objetos, também da as boas vindas a um novo tipo de
dados: objetos (ver o comando C_OBJECT) assim como também dados de tipo "JSON" (tema novo).
-9-
Gestão de arquivos 4D
Iniciando o 4D
Arquitetura Local/Remota
Criar uma nova Aplicação
Abrir um Banco de Dados local
Conectar a uma aplicação remota
Instalar plugins ou componentes
Alterar o arquivo de dados
Descrição dos Arquivos 4D
Conversão de bancos de versões anteriores
- 10 -
Iniciando o 4D
Após ter instalado e registrado sua versão de 4D como se descreve no Guia de instalação, você pode iniciar a aplicação.
Para fazer isto, você pode selecionar o ícone da aplicação e escolher o comando Abrir no menu Arquivo do sistema
operacional, ou fazer um clique duplo diretamente neste ícone.
Aparece o assistente de boas vindas:
Esse assistente está destinado principalmente a guiar os novos usuários de 4D assim que o programa inicia. Dá acesso a todas as ações
possíveis relativas ao uso e/ou ativação da aplicação.
Por padrão, o assistente é exibido cada vez que se inicia 4D. Você pode ocultá-lo selecionando a opção Não exibir essa
janela ao iniciar. Você pode fazer com que essa mensagem apareça novamente a qualquer momento selecionando o
comando Assistente de boas-vindas no menu Ajuda:
Neste caso, ao iniciar 4D, será exibida a caixa de diálogo de abertura de arquivos diretamente, ou a opção selecionada nas
Preferências (ver o parágrafo Página Geral).
Clique na ação a ser efetuada ou no botão associado afim de obter mais informação. É fechada a janela do assistente, a
- 11 -
aplicação 4D permanece aberta mas o banco de dados não é aberto.
Neste caso, você pode abrir um banco através do Centro de Segurança e Manutenção (ver Visualização em modo
manutenção) ou criar/abrir um banco utilizando os comando do menu Arquivo ou a barra de ferramentas. Para maiores
informações sobre a criação e abertura de um banco de dados, consulte Criar uma nova Aplicação e Abrir um Banco de
Dados local.
- 12 -
Arquitetura Local/Remota
A aplicação 4D permite abrir indiferentemente bancos de dados locais ou remotos, executados por um 4D Server. No
primeiro caso, a aplicação trabalha em modo local (single user). No segundo caso, trabalha em modo remoto
(cliente/servidor).
A seleção do modo de uso se efetua ao se abrir o banco de dados, de acordo com o tipo de banco de dados a abrir:
Abrir > Banco de dados: mostra a caixa de diálogo padrão de abertura de documentos, permitindo selecionar um
arquivo de base 4D (ver o seguinte parágrafo Abrir um Banco de Dados local).
Abrir > Banco de dados remoto: mostra a caixa de diálogo de conexão ao 4D Server, permitindo selecionar um
banco de dados publicado. Para maior informação sobre essa caixa de diálogo e a abertura de bancos de dados
remotos, consulte o parágrafo Conexão ao banco de dados 4D Server no manual de 4D Server.
- 13 -
Criar uma nova Aplicação
Pode criar uma base de dados vazia ou pode criar uma base de dados a partir da definição de estrutura previamente
exportada.
A criação de um banco de dados se realiza de maneira idêntica seja a partir da aplicação 4D ou a partir da aplicação 4D Server
Criar um Banco de Dados em Branco
Você pode criar um banco em branco, ou seja, que não contenha tabelas, campos ou formulários. Esse é o equivalente a
uma folha em branco para um banco de dados.
Para criar um banco em branco
1. Selecione Novo > Banco de dados... no menu Arquivo ou no menu associado com o botão “Novo” na barra de
ferramentas de 4D.Você também pode clicar diretamente no botão “Novo” da barra de ferramentas.
Aparece uma caixa de diálogo padrão de salvar arquivos de maneira que é possível escolher o nome e a localização
do banco 4D:
2. Introduza o nome do seu banco e clique em Salvar.
Você pode escolher todo nome de arquivo que seja aceito pelo seu Sistema Operacional.
Atenção: se sua base está destinada para trabalhar em outros sistemas, deve ter em conta as restrições específicas
para cada uma delas. Por exemplo, os caracteres "backslash" (\) são aceitos sob OS X mas não são permitidos sob
Windows.
Ao validar a caixa de diálogo, 4D fecha o banco atual (se existir), cria uma pasta na localização definida (o nome da pasta é o nome do banco)
e coloca todos os arquivos necessários para o funcionamento do banco. Para maiores informações sobre a arquitetura dos bancos de dados,
consulte o parágrafo Arquitetura do Banco de Dados
É exibida a janela da aplicação 4D e o explorador aparece no primeiro plano. Logo é possível, por exemplo, criar formulários de projeto ou
exibir o editor de estruturas ou adicionar tabelas, campos, etc.
Criar um banco a partir de uma definição de estrutura
As definições de estruturas exportadas ao formato XML podem ser utilizadas para criar novos bancos de dados idênticos.
Neste caso, a definição da estrutura pode ser considerada como um modelo de estrutura, que é possível duplicar com toda
tranqüilidade.Para maiores informações sobre a exportação e importação de definições de estruturas, consulte o parágrafo
Exportar e importar definições de estrutura.
Uma definição de estrutura XML pode ser utilizada como tal ou pode ser modificada previamente por meio de um editor
XML. Este princípio permite contemplar todo tipo de mecanismo utilizado para gerar estruturas por programação.
Além do mais, como o formato interno dos arquivos XML de descrição das estruturas 4D é público (ver o parágrafo Formato de uma
definição de estrutura 4D, é possível criar este tipo de arquivo a partir de outros ambientes de banco de dados ou toda aplicação de
- 14 -
desenho para gerar automaticamente bancos de dados 4D.
Para criar um banco de dados a partir de uma definição de estrutura:
1. Selecione Novo > Banco de dados a partir de definição de estrutura... no menu Arquivo de 4D ou no menu
associado ao botão “Novo” na barra de ferramentas de 4D. Aparece uma caixa de diálogo padrão de abertura de
documentos de maneira que é possível especificar o arquivo de descrição a abrir. Você deve selecionar um arquivo
de formato XML que respeite a “gramática” das descrições de estrutura 4D (o programa valida o arquivo via a DTD).
2. Selecione um arquivo XML de descrição de estrutura e logo clique em Aceitar. 4D exibe uma caixa de diálogo que
pode ser utilizada para escolher o nome e a localização do banco de dados a criar.
3. Escolha o nome e a localização do banco de dados a ser criado e clique no botão Salvar.
Se o arquivo XML é válido, 4D fecha o banco atual (se existir) e cria uma nova estrutura baseada na definição de estrutura. É criada uma pasta
na localização indicada (o nome da pasta é o nome do banco) que contém todos os campos necessários para o funcionamento do novo banco.
Logo é exibida a janela do Explorador.
- 15 -
Abrir um Banco de Dados local
Caixa de diálogo Abrir
A caixa de diálogo padrão de abertura permite que você selecione qualquer banco de dados 4D e oferece diversas opções
de abertura de arquivos:
Para abrir um banco de dados usando a caixa de dialógo Abrir:
1. Selecione Abrir > Banco de dados local... no menu Arquivo de 4D ou Banco de dados local... no menú associado
com o botão "Abrir" na barra de ferramentas de 4D.
A caixa de diálogo Abrir aparece:
2. Selecione o Banco de Dados que vai abrir.
Em Windows, você deve selecionar o arquivo de estrutura do banco (extensão .4DB ou .4DC).
você pode selecionar o arquivo de estrutura do banco (extensão .4DB), ou o arquivo de estrutura do banco
(extensão .4DB ou .4DC). Para maiores informações sobre a arquitetura dos pacotes, consulte o parágrafo
Extensão .4dbase .
Também é possível selecionar um arquivo de acesso de tipo .4DLink. Os arquivos deste tipo salvam os
parâmetros necessários para a abertura dos bancos (endereço, identificadores...). Os arquivos 4DLink
funcionam com os bancos locais e os bancos distantes. Para maiores informações sobre a criação e uso dos
arquivos 4DLink, consulte a seção Conexão a um banco de dados 4D Server no manual de referência de 4D
Server.
3. Escolha uma opção de abertura (veja o próximo parágrafo) ou clique em Abrir para que o banco de dados seja aberto.
Note: É possível utilizar as funções arrastar e soltar ou fazer um clique duplo com um pacote .4dbase ou um arquivo de
estrutura .4DB ou .4DC como a finalidade de iniciar uma aplicação 4D sem passar pela caixa de diálogo de abertura. .
Opções da Caixa de diálogo de Abertura
Além das opções padrão do sistema, a caixa de diálogo de abertura de 4D oferece dois menus de opções específicas,
acessíveis através do botão Abrir e o menu Arquivo de dados.
Abrir: o menu associado a este botão permite definir o modo de abertura do banco. Inclui as opções Banco
interpretado e/ou Banco compilado, assim como o Centro de Segurança e Manutenção:
Banco Interpretado e Banco Compilado: estas duas opções são oferecidas quando o banco selecionado
contém código compilado e código interpretado. Se um destes modos não estiver disponível (banco não
- 16 -
compilado ou não recompilado, arquivo compilado unicamente, etc.), não aparecerá a opção correspondente..
Centro de Segurança e Manutenção: abertura em modo seguro permitindo acessar a um banco de dados
danificado para realizar os consertos correspondentes. Para maiores informações, consulte o parágrafo
Visualização em modo manutenção.
Quando se clica diretamente no botão Abrir, o banco se abre no último modo de abertura utilizado.
Arquivo de dados: este menu permite definir o arquivo de dados a ser utilizado com o banco. Por padrão, a opção
Arquivo de dados atual está selecionada. O banco é aberto com este arquivo se você clicar em Abrir. É possível ver
a localização deste arquivo no disco em uma janela sistema clicando no
botão
Este menu inclui duas opções adicionais já que 4D lhe permite utilizar um mesmo arquivo de estrutura com diferentes
arquivos de dados.
Selecionar outro arquivo de dados: esta opção permite abrir o banco com um arquivo de dados existente
diferente ao arquivo atual. Ao selecionar esta opção e logo clicar em Abrir, aparece a caixa de diálogo padrão
de abertura de arquivos de maneira que é possível selecionar um arquivo de dados.
Criar um arquivo de dados novo: esta opção permite criar um arquivo de dados em branco para o banco. Ao
selecionar esta opção e logo clicar em Abrir, aparece a caixa de diálogo padrão de salvar arquivos, permitindolhe nomear e selecionar a localização do arquivo de dados a criar.
Uma vez que tenha alterado o arquivo de dados atual, 4D o abrirá por padrão depois, a menos que encontre um
arquivo com o mesmo nome do arquivo de estrutura seguido por “.4DD” localizado no mesmo diretório que o
arquivo de estrutura. Se você move ou renomeia o arquivo de dados, será necessário localizá-lo mais uma vez.
É possível mudar o arquivo de dados utilizando um atalho de teclado durante a inicialização do banco. Para maiores
informações, consulte o parágrafo Alterar o arquivo de dados.
Você pode ver o arquivo atual do banco de dados a qualquer momento em Página Informação do Centro de Manutenção e
Segurança.
Atalhos de abertura de Banco de Dados
4D oferece várias funções que podem ser utilizadas para abrir bancos diretamente, sem passar pela caixa de diálogo Abrir:
arrastar e soltar, o menu “Abrir bancos recentes” e a abertura automática do último banco utilizado.
Para abrir um banco utilizando arrastar e soltar:
1. Selecione o arquivo do banco a abrir e solte-o no ícone da aplicação 4D.
Sob Windows, você deve selecionar o arquivo de estrutura do banco (extensão .4DB ou .4DC),
Sob Mac OS é possível selecionar o pacote do banco (extensão .4dbase), ou o arquivo de estrutura do banco
(extensão .4DB ou .4DC). Para maiores informações sobre a arquitetura dos pacotes, por favor, consulte o
parágrafo Extensão .4dbase .
Em ambas as plataformas, é possível selecionar um arquivo de acesso .4DLink..
Para abrir um banco recente::
1. Selecione o comando Abrir bancos recentes > Nome do banco no menu Arquivo de 4D ou no menu associado ao
botão “Abrir” da barra de ferramentas de 4D. A primeira vez que se inicia a aplicação, este menu está vazio. Será
preenchido gradualmente a medida que se utilizem diferentes bancos de dados; 4D memoriza automaticamente os
nomes de todos os bancos que são abertos.
Selecione o comando Apagar lista de recentes (acessível somente através do menu Arquivo) para apagar os
nomes das bases do menu.
Para abrir automaticamente o último banco utilizado:
Exiba a página “Aplicação/Opções” das Preferências da aplicação.
1. Para maiores informações sobre a visualização das Preferências, consulte o parágrafo Acesso
2. Na área “Opções”, escolha a opção Abrir o último banco utilizado no menu “Ao iniciar”.
4D abrirá então automaticamente o último banco utilizado cada vez que a aplicação seja iniciada.
Nota: Para forçar a visualização da caixa de diálogo de abertura quando esta opção está selecionada, mantenha
pressionada a tecla Alt (Windows) ou Opção (Mac OS) durante a abertura da aplicação.
- 17 -
Conectar a uma aplicação remota
Conectando com uma aplicação remota
Há três maneiras de se conectar a um banco de dados 4D Server via um 4D remoto:
Usar a caixa de diálogo da conexão
Usar o menu Abrir Banco Recente
Usar um atalho 4DLink contendo os parâmetros de acesso ao Banco de Dados.
Usar a caixa de diálogo de conexão
Para mostrar a caixa de diálogo de conexão 4D Server, primeiro inicie uma aplicação 4D.
Você pode usar o comando Abrir no menu Arquivo (ou o botão correspondente na barra de ferramentas 4D) para
selecionar o modo de abertura do banco de dados 4D:
Selecione o comando Abrir>Banco Remoto...
A caixa de diálogo de conexão 4D Server aparece. Essa caixa de diálogo tem três páginas e poder ser acessada através
das seguintes abas: Recente, TCP/IP e Personalizado:
- 18 -
Se você selecionar a opção Exibir essa janela na próxima vez , essa caixa de diálogo aparecerá automaticamente na
próxima vez que uma aplicação 4D iniciar.
Nota: Você também pode iniciar essa caixa de diálogo ao selecionar o link Conectar ao 4D Server no Assistente de Boas
Vindas..
Aba “Recente”
A aba Recente memoriza a listagem de todos os 4D servers usados recentemente. A lista está ordenada alfabeticamente.
Para conectar-se a um servidor dessa lista, dê um duplo-clique no nome ou selecione o servidor e clique no botão OK..
Aba “Disponível”
- 19 -
O 4D Server inclui um sistema de publicação TCP/IP integrado que publica automaticamente o nome do banco de dados 4D
Server disponíveis na rede. Esses nomes estão listados na aba TCP/IP da caixa de diálogo de conexão.
A lista está organizada por ordem de surgimento e é atualizada automaticamente. Para conectar-se a um servidor dessa
lista, dê um duplo-clique no nome ou o selecione e clique no botão OK.
Notas:
Um acento circunflexo (^) aparece antes do nome dos bancos de dados publicados com a opção de encriptografado.
Para maiores informações, consulte a seção Criptografar conexões cliente-servidor.
É possível evitar a publicação dinâmica do banco de dados na rede (veja a seção Preferências de publicação).
Nesse caso, a conexão só pode ser realizada manualmente na aba "Personalizado".
Aba “Personalizado”
A aba Personalizado permite designar um servidor publicado na rede usando seu endereço IP e criando um nome
personalizado.
Você pode personalizar o sistema de publicação TCP/IP do 4D Server de maneira que os nomes dos servidores de banco
de dados não sejam publicados automaticamente na rede (veja a seção Preferências de publicação). Nesse caso, o
- 20 -
nome não aparecerá na página "TCP/IP". Entretanto, se você sabe o endereço IP do servidor de uma base de dados cujo
nome não está publicado, você pode entrar o endereço IP manualmente.
Nome do banco de dados: permite definir o nome do banco de dados 4D Server. Esse nome será usado na aba
Recente quando se referir a esse banco de dados.
Endereço de Rede: permite entrar o endereço IP da máquina onde se encontra o 4D Server. Se dois servidores
estão sendo executados simultaneamente na mesma máquina, o endereço IP deve ser acompanhado de uma vírgula e
um número de porta, por exemplo: 192.168.92.104:19814.
A porta de publicação padrão do 4D Server is 19813. Esse número pode ser modificado na aplicação Preferências
(veja a seção Preferências de configuração).
Nota: Se um banco de dados foi selecionado nas abas Recente ou TCP/IP no momento em que você clicou na aba
Personalizado, os dois campos mostrarão a informação correspondente.
Logo que essa aba atribuir um servidor, clique no botão OK, e você se conectará ao servidor. O servidor estará listado na
aba Recente.
Nota: Se o banco de dados for publicado usando a opção de criptografia, você deve adicionar um acento circunflexo (^)
antes do nome; do contrário a conexão será recusada. Para maiores informações, veja a seção Criptografar conexões
cliente-servidor.Criptografar conexões cliente-servidor
Forçar a atualização dos recursos locais
Essa opção causa a atualização periódica dos recursos locais na máquina cliente quando ela conecta. Os recursos locais
são a informação estrutural relacionada ao banco de dados que está armazenada em cada máquina cliente.
De maneira geral, a atualização dos recursos locais na máquina remota acontece automaticamente quando ela se conecta,
se a estrutura do banco de dados foi modificada entre duas conexões. Na maior parte do tempo, essa opção é
desnecessária. Mesmo assim, em certos casos pode ser necessário forçar a atualização.
Usar o menu Abrir banco de dados recente
O menu de comando Abrir Bancos Recentes pode ser usado para se conectar automaticamente a um banco de dados 4D
Server ao qual você já se conectou previamente.
Esse comando se encontra no menu Arquivo do 4D. Se você usar a aplicação 4D para abrir banco de dados locais e
conectar-se a banco de dados remotos, esse menu listará os dois tipos de bancos de dados. Os bancos de dados remotos
estão disponíveis na parte de baixo do menu:
O endereço IP do servidor está indicado ao lado do nome do banco de dados.
O comando Excluir Menu pode ser usado para limpar o menu.
Usar um arquivo 4DLink
Você pode gerar arquivos de acesso a bancos de dados contendo os parâmetros com o objetivo de automatizar e
simplificar a abertura ou conexão com os bancos de dados 4D. Geralmente, um arquivo de acesso pode salvar o endereço
de um servidor remoto 4D Server assim como os identificadores de conexão, assim eliminando diversas operações para o
usuário.
Arquivos de acesso também podem ser usados para abrir bancos de dados locais.
Criação de Arquivos
- 21 -
Criação de Arquivos
Os arquivos de acesso dos bancos de dados 4D são arquivos XML que tem a extensão ".4DLink". 4D gera e usa esse tipo
de arquivo para construir o submenu "banco de dados recentes": um arquivo .4DLink é automaticamente gerado por 4D
quando um banco de dados local é aberto pela primeira vez ou na primeira vez em que se conecta a um servidor.
Os arquivos .4DLink que são criados automaticamente por 4D estão disponíveis na pasta de preferências locais do usuário.
Nessa pasta, dois diretórios são criados: Local e Remoto. A pasta Local contem os arquivos ".4DLink" que podem ser
usados para conectar-se a bancos de dados locais, e a pasta Remoto contém os arquivos "4DLink" que podem ser usados
para conectar-se a bancos de dados remotos.
As pastas de preferências locais se encontram em:
Windows 7 e posteriores: C:\Users\NomeUsuario\AppData\Roaming\4D\Favorites vXX\
OS X: Users/NomeUsuario/Library/Application Support/4D/Favorites vXX/
... onde XX representa o número de versão da aplicação (por exemplo, "Favorites v14" para 4D v14).
Os arquivos encontrados nesses diretórios são mostrados no submenu Abrir bancos recentes> do menu Arquivo do 4D:
Os arquivos ".4DLink" também podem ser criados com um editor XML e contém informação personalizada como
identificadores de conexão (nome de usuário e senha) ou o modo de abertura do banco de dados.
4D oferece uma DTD que descreve as chaves XML que podem ser usadas para construir um arquivo ".4DLink". Esse DTD
se chama database_link.dtd e se encontra na subpasta \Resources\DTD\ da aplicação 4D.
Usar Arquivos
Um arquivo de acesso .4DLink pode ser usado para iniciar uma aplicação 4D e abrir o banco de dados desejado. Há duas
maneiras diferentes de fazer isso:
Com um duplo-clique ou arrastar e soltar na aplicação 4D,
Com o submenu Abrir bancos recentes (arquivo localizado na pasta de preferências locais).
Um arquivo .4DLink do tipo "banco de dados remoto" pode ser copiado e usado em várias máquinas diferentes.
Nota: Também é possível selecionar um arquivo 4DLink no 4D e na caixa de diálogo de abertura do 4D Server (apenas
para a abertura de bancos de dados locais).
- 22 -
Instalar plugins ou componentes
Plug-ins e componentes trazem funcionalidades adicionais às suas aplicações.
Plug-ins são programas externos, geralmente desenvolvidos em C, que dão acesso a várias funcionalidades. Por
exemplo, o plug-in 4D Write oferece as funções de um software de processamento de texto. Alguns plug-ins como o
4D Internet Commands são oferecidos gratuitamente, outros necessitam da compra de uma licença específica. Plugins podem ser desenvolvidos pela 4D SAS our por terceiros.
Componentes são programas independentes desenvolvidos com 4D que oferecem funcionalidades adicionais de alto
nível. Por exemplo, o componente 4D SVG amplia as capacidades normais do 4D relacionadas ao trabalho com SVG.
Plug-ins e componentes se integram no seu ambiente 4D e 4D Server. Para poder usá-los em seus bancos de dados, você
deve instalá-los em locais adequados. Locais diferentes são possíveis, dependendo de como eles serão usados e do seu
sistema operacional.
Nota: Para maiores informações sobre desenvolvimento e distribuição de componentes, veja o capítulo Desenvolver e
instalar componentes 4D.
Procedimento de Instalação
A instalação dos plug-ins no ambiente 4D é efetuada ao copiar os arquivos dos plug-ins nas pastas apropriadas: plug-ins
vão a uma pasta chamada Plug-ins e componentes na pasta chamada Componentes. Essas pastas podem ser
localizadas em dois locais diferentes dependendo de suas necessidades (ver próxima seção).
Aqui estão os elementos a serem localizados nas pastas:
As pastas “PluginName.bundle” (chamadas pacotes em Mac OS) contém as versões Windows e Mac OS dos plug-ins
4D. Sua arquitetura interna específica permite a 4D Server carregar a versão apropriada de acordo com a plataforma
de execução de 4D Client.. Para instalar um plug-in no seu ambiente, você só deve colocar a pasta
“PluginName.bundle” ou o pacote correspondente na pasta Plugins desejada.
Componentes são banco de dados matriz cujos arquivos têm as extensões .4db (banco de dados matriz interpretado),
.4dc (banco de dados matriz compilado) ou .4dbase (banco de dados matriz do tipo pacote , veja o parágrafo
Extensão .4dbase ). Você pode usar alias (Mac OS) or atalhos (Windows) para esses banco de dados matrizes. A
pasta de componentes pode conter qualquer arquivo ou pasta personalizados necessário para a operação de
componentes (xliff, imagens, e assim por diante). Por outro lado, ela não pode conter plug-ins ou subpastas de
componentes, ou arquivos de dados ou arquivos de estrutura de usuários (.4DA). Se esses itens estiverem presentes,
eles serão ignorados por 4D. Para maiores detalhes sobre arquitetura de componentes, consulte Introdução .
Os plug-ins e os componentes são carregados por 4D quando a aplicação inicia. Portanto, é necessário sair de sua
aplicação 4D antes de copiar arquivos ou pastas. Logo, abra seu banco de dados com 4D. Se o uso do plug-in necessita
uma licença específica, o plug-in se carregará mas não se ativará.
Localização das pastas de PlugIns e Componentes
Você pode colocar as pastas PlugIns e Componentes em dois lugares diferentes:
No mesmo nível da aplicação 4D executável:
Com Windows: junto ao arquivo .exe
Com Mac OS: no primeiro nível da pasta Conteúdos, no interior do pacote de aplicação.
Nesse caso, os plug-ins e componentes estão disponíveis em qualquer banco de dados aberto com a aplicação.
No mesmo nível que o arquivo de estrutura de banco de dados.
Nesse caso, os plug-ins e componentes estão disponíveis apenas para esse banco de dados particular.
A escolha da localização depende de como você deseja usar o seu plug-in ou componente.
Se o mesmo plug-in ou componente está localizado nos dois locais, 4D irá carregar apenas aquele localizado junto à
estrutura. Numa aplicação que for compilada e fusionada usando 4D Volume Desktop, se houver várias cópias do mesmo
plug-in ou componente presentes, a aplicação não iniciará.
Suporte de plug-ins 64-bits em Windows
- 23 -
A partir da v14, os plug-ins 4D estão disponíveis em versões Windows de 64 bits. Desta forma você pode tomar vantagem
da arquitetura de 64 bits em uma configuração utilizando a versão de 64 bits Windows de 4D Server.
As versões 64 bits se incluem nos pacotes plug-in. Não se requer nenhuma instalação específica.
Os seguintes plug-ins estão disponíveis em uma versão Windows de 64 bits:
4D Write
4D View
4D Internet Commands
4D Pack
4D ODBC Pro
4D for OCI (Deve instalar o OCI de 64 bits antes do plug-in 4D For OCI de 64 bits. Pode obter esta versão de OCI de
Oracle, Inc.)
O funcionamento dos plug-ins de 32 bits e 64 bits é idêntico. No entanto, tenha em conta que o comando Open external
window não pode ser utilizado em um 4D Server de 64 bits.
- 24 -
Alterar o arquivo de dados
Você pode alterar arquivo de dados se quiser (pode utilizar uma mesma estrutura com diferentes arquivos de dados).
Os arquivos de dados e de estrutura devem corresponder. Com a finalidade de preservar a integridade dos dados, 4D não
autoriza a abertura de um arquivo de dados que não tenha sido criado pelo arquivo de estrutura atual. O programa atribui
automaticamente os números de ligações internos (UUID) aos arquivos de dados e de estrutura no momento da criação ou
da conversão dos bancos. Estes números são verificados ao abrir o arquivo de dados.
Para alterar o arquivo de dados, você pode:
Ao abrir o banco, escolha a opção Escolher outro arquivo de dados ou Criar um novo arquivo de dados da
caixa de diálogo de abertura do banco. Você pode especificar um arquivo existente ou criar um novo (consulte a seção
Abrir um Banco de Dados local ).
Durante a inicialização do banco, mantenha pressionada a tecla Alt (em Windows) ou a tecla Opção (em Mac OS).
Aparece a seguinte caixa de diálogo:
Selecione Selecione outro arquivo de dados ou Criar um novo arquivo de dados e clique em OK.
Depois de abrir o banco, escolha Novo > Arquivo de dados... ou Abrir > Arquivo de dados... no menu Arquivo de 4D ou
no menu associado com o botão “Novo” ou “Abrir” da barra de ferramentas de 4D.
Em todos os casos, uma caixa de diálogo permite selecionar um arquivo de dados existente ou criar um novo. Se você
escolhe criar um novo arquivo, 4D abrirá o banco de dados com a estrutura original mas sem registros.
Quando você utiliza um arquivo de dados diferente ou quando cria um novo, este se converte no arquivo de dados atual e será utilizado
automaticamente a próxima vez que abrir o banco.
Se você move ou renomeia o arquivo de dados, terá que localizá-lo manualmente.
- 25 -
Descrição dos Arquivos 4D
4D cria por padrão vários arquivos e pastas para cada banco de dados. Os arquivos adicionais também são utilizados
quando o banco tenha sido convertido de uma versão anterior.
Arquitetura do Banco de Dados
Quando você cria um banco de dados, os seguintes arquivos e pastas são gerados, por padrão, no disco:
Um arquivo de estrutura (extensão “.4DB”). O arquivo de estrutura contém todas as especificações associadas a
estrutura do banco (tabelas, campos, propriedades de tabelas e campos), formulários, métodos, barras de menus,
usuários e grupos de usuários, senhas de acesso, imagens e listas de seleção. O arquivo de estrutura é nomeado com
o nome que você introduz na caixa de diálogo, seguido por “.4db.
Um arquivo de dados (extensão “.4DD”)
O arquivo de dados contém os dados introduzidos nos registros e todos os dados que dependem dos registros. O
arquivo de dados recebe o nome que foi introduzido na caixa de diálogo de criação do banco, seguido por “.4dd”).
Quando se abre um arquivo de estrutura de 4D, a aplicação abre, por padrão, o arquivo de dados atual. Se você muda
o nome ou a localização deste arquivo, aparecerá a caixa de diálogo de abertura de arquivos de maneira que é
possível selecionar o arquivo de dados ou criar um novo (consulte Alterar o arquivo de dados).
Um arquivo de dados é automaticamente associado com o arquivo de estrutura que o criou de maneira a evitar
manipulação incorreta.
Um arquivo de índice de estrutura (extensão “.4DIndy”) e um arquivo de índice de dados (extensão “.4DIndx”). Os
índices criados em um banco 4D são armazenados como arquivos separados. Estes arquivos são localizados
automaticamente junto ao arquivo de estrutura. Não devem ser movidos ou renomeados; do contrário, 4D terá que
criá-los novamente.
NomeBanco.4DIndx contém os índices de dados e NomeBanco.4DIndy contém os índices da estrutura
(utilizado particularmente quando são realizadas pesquisas na estrutura).Uma das principais vantagens é que em
caso de corrompimento do índice, é possível excluir fisicamente o arquivo antes de iniciar 4D de maneira que se
crie automaticamente um novo.
Um arquivo de histórico de dados (extensão “.journal”) — arquivo criado unicamente se o banco utiliza um arquivo
de histórico. O arquivo de histórico permite assegurar a segurança dos dados do banco entre os backups. Todas as
operações efetuadas nos dados de um banco são guardadas sequencialmente neste arquivo. De maneira que cada
operação nos dados cause duas ações simultâneas: a primeira nos dados do banco (a instrução é executada
normalmente) e a segunda no arquivo de histórico (é registrada a descrição da operação). O arquivo de histórico é
construído de maneira independente, sem afetar, ou retardar o trabalho do usuário.
Um banco só pode trabalhar com um arquivo de histórico por cada vez. O registro de histórico registra operações tais como inserções,
modificações, ou eliminações de registros, transações, etc. O arquivo de histórico é gerado, por padrão, quando um banco é criado.
Para maiores informações, consulte o parágrafo Gestão do arquivo de histórico.
Uma pasta Resources, contém os recursos externos.
A pasta Resources, deve estar localizada junto ao arquivo de estrutura do banco (.4db ou .4dc), está destinada a
agrupar todos os arquivos do banco externos necessários para a interface do banco.
Nesta pasta, é possível localizar todos os arquivos necessários para a tradução, ou personalização da interface da
aplicação (arquivos de imagem, texto, XLIFF, etc.) 4D utiliza mecanismos automáticos para utilizar os conteúdos desta
pasta, em particular para a manipulação de arquivos XLIFF (ver Apêndice C: arquitetura XLIFF) e imagens (ver
Usar imagens estáticas). No contexto de uso em modo remoto, a pasta Resources permite compartilhar arquivos
entre o computador servidor e todos os computadores clientes. Para maiores informações, consulte a seção
Gerenciamento da pasta Resources no manual de referência de 4D Server.
Uma pasta Preferences, contém os arquivos de configuração específicos do banco – pasta criada unicamente
quando é necessário.
A pasta Preferences armazena os arquivos de configuração do banco, geralmente em formato XML. É criada
automaticamente, mais especificamente quando é utilizada a função backup (arquivo Backup.xml) ou do gerador
de aplicações (arquivo BuildApp.xml)
Uma pasta Logs contém os arquivos de histórico do banco atual. Esta pasta se encontra no mesmo nível que o
- 26 -
arquivo de estrutura.Reúne os seguintes arquivos de histórico: :
conversão do banco,
pedidos do servidor web,
verificação e reparação de dados,
verificação e reparação da estrutura,
diário de atividades de backup/restauração,
depuração dos comandos,
pedidos 4D Server (gerados nos computadores cliente e no servidor).
Estes arquivos e pastas são localizados inicialmente na mesma pasta quando o banco é criado, é recomendado não movê-los com a
finalidade de não alterar os mecanismos automáticos de 4D.
Arquivos Adicionais (bancos convertidos)
Quando você usar um banco criado com uma versão de 4D anterior ao v11, arquivos adicionais estão presentes:
Um arquivo de recursos de estrutura (extensão “.RSR”)
Este arquivo contém os “antigos” recursos de tipo Macintosh associados a estrutura do banco.
Os arquivos .4DB e .RSR sempre devem estar localizados no mesmo diretório e ter o mesmo nome, caso contrário
não será possível abrir o banco de dados.
Um arquivo de recursos de dados (extensão “.4DR”).
Contém os “antigos” recursos associados aos dados do banco.
Para maiores informações sobre a conversão de bancos, consulte o parágrafo Conversão de bancos de versões
anteriores.
Extensão .4dbase
Por padrão, os bancos de dados 4D são criados automaticamente em uma pasta com o sufixo .4dbase. Por exemplo, um
banco chamado “Faturas” será criado na pasta [Faturas.4dbase]. Esta pasta armazena todos os elementos necessários
para o funcionamento correto do banco.
Graças a este princípio, sob Mac OS as pastas dos bancos aparecem como pacotes. É possível fazer clique duplo no pacote para iniciar
diretamente 4D, o banco e o arquivo de dados atual. Também é possível arrastar e soltar o pacote no ícone da aplicação 4D. Isto também
significa que o banco pode ser localizado em uma ferramenta de controle de versões.
Sob Windows, este funcionamento não tem um impacto particular.
Você pode desativar este funcionamento padrão desmarcando a opção Criar um pacote para os novos bancos em Preferências, ver Página
Geral
- 27 -
Conversão de bancos de versões anteriores
Bancos de dados criados com versões anteriores de 4D são compatíveis com 4D v13 (arquivos de estrutura e dados).
arquivos de banco de dados Versão 11 ou 12 são convertidos diretamente para a versão 13. Uma vez convertidos,
esses arquivos de estrutura não podem mais ser abertos na versão 12; entretanto, os arquivos de dados podem ainda
ser abertos na versão 12 sobre as condições descritas abaixo.
Arquivos de banco de dados nas versões 6.x, 2003.x ou 2004.x são convertidos com o uso de um assistente e não
podem mais ser abertos com a versão original.
Nota: pode converter todo arquivo de estrutura interpretado. O arquivo pode conter o código compilado; neste caso, será
necessário recompilar a base logo de sua conversão.
Se você vai converter uma base de dados anterior a versão 14 que não tem chaves primárias, aparecerá uma caixa de
diálogo de alerta. Este ponto se detalha no parágrafo "Janela de erro de chaves primárias" a continuação.
Bases em versão 13
A conversão de uma base em versão 13 se realiza diretamente ao abrir ele com 4D v14. Aparecerá uma caixa de diálogo
de alerta que indica que o arquivo de estrutura vai ser convertido, e que já não pode ser aberto com uma versão anterior.
Os arquivos de dados, No entanto, são abertos sem necessidade de conversão pelo ainda podem ser abertos novamente
na versão 13.
Bases em versões 11 ou 12
A conversão de uma base v11 ou v12 se realiza diretamente ao abrir o arquivo de estrutura com 4D v14. Dois caixas de
diálogo de alerta sucessivas lhe indicam que os arquivos estão em conversão e que já não podem abrir com uma versão
anterior.
Note que ao converter o arquivo de dados, seus índices se reconstroem.
Nota: para obter informação sobre de como converter bases de uma versão anterior, consulte a seção Conversão de bases
em versões anteriores na documentação 4D v13.
Janela de erro de chaves primária
A partir de 4D v14, o uso de um arquivo de histórico requer que todas as tabelas tenham uma chave primária válida (ver
Gestão do arquivo de histórico).
É mostrada uma caixa de diálogo de erro quando pelo menos uma tabela na base não tem uma chave primária válida.
- 28 -
Este diálogo pode aparecer:
depois da conversão a V14 de uma base,
depois da ativação da opção Utilizar arquivo de histórico em uma base v14.
Nota: se o histórico não está ativado na base, a caixa de diálogo de erro lhe oferece a opção de abrir a base apesar do
erro de chave primária.
Se tiver acesso a estrutura da base, a caixa de diálogo oferece várias opções e mostra, quando se expande a área inferior,
a lista de tabelas que não tem uma chave primária:
A continuação, tem as seguintes opções:
Copiar: copia a informação da janela na prancheta para sua análise.
Fechar a base: fecha a base de dados sem que ela seja modificada .
Continuar: abre a base sem processar os erros. Neste caso, o histórico está desativado para a base (se a opção
Utilizar arquivo de histórico estava selecionada, está desmarcada) e a base funciona a perfeição em v14. Pode
utilizar esta opção se não deseja utilizar o arquivo de histórico com sua base.
Utilizar o assistente: mostra a janela do Gestor de chaves primária, que se utiliza para atualizar todas as tabelas da
base. Lhe recomendamos que escolha esta opção com o propósito de desenvolver a base. Este assistente se
descreve na seção Criar uma estrutura de banco de dados.
Caso não tenha acesso a estrutura da base, não é possível ativar o histórico e 4D mostrará uma mensagem que recomenda
contatar ao administrador da base.
Componentes em versão 11, 12 ou 13
- 29 -
4D v14 pode abrir diretamente os componentes v13, v12 ou v11 (compilados ou interpretados) sem conversão nem caixa de
diálogo de confirmação. Lembre que os componentes sempre estão abertos em modo só leitura.
Não é necessário recompilar os componentes mas a conversão de v14 só é possível para os arquivos .4DB e não para os
.4DC.
- 30 -
Preferências
Visão Geral
Página Geral
Página Estrutura
Página Formulários
Página Métodos
Página Atalhos
- 31 -
Visão Geral
Preferências de Usuário especificam opções padronizadas que afetam o seu ambiente de trabalho, por exemplo, as cores
usadas no editor de métodos, opções automáticas para a criação de formulários, a visualização automática de formulários,
etc. As preferências de usuário se aplicam a todos os bancos de dados abertos com suas aplicações 4D ou 4D Server.
4D Server: os objetos se bloqueiam quando dois ou mais usuários tentam modificar os parâmetros da caixa de diálogo
Preferências ao mesmo tempo. Apenas um usuário por vez pode usar a caixa de diálogo Preferências .
Note: 4D oferece um conjunto diferente de parâmetros especificamente para a abertura de bancos de dados: Propriedades
do Banco. Para maiores informações, consulte o capítulo MissingRef.
Acesso
Você pode acessar a caixa de diálogo Preferências no menu Edição > Preferências... (Windows) ou no menu Aplicação
(Mac OS):
Essa opção de menu está disponível mesmo quando não hã nenhum banco aberto.
Também é possível abrir a caixa de diálogo Preferências no modo Aplicação usando a ação padrão "Preferências"
(associada a um elemento de menu ou a um botão) ou usando o comando OPEN SETTINGS WINDOW.
Armazenamento
Os ajustes realizados na caixa de diálogo Preferências são guardadas em um arquivo de Preferências em formato XML.
Este arquivo se chama 4D vXX Preferences.4DPreferences e é armazenado na pasta de preferências do usuário atual:
Windows XP: {disk}\Documents and Settings{NomeUsuario}\Application Data\4D
Windows Vista/Windows 7: {disk}\Users{NomeUsuario}\AppData\Roaming\4D
Mac OS: {disk}:Users:{NomeUsuario }:Library:Preferences:4D
Nota: XX indica o número de versão principal de 4D. Em versão 12 por exemplo, o arquivo se chama 4D v12
Preferences.4DPreferences.
Personalização dos Parâmetros e "Factory Settings"
Nas caixas de diálogo Preferências e Propriedades, os parâmetros cujos valores foram modificados aparecem em negrito:
A modificação pode ter sido feita na caixa de diálogo ou no caso de um banco convertido, pode vir de uma preferência
modificada previamente.
- 32 -
Um parâmetro continua aparecendo em negrito, mesmo quando seu valor é substituído de forma manual por seus valores
padrão. Assim, sempre é possível identificar visualmente os parâmetros que foram personalizados.
Para reiniciar os parâmetros a seus valores padrão e eliminar o estilo negrito que indica que foram personalizados, clique
no botão Factory Settings (configuração original):
Este botão reinicia todos os parâmetros da página atual. Ele é ativado quando pelo menos um parâmetro na página atual foi
modificado.
- 33 -
Página Geral
Esta página contêm várias opções que permitem configurar o funcionamento geral de sua aplicação 4D.
Opções
As opções desta área permitem configurar várias funções usadas durante a iniciação quando se muda para o modo de
aplicação.
Ao iniciar
Esta opção permite configurar a visualização padrão oferecida por 4D ao iniciar quando o usuário lança unicamente a
aplicação.
Não fazer nada: só aparece a janela da aplicação, vazia.
Diálogo de abertura de banco de dados local: 4D mostra uma caixa de diálogo padrão de abertura de
documentos, que permite designar um banco de dados local.
Abrir o último banco utilizado: 4D abre diretamente o último banco utilizado; não aparece nenhuma caixa de diálogo
de abertura.
Nota: Para forçar o uso da caixa de diálogo aberta quando você selecionar essa opção, mantenha pressionada a
tecla Alt (Windows) ou Opção (Mac OS), enquanto o banco se inicia
Diálogo de abertura de banco de dados remoto: 4D mostra a caixa de diálogo padrão de conexão com 4D Server,
que pode ser utilizada para designar um banco de dados publicada na internet.
Diálogo assistente de boas vindas (regra de uso): 4D mostra a caixa de diálogo do assistente de boas vindas.
Criação automática de formulários
Este menu permite definir o funcionamento de 4D quando se cria uma tabela no editor de estrutura e logo abre, por exemplo,
a janela de visualização de registros. Por padrão, 4D lhe indica que nenhum formulário foi criado para a nova tabela e lhe dá
a opção de criar um formulário de entrada ou um formulário de saída automaticamente:
Existem 3 opções disponíveis:
Nunca: a caixa de diálogo de alerta não aparece, não é criado nenhum formulário padrão.
Perguntar: a caixa de diálogo de alerta aparece quando não tenha sido criado um formulário para a tabela (opção
padrão).
Sempre sim para tudo: a caixa de diálogo não aparece, mas os formulários padrões são criados automaticamente
para todas as tabelas.
Sair do ambiente Desenho ao passar ao ambiente Aplicação
Se esta opção está ativa, quando o usuário passa ao ambiente Aplicação utilizando o comando de menú Provar a
aplicação, todas as janelas do ambiente de Desenho se fecham. Se esta opção não está ativa (configuração padrão), as
janelas do ambiente Desenho permanecem visíveis no fundo do ambiente Aplicação.
Durante a criação de um novo banco
Esse grupo de opções permite definir os parâmetros a serem aplicados durante a criação de uma nova aplicação.
Ativar a estratégia de backup automático para cada novo banco de dados
Ativar a estratégia de backup automático para cada novo banco de dados: implementa um conjunto de parâmetros de
backup em cada novo banco (backup automático, arquivo de histórico, etc.) oferecendo segurança básica. Para maiores
informações sobre esta opção, consulte o parágrafo Estratégia de Backup automático.
- 34 -
Criar um pacote para os novos bancos
Criar um pacote para novos bancos: ao selecionar esta aplicação, os bancos de dados 4D são criados automaticamente
em uma pasta com o sufixo .4dbase
Graças a esse princípio, sob Mac OS as pastas de bancos aparecem como pacotes com propriedades específicas. Sob Windows, este
funcionamento não tem um impacto particular. Para maiores informações, consulte o parágrafo Descrição dos Arquivos 4D.
Idioma de comparação
Este grupo de parâmetros permite configurar o idioma utilizado para o processamento e comparação de cadeias de
caracteres. É possível escolher uma linguagem de comparação para o banco de dados aberto (necessidade pontual) e a
linguagem padrão para os novos bancos (necessidade permanente). A escolha do idioma tem uma influência direta na
ordenação e pesquisa de textos assim como na passagem a maiúsculas/minúsculas, mas não tem efeito na tradução de
etiquetas ou nos formatos de datas, de hora ou monetários, os quais permanecem no idioma do sistema. Por padrão, 4D
utiliza o idioma do sistema.
Um banco 4D agora pode funcionar em um idioma diferente do idioma do sistema. Quando se abre um banco, o motor 4D detecta o idioma
utilizado pelo arquivo de dados e lhe oferece o idioma (modo interpretado ou compilado). As comparações de texto, efetuadas pelo motor de
banco de dados ou pelo idioma são efetuadas no mesmo idioma.
Depois de selecionar um idioma para o banco atual e de validar a caixa de diálogo de preferências, o código do idioma é
armazenado na estrutura e os dados além dos índices são reconstruídos
Note: É possível mudar esse parâmetro para a abertura do banco de dados usando as Propriedades de Banco de dados
(consulte Comparação de texto).
Localização da documentação
Esta área configura o acesso a documentação HTML de 4D mostrada no navegador atual:
Quando o usuário faz duplo clique em um comando na página de comandos do Explorador;
Quando o usuário faz um clique numa janela do editor de métodos e pressiona a tecla F1 (ver o parágrafo )
Pode escolher acessar o site da documentação diretamente (4D Doc Center) ou ir a uma versão estática armazenada
localmente.
Pasta Local
Indica a localização da versão estática da documentação HTML. Por padrão, esta localização corresponde a subpasta
\Help\Command\language. Pode ver a localização fazendo clique no menu associado à área. Se esta subpasta não estiver
presente, a localização se mostra em vermelho.
Pode modificar esta localização como prefira, por exemplo, se desejar mostrar a documentação em uma linguagem
diferente daquela da aplicação. A documentação HTML estática pode ser localizada em outro volume, em um CD-Rom, etc.
Para determinar uma localização diferente, faça um clique no botão [...] localizado junto à área de entrada e escolha uma
pasta raiz de documentação (pasta correspondente à linguagem: fr, en, es, de ou ja).
Nota: para maior informação sobre o download de versões estáticas de documentação HTML, consulte a página de inicio
do 4D Doc Center.
Site Web
Essa é URL de acesso à documentação em linha da versão em 4D Doc Center. 4D cria as chamadas às páginas da
documentação baseado nesta URL. É possível modificar a URL, por exemplo, se deseja mostrar a documentação em um
idioma diferente do idioma da aplicação. O botão de prova localizado a direita da área, inicia por padrão o navegador para
ir à URL especificada.
Buscar primeiro na pasta local
Esta opção (selecionada por padrão), permite configurar a sequência de busca de uma página de documentação chamada
através do explorador ou da tecla F1.
Quando está ativada, 4D procura primeiro pela página na pasta local. Se a página se encontra na localização definida,
4D mostra a página no navegador atual. Em caso contrário, 4D automaticamente a procurará no web site da
documentação online. Dessa maneira é possível acessar a documentação, mesmo quando não esteja conectado,
através de uma versão local.
Quando não estiver selecionada, 4D procura diretamente a página no web site da documentação online e a exibe no
navegador atual. Se não for encontrada, 4D mostra uma mensagem de erro no navegador. Esta opção acelera o
acesso, mas só é possível utilizar-la quando 4D estiver em modo conectado.
- 35 -
Página Estrutura
Chave primária
Estas opções das preferências permitem modificar o nome e o tipo por padrão dos campos chave primária que se agregam
automaticamente por 4D quando se criam novas tabelas ou via o Criar uma estrutura de banco de dados).
As seguintes opções estão disponíveis:
Nome ("ID" por padrão): define o nome por padrão dos campos chave primária. Pode utilizar o nome que deseje,
sempre e quando se respeitem as regras de denominação para as tabelas padrão de 4D (ver [Regras para nomear
tabelas e campos).
Tipo (Inteiro longo por padrão): define o tipo dos campos chaves primária por padrão. Pode escolher o tipo UUID.
Neste caso, os campos chaves primária criados por padrão são do tipo Alfa e tem as propriedades formato UUID e
Auto UUID selecionadas.
Editor de Estrutura
Este grupo de opções configura a visualização do editor de estrutura de 4D.
Qualidade gráfica da estrutura
Esta opção permite variar o nível de detalhe gráfico do editor de estrutura. Por padrão, a qualidade é Alta. Pode selecionar
a qualidade Padrão para dar prioridade à rapidez de visualização. O efeito desse parâmetro é principalmente perceptível
durante o uso da função zoom (ver o parágrafo “Zoom” na seção Editor de estrutura.
Quando uma pasta está oculta, seus conteúdos são:
Esta opção permite configurar a aparência gráfica das tabelas ocultas no editor de estrutura, quando se realiza as seleções
por pasta (ver o parágrafo Ressaltar/Atenuar tabelas por pasta). As opções disponíveis são Atenuado (uma sombra
substitui a imagem da tabela) e Invisível (a tabela desaparece completamente).
- 36 -
Página Formulários
Esta página permite configurar o funcionamento padrão do editor de formulários de 4D.
Mover
Este grupo de opções permite definir os parâmetros para mover objetos utilizando o teclado ou o mouse no editor de
formulários.
Tamanho do passo utilizando o teclado
Esta opção permite definir o valor (em pontos) do passo utilizado para mover ou redimensionar um objeto utilizando o
teclado e a tecla Maiúscula (Shift).
Ao se mover fora dos limites da janela
Esta opção permite definir o comportamento do editor de formulários quando se mova um objeto com o mouse além dos
limites da janela do formulário.
Rolagem automática: quando esta opção está selecionada, esta ação provoca a movimentação do formulário na
janela, como quando se clica nas barras de rolagem. Este comportamento é útil para mover objetos em formulários de
tamanho grande.
Iniciar arrastar e soltar: quando esta opção está selecionada, esta ação é interpretada como um arrastar e soltar. A
janela do formulário não é alterada e o objeto pode ser levado para outra janela (se o seu conteúdo é compatível), por
exemplo, em outro formulário. Este comportamento é útil para reciclar objetos entre vários formulários ou utilizando
bibliotecas de objetos (ver o parágrafo Criar e usar objetos de biblioteca personalizados).
Você pode configurar esta opção dependendo dos seus hábitos de trabalho e necessidades de desenvolvimento.
Ativar alinhamento automático padrão
Essa opção permite ativar por padrão o alinhamento automático em cada nova janela do editor de formulários. É possível
modificar esta opção individualmente para cada janela (consulte o parágrafo Usar a quadrícula magnética).
Visualização padrão
Estas opções permitem definir os elementos que devem ser mostrados ou ocultados por padrão em cada nova janela do
editor de formulários. É possível definir a visualização de cada janela individualmente utilizando o menu hierárquico Exibir
do editor de formulários.
Marcas a mostrar por padrão: Essa opção determina que marcas mostrar por padrão em cada janela do editor de
formulários. Para mais informações sobre marcas, consulte o parágrafo Usar as Marcas.
Cor das linhas de marcadores: Essa opção modifica a cor das linhas de marcadores usadas no editor de
formulários para definir as diversas áreas (cabeçalho, quebras, detalhes, notas de rodapé, etc.). Para mais
informações sobre marcadores, consulte o parágrafo Usar linhas de controle de saída.
- 37 -
Página Métodos
Esta página permite definir a interface, a visualização padrão e as opções de funcionamento do editor de métodos. É
dividida em duas partes, acessíveis pela abas Estilos e Opções.
Estilos
Fonte
Esses menus permitem definir o tipo de fonte e o tamanho dos caracteres a utilizar na área de entrada do editor de
métodos:
Fonte: nome da fonte utilizada.
Tamanho: tamanho dos caracteres.
É possível definir o estilo de fonte para cada tipo de objeto.
Estilos de sintaxes
As opções dessa área permitem atribuir uma cor e um estilo específico a cada tipo de elemento da linguagem 4D (campos,
tabelas, variáveis, parâmetros, SQL, etc.) e também para cada elemento da linguagem SQL (palavras chaves, funções, etc.).
A combinação de cores e de estilos diferentes para os elementos dos métodos é bastante útil para a manutenção do
código.
Linguagem: este menu permite escolher a linguagem para a qual deseja definir os estilos no editor de métodos. Pode
escolher a linguagem 4D ou a linguagem SQL. A lista de tipos de elementos se atualiza em função da linguagem
selecionada no menu.
Listas de tipos de elementos: selecione as opções de estilo correspondentes na tabela. Pode combinar várias
opções para um mesmo elemento. A etiqueta do elemento reflete as modificações efetuadas. Para definir uma cor,
faça clique no ícone de cor e aparecerá uma paleta de cores onde poderá escolher uma nova cor.
Notas:
Na linguagem 4D, o tipo de elemento "Texto padrão" designa todos os textos que não pertencem a nenhum dos
outros tipos definidos (por exemplo, os símbolos, pontuação, as constantes literais, etc.).
Na linguagem 4D, o tipo de elemento "Palavras chaves" designa as estruturas de programação (If/End if, Case
of/End case, etc.) acessíveis por Macros. Em SQL, designa todos os comandos e suas palavras chaves
associadas.
Opções
Opções
Esta área permite configurar as opções de visualização do editor de métodos:
Indentação: muda o valor de indentação do código 4D no editor de métodos. A largura deve ser definida em pontos
(10 por padrão).
O código 4D está indentado automaticamente com o objetivo de mostrar sua estrutura:
- 38 -
.
Modificar este valor padrão pode ser muito útil se seus métodos contém algoritmos complexos com muitos níveis de
aninhamento. Uma indentação menor permite limitar os deslocamentos horizontais.
Mostrar números de linhas: permite mostrar os números das linhas em cada janela do editor de métodos. É possível
mostrar ou ocultar os números das linhas para a janela atual diretamente desde o editor de métodos.
Mostrar as listas: permite mostrar ou ocultar por padrão as listas de objetos (Comandos, Tabelas e campos, etc.)
quando a janela do editor de métodos estiver aberta. Pode mostrar ou ocultar cada lista diretamente desde o editor de
métodos.
Parênteses correspondentes: modifica a sinalização gráfica dos parênteses correspondentes no código. Esta
sinalização aparece quando um parêntese está selecionado. As seguintes opções estão disponíveis:
Nenhum: sem sinalização
Retângulo: parênteses rodeados por uma linha negra
Cor de Fundo: parênteses ressaltados (a cor é definida na área "Cores", ver o parágrafo “Cores” mais adiante)
Negrito: parênteses mostrados em negrito.
Por padrão, a opção retângulo vêm selecionada:
Ressaltar a linha atual: ressalta a linha em execução em _o_During, além da flecha amarela.
.
Se desmarca essa opção, só se mostra a flecha amarela.
Ressaltar a linha em execução: ressalta a linha que está sendo executado no momento no depurador (ver
Depurador), além do indicador de flecha amarela regular.
Se deselecionar esta opção, só é mostrada a flecha amarela.
Utilizar a configuração do sistema regional: permite desativar/ativar os parâmetros de código
"internacionais" para o aplicativo 4D local:
Quando esta opçãon estiver desativada (valor predeterminado em 4D v15 e superior), os parâmetros
"Inglés-US" e a linguagem inglês de programação se utilizam nos métodos 4D.
Se esta opção for ativada, a configuração regional se utiliza nos métodos 4D, como nas versões
anteriores de 4D.
Se modificar esta opção, é necessário reiniciar o aplicativo 4D para que a mudança seja levada em
consideração.
Para uma descrição detalhada dos efeitos desta opção, consulte Introdução a linguagem 4D.
Sugestões
Esta área permite configurar os mecanismos de entrada preditiva no editor de métodos para que os adapte a seus próprios
hábitos de trabalho.
Abertura automática da janela para: ativa a visualização automática da janela de sugestões para as constantes, as
variáveis interprocesso e locais e as tabelas.
- 39 -
Por exemplo, quando a opção "As variáveis interprocesso e locais" está selecionada, a janela aparece quando digita
o caractere $:
Pode desativar este funcionamento para certos elementos da linguagem desmarcando a opção correspondente.
Validação de uma sugestão em: define o contexto de entrada que permite ao editor de métodos validar
automaticamente a sugestão mostrada na janela de ajuda.
Tabulação e delimitadores: quando esta opção está selecionada, pode validar a seleção atual com a tecla Tab
ou qualquer delimitador pertinente no contexto. Por exemplo, se introduzir "ALE" e logo depois "(", 4D escreve
automaticamente "ALERT(" no editor. Esta é a lista de delimitadores que se devem ter em mente: ( ; : = < [ {
Somente tabulação: quando esta opção estiver selecionada, só a tecla Tab permite inserir a sugestão atual.
Este funcionamento pode ser utilizado particularmente para facilitar a entrada de caracteres delimitadores nos
nomes dos elementos, por exemplo ${1}.
Nota: também pode fazer um duplo clique na janela ou pressionar a tecla Retorno de carro para validar uma
sugestão.
Cores
Este grupo de opções configura as diferentes cores utilizadas na interface do editor de métodos.
Linha onde está o cursor (janela ativa) / Linha onde está o cursor (janela inativa): cor de fundo da linha que
contém o cursor.
Ressaltado das palavras encontradas: cor de ressaltado das palavras encontradas numa busca.
Ressaltado do parênteses: cor do ressaltado dos parênteses correspondentes (utilizado quando os pares de
parênteses são assinalados pelo ressaltado, consultar o parágrafo “Opções” acima).
Fundo da área de edição: cor de fundo da janela do editor de métodos.
Texto sugerido: cor do texto de autocompletar sugerido pelo editor de métodos.
- 40 -
Página Atalhos
Esta página mostra a lista de todos os atalhos utilizados no ambiente Desenho de 4D (exceto os atalhos "sistema", tais
como Ctrl+C/Comando+C para o comando Copiar). Para modificar um atalho, pode selecionar/deselecionar o elemento a
ser modificado (Maiúscula, Alt ou letra) na lista. Também pode fazer um duplo clique num atalho para que o configure
utilizando uma caixa de diálogo específica:
Note que cada atalho inclui implicitamente a tecla Ctrl (Windows) ou Comando (Mac OS).
A lista de atalhos está baseada no arquivo 4DShortcutsvXX.xml localizado na sub-pasta 4D Extensions (4D v12) ou
Resources (4D v13). Se essa lista é personalizada na caixa de diálogo, este arquivo se duplica na pasta Preferências e é
utilizado no lugar do arquivo padrão. Portanto, cada vez que 4D se atualiza você conserva suas preferências de atalhos de
teclado.
- 41 -
Propriedades do Banco
Visão Geral
Using user settings
Página Geral
Página Interface
Página Compilador
Página Banco de dados/Armazenamento de dados
Página Banco de dados/Memória
Página Movimentação
Página Backup/Periodicidade
Página Backup/Configuração
Página Backup/Backup & Restauração
Página Cliente-servidor/opções de rede
Página Cliente-servidor/configuração IP
Página Web/configuração
Página Web/Opções (I)
Página Web/Opções (II)
Página Histórico (formato)
Página Web/Histórico (periodicidade)
Página Web/Web Services
Página Web/REST
Página SQL
Página PHP
Página Segurança
Página Compatibilidade
- 42 -
Visão Geral
As propriedades do banco configuram o funcionamento do banco de dados atual. Estes parâmetros se diferir em cada
base. Se incluem as portas de escuta (listening ports), os direitos de aceso ao ambiente de Desenho, as configurações
SQL, etc.
4D oferece dois modos de funcionamento para estas propriedades:
Modo estandarte, na qual todos os parâmetros se guardam no arquivo de estrutura da base e são aplicados em
todos os casos (modo por padrão).
Modo "Propriedades usuário", na qual parte dos parâmetros personalizados se guardam em um arquivo externo
que se utiliza em lugar das propriedades da estrutura. Você ativa este modo utilizando uma opção localizada na
Página Segurança das propriedades da base.
Este capítulo descreve cada página das propriedades como se mostra em modo estandarte. O modo "propriedades
usuário" se detalha na seção Using user settings.
A maioria dos parâmetros se aplicam imediatamente. Entretanto, alguns deles (tais como o ajuste do ambiente de inicio) só
tem efeito quando se reinicia o banco. Neste caso aparece uma caixa de diálogo para lhe informar que a mudança tomará
efeito a próxima vez que reinicie.
4D Server: os objetos são bloqueados quando dois ou mais usuários tentam modificar as propriedades ao mesmo tempo.
Só um usuário por vez pode utilizar a caixa de diálogo das Propriedades do banco.
Nota: oferece outro conjunto de parâmetros que se aplicam à aplicação 4D: as preferências do usuário. Para obter mais
informação, consulte o capítulo Preferências.
Acesso
A caixa de diálogo Propriedades do banco pode ser acessada das seguintes maneiras:
utilizando o comando Propriedades do banco.... do menu Desenho,
utilizando o botão correspondente da barra de ferramentas de
,
com 4D Server, usando o comando Propriedades do banco... do menu Editar.
Nota: no modo "propriedades usuário", dois comandos de menu estão disponíveis em cada localização:
- Propriedades estrutura... equivale ao comando Propriedades da base... em modo estandarte
- Propriedades usuário... permite acessar às propriedades que podem ser armazenadas externamente em um
arquivo usuário e que se utilizam em lugar das propriedades estrutura se são modificadas.
Para maior informação, consulte a seção Using user settings.
Personalização dos Parâmetros e "Factory Settings"
Nas caixas de diálogo Preferências e Propriedades, os parâmetros cujos valores foram modificados aparecem em negrito:
A modificação pode ter sido feita na caixa de diálogo ou no caso de um banco convertido, pode vir de uma preferência
modificada previamente.
Um parâmetro continua aparecendo em negrito, mesmo quando seu valor é substituído de forma manual por seus valores
padrão. Assim, sempre é possível identificar visualmente os parâmetros que foram personalizados.
Para reiniciar os parâmetros a seus valores padrão e eliminar o estilo negrito que indica que foram personalizados, clique
no botão Factory Settings (configuração original):
- 43 -
Este botão reinicia todos os parâmetros da página atual. Ele é ativado quando pelo menos um parâmetro na página atual foi
modificado.
- 44 -
Using user settings
Starting with 4D v13, you can generate an external file containing custom settings. When this functionality is enabled, the
settings contained in the external file (called "User settings") are used instead of settings stored in the database structure file
(called "Structure settings").
This means that you can keep custom settings between updates of your 4D applications, or that you can manage different
settings for the same 4D application deployed on several different sites. It also makes it possible to use programming to
manage setting files using XML.
Enabling User Settings mode
To be able to externalize user settings, you need to check the Enable User Settings in External File option, found on the
Security page of the Database settings.
When you check this option, database settings are separated into two dialog boxes: Structure Settings and User Settings.
You can access these dialog boxes using the Design/Database Settings> menu or the Settings button in the toolbar:
User Settings dialog box
When the external mode is enabled, database settings are available in two dialog boxes: "Structure Settings" and "User
Settings".
The "Structure Settings" dialog box is identical to the standard Database Settings one and provides access to all its
properties. The "User Settings" dialog box contains a selection of relevant properties that can be externalized:
- 45 -
In accordance with the principle of user settings priority, when an option is modified in this dialog box, its value is taken into
account instead of the one stored in the structure settings.
The following table lists the pages of settings found in the "User Settings" dialog box and describes their main differences with
respect to standard settings:
- 46 -
Page of Database Settings
General page
Interface page
Compiler page
Database/Data storage page
Database/Memory page
Moving page
Backup/Scheduler page
Backup/Configuration page
Backup/Backup & Restore page
Client-server/Network options page
Client-server/IP configuration page
Web/Configuration page
Web/Options (I) page
Web/Options (II) page
Web/Log (type) page
Web/Log (backup) page
Web/Web Services page
SQL page
PHP page
Security page
Compatibility page
Page of User Settings
Not available
Identical to standard settings
Not available
Not available
Identical to standard settings
Not available
Not available
Not available
Not available
Identical to standard settings
Identical to standard settings
Identical to standard settings
Identical to standard settings
Identical to standard settings
Identical to standard settings
Identical to standard settings
Method prefixing option not available
Identical to standard settings
Identical to standard settings
Not available
Not available
User settings file
When you check the Enable User Settings in External File option in the Database Settings, the user settings file is
automatically created and placed here:
[DatabaseFolder]/Preferences/settings.4DSettings
... where [DatabaseFolder] is the name of the folder containing the database structure file.
The user settings file, in XML format, can be read and modified using integrated 4D XML commands or using an XML editor.
This means that you can manage settings by programming, particularly in the context of applications compiled and merged
with 4D Volume Desktop. Note that when you modify this file by programming, the changes are only taken into account the
next time the database is opened.
- 47 -
Página Geral
Esta página contém várias opções que permitem configurar os parâmetros genéricos do banco de dados 4D.
Desenho
Esta área contém a opção Mostrar a barra de ferramentas. Quando estiver selecionada, a barra de ferramentas de 4D se
mostra no ambiente Desenho.
Geral
Esta área permite personalizar diferentes opções relativas ao início e ao funcionamento do banco.
Modo de início
Selecione o ambiente no qual deseja que o banco se abra por padrão: Desenho ou Aplicação. A não ser que especifique
otra cosa, por padrão 4D abre o banco no ambiente Desenho se não houver senhas para controlar o acesso.
Nota: a escolha de abertura de um banco em modo compilado ou interpretado é feita na caixa de diálogo de abertura
(consulte o parágrafo Abrir um Banco de Dados local).
Ativar Comentários Automáticos
Esta opção permite ativar e definir o sistema de comentários automáticos em seu banco de dados. Estes parâmetros são
descritos em Usar os comentários.
Nota de compatibilidade: a partir da versão 12 de 4D, os comentários inseridos no cabeçalho de um método utilizando os
caracteres // são mostrados como mensagens de ajuda quando o método se referencia a outro método (ver "Utilizar as
mensagens de ajuda" em WA SET EXTERNAL LINKS FILTERS). Esta função, muito útil para documentar métodos
usuário, não é compatível com os comentários localizados no Explorador. Se deseja utilizar os cabeçalhos dos métodos
para áreas de documentação, não ative os comentários automáticos.
Prioridade CPU
A página Prioridade CPU permite otimizar o desempenho da aplicação 4D ao modificar a frequência com a qual as
aplicações 4D deven “retornar” a outras aplicações.
Na verdade, 4D convive com o sistema operativo da máquina que o aloja como também possivelmente aloja a outras
aplicações. Como a arquitetura dos sistemas nos quais se executa 4D não são multi-tarefas, o sistema passa a uma
aplicação que logo passa ao sistema e assim sucessivamente. Quando uma aplicação passa ao sistema, indica o tempo
limite que quer deixar a outras aplicações.
Em função de seu ambiente de trabalho e suas necessidades específicas, pode colocar o termômetro de prioridade
atribuído à aplicação 4D com respeito às outras aplicações que funcionam na mesma máquina. Para um banco similar, é
possível definir a prioridade para 4D (modo local), 4D Server e 4D Client separadamente. Estes parâmetros são
armazenados no arquivo de estrutura.
Por padrão, os valores correspondem aos parâmetros “médios” (cursor localizado no centro do termômetro). Os valores por
padrão dão como resultado um consumo de tempo de máquina de aproximadamente 20%. Em alguns casos esta
porcentagem poderia não ser suficiente; se por exemplo, destina uma máquina exclusivamente a seu 4D Server, seria un
desperdício utilizar somente 20% do tempo de CPU e dedicar 80% do tempo restante a ficar ociosa. Nesse caso, o melhor
seria aumentar a prioridade de “4D Server” para melhorar seu rendimento. Enquanto que em outros casos, poderia ser
melhor diminuir a prioridade de “4D Server” para deixar mais tempo a outras aplicações.
Notas
É possível conhecer e definir cada parâmetro por programação utilizando os comandos Get database parameter e
SET DATABASE PARAMETER.
Atenção: modificar o valor desses cursores de maneira inapropriada pode conduzir a uma deterioração no
desempenho da aplicação.
- 48 -
Página Interface
Utilize a página Interface para definir as diferentes opções relacionadas com a interface do banco de dados.
General
Esta área permite personalizar várias opções de visualização na base.
Fonte a utilizar com o comando MESSAGE
O botão Selecionar... permite definir a fonte e o tamanho dos caracteres utilizados pelo comando MESSAGE.
A fonte e o tamanho por padrão dependem da plataforma de execução de 4D.
Nota: esta propriedade também afeta as seguintes partes de 4D:
Certas áreas de pré-visualização do Explorador,
A regra de Editor de formulários,
As outras opções permitem configurar a visualização de várias janelas do modo Aplicação.
Progressão da impressão: permite ativar ou desativar a visualização da caixa de diálogo de progressão de
impressão durante una impressão.
Tela de boas-vindas: quando esta opção não está selecionada, não aparece a janela de boas-vindas do menu atual
em modo Aplicação (ver a seção [#title id="1055"/]). Quando oculta esta janela, você se encarrega da gestão de
visualização de todas suas janelas por programação, por exemplo no Método banco de dados On Startup.
Escritura da cachê: quando esta opção está selecionada, a aplicação 4D mostra uma janela na parte inferior
esquerda da tela durante a escritura em disco da cachê de dados "flush". Esta operação bloqueia momentaneamente
as ações dos usuários, esta janela lhes informa que a operação está em curso:
Nota: Pode definir a frequência de escritura da cachê na Página Banco de dados/Memória das Propriedades da
base.
Atalhos
A área Atalhos permite ver e modificar os atalhos por padrão para três operações básicas de 4D: aceitar formulários de
entrada, cancelar formulários de entrada e adicionar a um subformulário. Estes atalhos são iguais para ambas as
plataformas. Os ícones em forma de teclas indicam as teclas correspondentes em Windows e Mac OS.
Os atalhos por padrão são os seguintes:
Aceitar em formulário de entrada: Intro
Cancelar em formulário de entrada: Esc
Adicionar ao subformulário: Ctrl+Maiúscula+/ (Windows) o Comando+Maiúscula+/ (Mac OS)
Para modificar o atalho de uma operação, faça clique no botão Editar. Aparece a seguinte caixa de diálogo:
- 49 -
Para modificar o atalho, introduza a nova combinação de teclas em seu teclado e faça clique em Ok. Se prefere não ter um
atalho para uma operação, clique no botão Limpar.
Idiomas de direita à esquerda
A etiqueta “Idiomas de direita à esquerda” faz referência aos idiomas que se lêem da direita para a esquerda, como os
idiomas árabes. 4D inclui um suporte estendido dos idiomas de direita à esquerda no Windows. Ao ativar o modo “direita à
esquerda”, a interface do banco de dados 4D (formulários e menus) é invertida automaticamente em modo Aplicação. Este
princípio só é válido sob Windows. Não existe uma função equivalente sob Mac OS X.
Esta inversão faz referência não só a direção de leitura ao interior dos objetos de texto, mas também aos objetos gráficos, a
posição dos objetos nos formulários, os títulos e botões das janelas, a localização dos menus, etc.
Nota: Nas versões atuais de 4D, o modo inverso não está disponível para a impressão de formulários.
A opção Inversão dos objetos em modo Aplicação é utilizada para ativar e configurar o modo “direita à esquerda” a nível
geral do banco. Existem 3 opções que podem ser utilizadas para configurar a ativação deste modo em função do contexto
de execução do banco:
Nunca: quando esta opção está selecionada, o banco não passa automaticamente a modo “direita à esquerda”,
inclusive se o sistema operacional estiver configurado neste modo. Esta opção está selecionada por padrão.
Automático: quando esta opção está selecionada, o banco passa automaticamente a modo “direita a esquerda”
quando o sistema operacional está configurado neste modo (este é o caso, por exemplo, da versão árabe de
Windows).
Siempre: quando esta opção está selecionada, o banco passa imediatamente ao modo “direita à esquerda”, mesmo
se o sistema operativo estiver configurado no modo normal (esquerda à direita).
Quando modifica esta opção, se aplica imediatamente ao banco (depois de validar as Propriedades).
Notas:
Esta preferência global também pode ser feita através de programação usando o comando SET DATABASE
PARAMETER.
Quando o modo direita à esquerda estiver ativo, é possíve desativar localmente cada formulário (ver o parágrafo “Não
inverter objetos (Windows)” em Propriedades de formulário).
Por padrão, o modo direita à esquerda não inverte os conteúdos das imágens nos formulários. Uma opção adicional
permite inverter as imágens se necessário (ver o parágrafo “Efeito espelho para imagens (Windows)” em Usar
imagens estáticas).
- 50 -
Página Compilador
Esta página permite definir os parâmetros a utilizar para a compilação do banco. Para maiores informações, consulte o
capítulo Compilação.
Opções de Compilação
Esta área agrupa as opções genéricas utilizadas durante o processo de compilação. .
Controle de execução: permite ativar/desativar o controle de execução. O controle de execução é uma análise
adicional que permite controlar o código in situ e de acordo ao estado dos objetos do banco em um dado momento.
Para maior informação sobre o controle de execução, consulte Controle de execução.
Gerar o arquivo de símbolos: esta opção permite gerar um arquivo tipo ASCII que contém a lista de variáveis, seu
tipo e o método do qual foi deduzido o tipo. O arquivo de símbolos contém igualmente a lista de seus métodos e
funções junto com o tipo de parâmetros e o tipo de um eventual resultado.
O arquivo é colocado na pasta que contém a estrutura do banco de dados e se chama automaticamente
NomeBanco_symbols.txt.
Para maior informação sobre o arquivo de símbolos, consulte O arquivo de símbolos.
Compilar também para os processadores 64 bits: esta opção permite compilar o banco para os processadores 64
bits (além da compilação 32 bits). Note que:
4D Server também está disponível na versão 64 bits em Windows a partir da versão 12.1 e em OS X desde
versão 15.
Não é possível compilar em 64 bits uma base 4D não convertida a Unicode.
Gerar arquivo de erro: esta opção permite gerar o arquivo de erros durante a verificação da sintaxe. Este arquivo
lista os erros gerais, os erros relacionados com uma linha específica e as advertências.
Os erros detectados pelo compilador são acessíveis automaticamente no menu Método de 4D. Sem dúvida, pode ser
útil ter um arquivo de erros que pode ser transferido de uma máquina a outra, especialmente quando existem vários
desenvolvedores trabalhando em um sistema cliente-servidor.
O arquivo de erros é gerado em formato XML para facilitar a análise automática de seu conteúdo. Também permite a
criação de interfaces personalizadas de apresentação de erros. O arquivo de erros se chama automaticamente
NomeBanco.xml e é criado do lado do arquivo de estrutura do banco.
Para maior informação sobre o arquivo de erros, consulte Arquivo de erros .
Inicializar as variáveis locais: esta opção permite definir o modo de inicialização das variáveis locais ao princípio
dos métodos:
a ‘zero’: as variáveis se reiniciam em zero por padrão (string vazia para as strings de caracteres, 0 para
números...).
a um valor aleatório: o compilador atribui um valor aleatório, sempre o mesmo, (1919382119 para inteiros
grandes, “rgrg” para as string de caracteres, True para as booleanas...). Esta opção permite localizar variáveis
locais que tenha esquecido de inicializar.
não: o compilador não inicializa as variáveis. Desta forma, você ganha tempo durante a execução do banco de
dados, sempre e quando sua inicialização seja correta.
Endereço de compilação: esta opção permite definir o número de passos efetuados pelo compilador e portanto a
duração da compilação.
Declarar variáveis: passar por todas as etapas que fazen possível a compilação.
São declaradas as variáveis processo e interprocesso: não se realiza o passo de digitação para as
variáveis processo e interprocesso. Esta opção pode ser utilizada quando tenha atribuído as variáveis de
processo e interprocesso seja manualmente seja utilizando a função de geração automática dos métodos
compilador.
São declaradas todas as variáveis: não se realiza a etapa de digitação das variáveis locais, processo e
interprocesso. Utilize esta opção quando todas as variáveis processo, interprocesso e locais tenham sido
digitadas claramente.
Digitação padrão
Esta área permite definir o o padrão de tipo de variável dos objetos ambíguos do banco.
Numérico: esta opção permite forçar a digitação de números de uma maneira inequívoca, ou como variável real ou
como Inteiro longo. Não tem prioridade sobre as diretrizes que possam ter sido definidas em seu banco. Pode
- 51 -
otimizar a execução de seus bancos se escolhe o tipo Inteiro longo.
Botão: esta opção permite forçar a digitação dos botões de uma maneira inequívoca, seja como real ou inteiro
longo. Não tem prioridade sobre as outras diretrizes que possam ter sido definidas em seu banco. Se refere aos
botões padrão assim como aos seguintes objetos: caixas de seleção, caixas de seleção 3D, botões inversos, botões
3D, botões imagem, grade de botões, botões de opção, botões de opção 3D, botões imagem de opção, menus
imagem suspenso, menus hierárquicos suspensos e listas hierárquicas.
Métodos compilador para...
Esta área lhe permite renomear os métodos Compilador gerados automaticamente pelo compilador. Estes métodos reúnem
todas as declarações de tipo de variáveis, arrays de processo e inter-processo, assim como os métodos de declaração de
variáveis locais. Estes métodos são gerados a partir da janela do compilador. Para maiores informações, consulte o
parágrafo Janela de Compilação.
Podem ser gerados até 5 métodos compilador; um método compilador é gerado automaticamente se o banco contém os
elementos correspondentes:
Variáveis : agrupa as declarações de variáveis de processo;
Variáveis inter-processo: agrupa as declarações de variáveis inter-processo;
Arrays: agrupa as declarações dos arrays de processo;
Arrays inter-processo: agrupa as declarações dos arrays inter-processo;
Métodos: agrupa as declarações de variáveis locais atribuindo os parâmetros dos métodos (por exemplo,
C_LONGINT(meumetodo;$1)).
Você pode renomear cada um destes métodos nas áreas correspondentes.
Entretanto, sempre estarão precedidos pela etiqueta “Compiler_”(não-modificável). O nome de cada método (incluindo o
prefixo) deve ser único e não maior que 31 caracteres. Os caracteres estendidos (caracteres acentuados, símbolos
tipográficos, etc.) e os espaços não estão permitidos.
- 52 -
Página Banco de dados/Armazenamento de dados
Utilize esta página para configurar o armazenamento dos dados do banco 4D no disco.
Parâmetros Gerais
Não mostrar o alerta se o arquivo de estrutura estiver em modo somente leitura: Quando abre uma base de
dados cujo arquivo de estrutura está em modo de somente leitura, 4D mostra uma caixa de diálogo de alerta indicando
o bloqueio. Se abre o banco, toda modificação realizada ao arquivo de estrutura não será guardada.
Em alguns casos, você poderia querer que nenhuma caixa de diálogo apareça, por exemplo, no caso dos bancos de
consulta armazenados em CD-ROM. Neste caso, simplesmente selecione esta opção.
Permitir somente leitura para o arquivo de dados: esta opção permite configurar o funcionamento da aplicação em
caso de abrir um arquivo de dados bloqueado ao nível do sistema operativo.
4D inclui um mecanismo que evita automaticamente a abertura de uma base de dados quando seu arquivo de dados,
ou um de seus segmentos, está bloqueado. Neste caso, quando a opção de detecção estiver ativada, 4D lança uma
mensagem de alerta e não abre o banco de dados:
A menos que esta opção esteja selecionada, não é possível abrir um banco quando seu arquivo de dados estiver
bloqueado (funcionamento padrão para os bancos 4D).
Sobre os arquivos bloqueados: os arquivos bloqueados podem ser lidos, mas o seu conteúdo não é
modificável. Por exemplo, os arquivos estão bloqueados quando estão armazenados em um meio não
reescrevível (como um CD- Rom) ou quando forem copiados desde um deste tipo. 4D pode trabalhar de
maneira transparente com os arquivos de dados bloqueados, o que permite o uso de bancos de dados
armazenados em CD-Rom. Entretanto, este funcionamento corre o risco do uso involuntário de um arquivo de
dados no qual não se guardarão as modificações. Esta é a razão pela qual, como padrão, 4D não permite
abrir bancos de dados com arquivos de dados bloqueados.
Localização da Pasta Temporária
Esta área lhe permite modificar a localização das pastas temporárias criadas durante a execução de 4D. A pasta de
arquivos temporários é utilizada pela aplicação, quando é necessário, para salvar dados no disco de modo temporário.
A localização atual desta pasta é mostrada na área “Atual:”. Você pode clicar nesta área para mostrar o endereço de
acesso como uma lista suspensa:
São oferecidas 3 opções de localização:
Sistema: quando esta opção está selecionada, os arquivos temporários 4D são criados em uma pasta localizada na
localização especificada por Windows e/ou Mac OS. É possível procurar a localização atual definida por seu sistema
utilizando o comando Temporary folder. Os arquivos são localizados em uma pasta cujo nome é formado pelo nome
- 53 -
do banco e um identificador único.
Pasta de arquivo de dados (opção padrão): quando esta opção está selecionada, os arquivos temporários 4D são
criados em uma pasta chamada “temporary files” localizada no mesmo nível que o arquivo de dados do banco.
Definido pelo usuário: permite definir uma localização personalizada. Em caso de modificação desta opção, será
necessário reiniciar o banco para que se leve em consideração a nova opção. 4D verifica que a pasta selecionada
seja acessível para escrita. Se não é o caso, a aplicação tratará outras opções até que encontre uma pasta válida.
Nota: esta opção está armazenada nas “propriedades adicionais” da estrutura, acessíveis durante a exportação XML da definição de
estrutura (ver Exportar e importar definições de estrutura).
Comparação de texto
Se você modificar esta opção, deve sair e abrir novamente o banco para que a modificação seja levada em consideração. Ao abrir o banco de
dados novamente, todos os índices do banco são reindexados automaticamente.
Considere @ como coringa somente ao início e ao final das cadeias de caracteres: esta opção permite definir
como interpretar o caractere “@” (arroba) quando utilizado em uma pesquisa ou em uma comparação de cadeias de
caracteres, quando se encontra em uma palavra. Quando esta opção não está selecionada (valor padrão), o caractere
arroba é considerado um curinga, ou seja, substitui qualquer caractere (ver o parágrafo Caractere Coringa (@)).
Quando a opção está selecionada, o caractere arroba é considerado como um caractere simples se for encontrado
dentro de uma palavra. Esta possibilidade é particularmente útil para buscar endereços de correio eletrônico, onde o
caractere @ é utilizado internamente. Esta opção tem influência em pesquisas, ordenações, comparações de cadeias
de caracteres, como também nos dados armazenados na tabela ou em memória, como arrays. Campos e variáveis de
tipo alfa (indexados ou não) e texto são afetados por como se interprete o caractere @ em pesquisas e ordenações.
Notas:
Quanto às pesquisas, é importante notar que se o critério de pesquisa começa ou termina com @, o caractere
“@” será considerado como um curinga. Somente quando o caractere “@” aparece no meio de uma palavra (por
exemplo: [email protected]) 4D o trata de maneira diferente.
Esta opção influencia igualmente no comportamento dos comandos do tema Objetos (Formulários) que
permitem o uso do caractere (“@”) no parâmetro Objeto.
Por razões de segurança, somente o Administrador ou o Desenhador da banco podem modificar este
parâmetro.
Linguagem do arquivo de dados atual: esta opção permite configurar a linguagem utilizada para o processamento
e comparação das cadeias de caracteres para o banco de dados aberto. A escolha de uma linguagem de
comparação influi na ordenação e na pesquisa dos textos assim como também se os caracteres estão em maiúsculas
ou minúsculas, mas não tem efeito na tradução de textos ou nos formatos das datas, de hora ou moeda, os quais
permanecem na linguagem do sistema. Por padrão, 4D utiliza a linguagem do sistema.
Um banco 4D pode funcionar numa linguagem diferente da linguagem do sistema. Quando um banco se abre, o motor
4D detecta a linguagem utilizada pelo arquivo de dados e o entrega à linguagem (modo interpretado ou compilado).
As comparações de texto, são efetuadas pelo motor de base de dados ou pela linguagem, na mesma linguagem.
Nota: pode modificar este parâmetro nas Preferências da aplicação (ver Página Geral). Neste caso, esta opção se
aplica a todos os novos bancos criados por 4D.
Considere somente caracteres não alfanuméricos para as palavras chaves: modifica o algoritmo utilizado por
4D para identificar os separadores de palavras chaves e criar seus índices. Por padrão, quando esta opção não está
selecionada, 4D utiliza um algoritmo sofisticado que considera as características lingüísticas. Este algoritmo é similar
ao utilizado pelos softwares de processamento de palavras para determinar os limites de uma seleção no caso de
duplo clique numa palavra. Para maior informação sobre este algoritmo, consulte a seguinte direção:
http://userguide.icu-project.org/boundaryanalysis.
Quando esta opção estiver selecionada, 4D utiliza um algoritmo simplificado. Nesta configuração, todo caracter não
alfanumérico (ou seja, que não é nem uma letra nem um número) é considerado como um separador de palavras
chaves. Este parâmetro responde às necessidades específicas associadas a certos idiomas tais como o japonês.
Suporte de Mecab (versão japonesa)
Em sistemas japoneses, 4D suporta a livraria Mecab, com um algoritmo de indexação de palavras chave especialmente
adequado para o idioma japonês.
Este novo algoritmo é utilizado por padrão nas versões japonesas a partir de 4D v14. Os arquivos necessários para a
livraria Mecab se instalam na pasta mecab da pasta Resources para aplicações 4D (versões em japonês unicamente).
Se você desejar, pode desativar o uso do algoritmo Mecab e utilizar a livraria ICU convencional.
Para desativar Mecab, simplesmente selecione a opção Considere só caracteres não alfanuméricos para palavras
chave:
- 54 -
Nota: Também pode desativar o uso de Mecab apagando ou renomeando a pasta Resources/Mecab de sua aplicação 4D
japonesa.
- 55 -
Página Banco de dados/Memória
Esta aba permite configurar a memória cache para os dados do banco.
Parâmetros da cache para o banco
Cálculo da cache adaptativa: quando esta opção estiver selecionada, a gestão da memória cach é realizada
dinamicamente pelo sistema, respeitando os limites definidos. Isto permite a configuração de uma memória cache de
alto rendimento que se adapta à maioria das configurações. O tamanho de memória cache se calcula dinamicamente
de acordo aos parâmetros definidos. Os valores oferecidos por padrão correspondem a uma utilização padrão de 4D.
Memória física a reservar para o sistema e outros aplicativos: parte da memória RAM a reservar para o
sistema e outros aplicativos. Este valor pode ser aumentado com o propósito de otimizar quando outros
aplicativos estiverem sendo executados na mesma máquina que o 4D.
Porcentagem de memória disponível para a cache: porcentagem de memória disponível destinada por
configuração à memória cache.
Para obter o tamanho reservado como padrão ao cache, simplesmente realize o seguinte cálculo: (memória
física – memória física a reservar) x Porcentagem de memória usada para a cache. No modo adaptativo, o
tamanho da memória cache varia dinamicamente em função das necessidades da aplicação e do sistema.
Pode definir limites utilizando as opções seguintes:
Tamanho máximo: quantidade máxima de memória que pode ser utilizada pela cache. Com uma versão 32 bits
de 4D e 4D Server, este valor não pode ser superior a 2 000 MB (2 GB). Com 4D Server 64 bits, este valor é
virtualmente ilimitado.
Tamanho mínimo: quantidade mínima de memória que se deve reservar para a cache. Este valor não pode ser
menor que 4 MB.
A definição de limites é muito útil em bancos que são distribuídos entre máquinas cuja configuração de memória não é
conhecida de antemão. Nestes casos os limites permitem garantir um desempenho mínimo em todos os casos. A
seguinte imagem ilustra este funcionamento:
Exemplo de cálculo de memória cache:
Memória física a reservar = 256 MB
Porcentagem da memória disponível usada para a cache = 50%
Tamanho máximo = 1 GB Tamanho mínimo = 128 MB
Exemplos de configurações em modo adaptativo
Os seguintes exemplos mostram as vantagens de ter uma memória cache adaptativa em várias configurações de
programas e memória.
Computador com 768 MB de RAM executando um 4D Server unicamente. Neste caso, vale a pena dar-lhe o
máximo de memória cache:
Memória física a reservar = 256 MB.
Porcentagem de memória disponível usada para a cache = 100% já que somente se roda o 4D Server.
Tamanho mínimo = 10 MB e Tamanho máximo = 1GB (nesta configuração, estes valores são inúteis).
- 56 -
--> Tamanho como padrão da cache: (768 - 256) x 100% = 512 MB
A mesma configuração anterior mas executando três aplicações 4D Server no computador. Talvez se deseje
usar uma quantidade de memória cache igual para cada aplicativo.
Somente deve usar 33% da “Porcentagem de memória disponível usada para cache” a cada servidor.
--> Tamanho por padrão da cache para cada aplicativo: (768 - 256) x 33% = 170 MB
Criação de um aplicativo executável de distribuição massiva em múltiplas configurações. Depois de realizar
provas, foi encontrado que a aplicação funciona melhor com memória cache entre 20 e 100 MB.
Memória física a reservar = 256 MB.
Porcentagem de memória disponível usada para a cache = 50% com o propósito de deixar memória
disponível para outros aplicativos.
Tamanho mínimo = 20 MB e Tamanho máximo = 100 MB.
--> Em uma máquina com 256 MB de RAM, 4D utiliza o mínimo de cache = 20 MB
--> Em uma máquina com 1 GB de RAM, 4D utiliza o máximo de cache = 100 MB
--> Em uma máquina com 384 MB de RAM, 4D utiliza (384 - 256) x 50% = 64 MB
Cálculo da cache adaptativa não selecionado: neste modo, você define o tamanho da memória cache para o
banco. 4D mostra uma área de entrada que permite definir a memória cache a utilizar como também a informação
relacionada com a memória física (RAM disponível na máquina), a cache atual e a cache depois de reiniciar (levando
em conta as suas mudanças).
O tamanho da memória cache que introduz se reservará para o banco 4D, sem considerar o estado dos recursos da
máquina. Este parâmetro pode ser utilizado em certas configurações específicas ou quando o banco estiver
desenhado para ser utilizado em diferentes sistemas em termos de memória. Na maioria dos casos, a memória cache
adaptativa oferece melhor rendimento.
Conservar a cache em memória física para 4D Server e 4D Volume Desktop
Esta opção avançada permite “forçar” a cache a permanecer na memória física (RAM) da máquina quando o banco é
executado por 4D Volume Desktop ou 4D Server.
Como padrão a cache pode ser esvaziada em parte ou em totalidade na memória virtual da máquina em caso de que
seja necessário (a memória virtual é uma área reservada no disco rígido). Como este mecanismo pode, em alguns
casos, alterar sensivelmente o rendimento das aplicações lançadas com 4D Server ou 4D Volume Desktop, é possível
selecionar esta opção para que a cache se mantenha permanentemente em memória física. É claro que a
configuração da máquina (tamanho de RAM, número de aplicativos executados simultaneamente, etc.) deve ser
compatível com este princípio.
Nota: esta opção não afeta o funcionamento das aplicações executadas com a aplicação 4D.
Escrever cache a cada … minutos: especifica a frequência em que se salva automaticamente a cache de dados, ou
seja sua escrita em disco.
4D guarda os dados localizados naa cache a intervalos regulares. Pode definir um intervalo de tempo entre 1 e 500
minutos. Como padrão, 4D guarda seus dados cada 15 minutos. A aplicação também guarda todos os seus dados no
disco quando muda de ambiente ou sai da aplicação.
Quando esperar a entrada de grandes quantidades de dados, considere definir um intervalo corto. Em caso de una
falha de energia, somente perderá os dados introduzidos depois da última gravação (se o banco funciona sem arquivo
de histórico).
Se cada vez que há um esvaziamento da cache, o banco de dados fica lento, é necessário ajustar a frequência. Essa
lentidão significa que uma grande quantidade de dados está sendo guardada. Um intervalo mais curto seria mais
eficiente já que cada vez haveria menos registros para guardar e portanto o processo seria mais rápido.
Como padrão, 4D mostra uma pequena janela durante a escrita e esvaziamento da cache. Se não deseja este aviso
visual, pode desmarcar a opção Escrita da cache em Página Interface.
- 57 -
Página Movimentação
A página Movimentação que faz parte das MissingRef permite pré-configurar os deslocamentos de objetos no banco em
modo Desenho. 4D aplica estes parâmetros ao arrastar/colar objetos no banco, quando se utiliza como banco de destino.
Ações padrões durante a cópia de objetos dependentes
Estas opções permitem configurar a movimentação de objetos dependentes, ou seja os objetos associados aos formulários
que se movimentam (ver Visão Geral). Pode definir uma ação para cada tipo de objeto dependente.
Estas ações, por padrão, são aplicadas automaticamente se o movimento de objetos não provocar conflitos e se a opção
Somente em caso de conflito de nome estiver selecionada (ver a próxima seção). Do contrário, essas ações se
selecionarão, por padrão, na caixa de diálogo de movimentação.
As ações Ignorar, Criar (Renomear se for necessário), Criar (Substituir se for necessário) como também Utilizar
outro objeto são oferecidas para cada tipo de objeto. Note que outras ações contextuais mais específicas são propostas
na caixa de Caixa de diàlogo Movendo quando é mostrada. Esta é a descrição destas opções:
Ignorar: um objeto dependente deste tipo nunca se copia no banco de destino. Na caixa de diálogo de movimentação,
a ação Não criar é oferecida como padrão.
Criar (Renomear se for necessário): um objeto dependente deste tipo sempre é copiado no banco de destino. Na
caixa de diálogo de movimentação, a ação Criar é oferecida como padrão se o objeto não existir no banco de
destino.
Em caso de conflito de nome com um objeto do banco de destino, o objeto copiado é renomeado adicionando-se o
sufixo “_X,” de acordo com o princípio aplicado aos objetos principais. Neste caso, a ação Renomear é oferecida
como padrão na caixa de diálogo de movimentação.
Criar (Substituir se for necessário): um objeto dependente deste tipo sempre se copia no banco de destino. Na
caixa de diálogo de movimentação, a ação Criar é oferecida como padrão se o objeto não existir no banco de dados
de destino.
Em caso de conflito de nome com um objeto no banco de destino, o objeto copiado substitui o objeto existente. Neste
caso, a ação Substituir, é oferecida como padrão na caixa de diálogo de movimentação.
Utilizar outro objeto: esta opção provoca a visualização sistemática do diálogo de movimentação, mesmo se a
opção “Mostrar somente em caso de conflito de nome” estiver marcada. Durante o movimento de objetos, deve
designar um objeto do banco de destino a ser utilizado ao invés do objeto dependente copiado.
Nota: estas opções só servem para os objetos dependentes. Para os objetos movimentados, a ação padrão é do tipo Criar
(Substituir se for necessário).
Mostrar a caixa de diálogo de movimentação: este menu configura a visualização da caixa de diálogo de
movimentação.
Quando se seleciona a opção Sempre, a caixa de diálogo aparece toda vez que se movimentar objetos, o que
permite controlar com mais precisão a operação. Se a opção Somente em caso de conflito de nome estiver
selecionada, a caixa de diálogo só aparecerá quando um objeto movimentado (principal ou objeto dependente) tiver
um conflito de nome com um objeto do banco de destino.
- 58 -
Página Backup/Periodicidade
As opções que se encontram nesta aba lhe permitem definir e configurar os backups periódicos automáticos do banco de
dados. Pode escolher um parâmetro padrão rápido ou personalizar completamente a periodicidade.
Aparecem diferentes opções em função do valor definido no menu Backup automático:
Nunca: a função de backup programado está inativa.
A cada hora: programa um backup automático a cada hora, a partir da próxima hora.
A cada dia: programa um backup automático a cada dia. Pode-se indicar a hora quando o backup deve começar.
A cada semana: programa um backup automático a cada semana. Duas áreas de entrada adicionais lhe permitem
indicar o dia e a hora quando deve começar o backup.
Cada mês: programa um backup automático cada mês. Duas áreas de entrada adicionais lhe permitem indicar o dia
do mês e a hora quando deve começar o backup.
Personalizado: permite configurar backups automáticos "à medida". Quando selecionar esta opção, aparecem várias
áreas de entrada adicionais:
Todas as X hora(s): permite programar os backups sobre uma base horária. Pode introduzir um valor entre 1 e
24.
Todos os X dia(s) às x: permite programar backups com una base diária. Introduza 1 se deseja realizar um
backup diário. Quando selecionar esta opção, deve indicar a hora a que deve iniciar o backup.
Todas as X semana(s) dia às x: esta opção permite programar os backups com base semanal. Introduza 1 se
deseja realizar um backup por semana. Quando selecionar esta opção, deve indicar o dia(s) da semana e a hora
a que deve começar o backup. Pode selecionar vários dias da semana. Por exemplo, pode utilizar esta opção
para definir dois backups semanais: um na quarta-feira e o outro na sexta.
Todos os X mês(es), X dia às x: esta opção permite programar backups com base mensal. Introduza 1 se
deseja realizar um backup mensal. Quando selecionar esta opção, deve indicar o dia do mês e a hora a que
deve começar o backup.
Notas sobre os backups 4D
Para uma descrição detalhada dos mecanismos de backup de 4D, consulte o capítulo Backup e restauração do banco
de dados.
No modo cliente-servidor, os parâmetros de backup só podem ser definidos desde a máquina 4D Server.
Gestão das propriedades através do arquivo Backup.XML
Todas as preferências de backup e de restauração de 4D estão disponíveis em forma de arquivo XML independente. 4D
utiliza os dados neste arquivo para mostrar as opções na caixa de diálogo de Preferências e no momento em que cada
backup começa.
É possível ler e modificar os parâmetros de backup utilizando os comandos XML de 4D ou através do editor XML. Este
permite aos desenvolvedores manejar por programação os parâmetros de backup, especialmente com aplicações
compiladas e fusionadas com 4D Unlimited Desktop.
O arquivo XML das preferências de backup e de restituição se chama Backup.XML. É criada automaticamente na seguinte
localização:
PastaBanco/Preferences/Backup/Backup.XML
... onde PastaBanco é a pasta que contêm o arquivo da estrutura do banco. As sub-pastas Preferences/Backup/ são
criadas automaticamente se necessário. A descrição das chaves XML associadas às preferências de backup estão no
manual Chaves XML Backup.
- 59 -
Página Backup/Configuração
Página Configuração
As páginas agrupadas nesta aba permitem designar os arquivos backup e sua localização, assim como a do arquivo de
histórico.
Conteúdo
Esta área lhe permite definir quais arquivos e/ou pastas copiar durante a próxima cópia de segurança.
Arquivo de dados: arquivo de dados do banco. Quando esta opção está selecionada, o arquivo de histórico atual do
banco, se existir, é incluído na cópia de segurança ao mesmo tempo que os dados.
Arquivo de estrutura: arquivo de estrutura do banco. Em casos de bancos compilados e fusionados com 4D
Desktop, esta opção permite salvar o arquivo .exe sob Windows e o pacote sob Mac OS.
Arquivo de estrutura de usuário (opcional): arquivo de estrutura de usuário do banco, contém os formulários de
usuário personalizados (onde aplicar). Para maiores informações, consulte o capítulo Formulários de usuário.
Arquivos anexos: esta área permite especificar um conjunto de arquivos e/ou pastas, a serem incluídas na cópia de
segurança ao mesmo tempo em que o banco de dados. Estes arquivos podem ser de qualquer tipo (documentos ou
modelos plug-in, etiquetas, relatórios, imagens, etc.).
Você pode definir arquivos individuais ou pastas cujo conteúdo fará parte da cópia de segurança. Cada elemento
anexo aparece com seu endereço de acesso completo na área de “Arquivos anexos”.
Remover: este botão permite remover o arquivo selecionar da lista de arquivos anexos.
Criar pasta: quando você clicar neste botão, 4D mostra uma caixa de diálogo que lhe permite selecionar uma
pasta para incluí-la na cópia de segurança. Em caso de uma restauração, a pasta será recuperada com sua
estrutura interna. Você pode selecionar qualquer pasta ou unidade conectada a máquina, exceto a pasta que
contém os arquivos do banco de dados.
Adicionar Pasta: quando você clicar neste botão, 4D mostra uma caixa de diálogo que lhe permite selecionar
um arquivo, para anexa-lo a cópia de segurança.
Para mais informação sobre os arquivos de bancos 4D, consulte Descrição dos Arquivos 4D.
Localização dos arquivos de backup
Esta área permite ver e modificar a localização na qual se armazenarão os arquivos de backup assim como os arquivos de
backup do arquivo de histórico (se aplicar).
Para ver a localização dos arquivos, clique na área para mostrar sua rota de acesso como menu pop-up.
Para modificar a localização onde se guardam estes arquivos, clique no botão [...]. Aparece uma caixa de diálogo de seleção de pastas, a qual
permite selecionar uma pasta ou disco onde se localizarão os backups. As áreas “Espaço utilizado” e “Espaço disponível” se atualizam
automaticamente e indicam o espaço de disco disponível no disco da pasta selecionada.
Gestão do arquivo de histórico
A opção Utilizar o arquivo de histórico, quando está selecionada, indica que o banco utiliza um arquivo de histórico. Sua
rota de acesso se encontra abaixo dessa opção. Quando esta opção está selecionada, não é possível abrir o banco de
dados sem o arquivo de histórico.
Como padrão, todo banco criado com 4D utiliza um arquivo de histórico: a criação deste arquivo é parte da estratégia de
backup automático (consulte Estratégia de Backup automático). O arquivo de histórico se chama
NomeArquivoDados.journal e está localizado na pasta que contenha a estrutura do banco.
A ativação de um novo arquivo de histórico requer que os dados do banco sejan guardados antes numa cópia de
segurança. Quando selecione e valide esta opção, aparecerá uma caixa de diálogo de alerta para informar que é
necessário realizar um backup:
- 60 -
Se fizer um clique em Aceitar, o backup começa imediatamente depois que o arquivo de histórico for ativado. Se fizer clique
em Cancelar, o comando se guarda mas a criação do arquivo de registro fica em espera e será criada apenas depois do
próximo backup do banco de dados.
Notas sobre os backups 4D
Para uma descrição detalhada dos mecanismos de backup de 4D, consulte o capítulo Backup e restauração do banco
de dados.
No modo cliente-servidor, os parâmetros de backup só podem ser definidos desde a máquina 4D Server.
Gestão das propriedades através do arquivo Backup.XML
Todas as preferências de backup e de restauração de 4D estão disponíveis em forma de arquivo XML independente. 4D
utiliza os dados neste arquivo para mostrar as opções na caixa de diálogo de Preferências e no momento em que cada
backup começa.
É possível ler e modificar os parâmetros de backup utilizando os comandos XML de 4D ou através do editor XML. Este
permite aos desenvolvedores manejar por programação os parâmetros de backup, especialmente com aplicações
compiladas e fusionadas com 4D Unlimited Desktop.
O arquivo XML das preferências de backup e de restituição se chama Backup.XML. É criada automaticamente na seguinte
localização:
PastaBanco/Preferences/Backup/Backup.XML
... onde PastaBanco é a pasta que contêm o arquivo da estrutura do banco. As sub-pastas Preferences/Backup/ são
criadas automaticamente se necessário. A descrição das chaves XML associadas às preferências de backup estão no
manual Chaves XML Backup.
- 61 -
Página Backup/Backup & Restauração
Utilize as opções desta aba para configurar os parâmetros gerais dos backups do banco e das restaurações automáticas.
Parâmetros gerais
Esta área estabelece diferentes mecanismos a tomar em conta durante os backups.
Conservar somente os últimas X arquivos de backup: este parâmetro permite ativar e configurar o mecanismo
utilizado para apagar os arquivos de backup mais antigos, o que evita o risco de saturação do HD.
Esta característica funciona assim: logo que termine o backup atual, 4D borra o arquivo mais antigo se ele se encontra
na mesma localização do arquivo do qual se faz backup, e tem o mesmo nome (pode pedir que o arquivo mais antigo
se apague antes do backup para economizar espaço).
Se, por exemplo, o número de conjuntos se fixa em 3, os primeiros três backups crian os arquivos MeuBanco-0001,
MeuBanco-0002, e MeuBanco-0003 respectivamente. Durante o quarto backup, é criado o arquivo MeuBanco-0004 e
se apaga MeuBanco-0001. Como padrão, o mecanismo para apagar jogos está ativado e 4D conserva 3 conjuntos de
backups.
Para desativar o mecanismo, simplesmente desmarque a opção.
Nota: este parâmetro se refere aos conjuntos de backup do banco e aos do arquivo de histórico.
Backup somente se o arquivo de dados foi modificado: quando esta opção estiver marcada, 4D inicia os
backups programados somente se dados no banco foram adicionados, modificados ou eliminados desde o último
backup. Do contrário, o backup programado é cancelado e postergado até o próximo backup programado. Não se
gera erro; mesmo assim o diário backup registra que o backup foi postergado.
Esta opção também permite economizar tempo de máquina no backup dos bancos principais utilizados em consultas.
Note que a ativação desta opção não considera as possíveis modificações realizadas ao arquivo de estrutura ou aos
arquivos anexos.
Nota: este parâmetro se refere aos backups do banco e do histórico.
Excluir o backup mais antigo antes/depois do backup: esta opção somente se utiliza se a opção “Conservar
unicamente os X últimos arquivos de backup” estiver selecionada. Isso permite especificar se 4D deve começar por
apagar o arquivo mais antigo antes de realizar o backup (opção antes) ou se a eliminação deve ocorrer uma vez que
se tenha realizado o backup (opção depois do backup). Para que este mecanismo funcione, o arquivo mais antigo
não deve ter sido renomeado ou movido.
Se o backup falhar: esta opção permite definir o mecanismo utilizado para manejar backups que falharam (backup
impossível). Quando não é possível realizar um backup, 4D permite fazer uma nova tentativa.
Nota: 4D considera um backup como com erro se o banco não é lançado no momento em que o backup automático
foi programado.
Tentar novamente na próxima data e hora programada: esta opção somente tem sentido quando se
trabalha com backups automáticos programados. Cancela o backup que falhou e um erro é gerado.
Tentar novamente em X segundos, minutos ou horas: quando essa opção estiver selecionada, se faz uma
nova tentativa de backup depois de um período de espera. Esse mecanismo permite antecipar certas
circunstâncias que bloqueiam o backup. Pode definir um período de espera em horas, minutos ou segundos,
utilizando o menu correspondente. Se a nova tentativa também falha, um erro é gerado e a falha é anotada na
área estado do último backup e no arquivo de diário de backups.
Cancelar a operação depois de X tentativas: este parâmetro permite definir o número máximo de tentativas
de backup que falham.
Se o backup não se realizou com êxito depois de alcançar o número máximo de tentativas definido, o backup é
cancelado e o erro 1401 é gerado (“o número máximo de tentativas de backup foi alcançado; o backup
automático está temporariamente desativado”). Neste caso, não se tentará realizar um novo backup automático
enquanto a aplicação não for reiniciada, ou complete com sucesso um backup manual.
Este parâmetro é útil para evitar um caso de um problema prolongado (que necessita de intervenção humana)
que evita que se realize o backup e faça com que a aplicação tente repetidamente o backup em prejuízo de seu
rendimento geral. Como padrão, este parâmetro não está selecionado.
Arquivo
Esta área permite definir as opções de geração dos arquivos. Estas opções aplicam aos arquivos de backup principais e
aos arquivos de backup do histórico.
Tamanho do segmento (Mb)
4D permite segmentar arquivos, ou seja cortar um arquivo em tamanhos menores. Isso permite, por exemplo,
- 62 -
armazenar um backup em diferentes discos (CDs, ZIPs, etc.). Durante um processo de restauração, 4D fusionará
automaticamente os segmentos. Cada segmento se chama MeuBanco[xxxx-yyyy].4BK, onde xxxx é o número de
backup e yyyy é o número de segmento. Por exemplo, os três segmentos do sexto backup do banco MeuBanco se
chamarão MeuBanco[0006-0001].4BK, MeuBanco[0006-0002].4BK e MeuBanco[0006-0003].4BK.
O menu Tamanho do segmento é uma combo box que permite definir o tamanho em MB de cada segmento do
backup. Pode escolher um dos tamanhos pré-definidos ou introduzir um tamanho específico entre 0 e 2048. Se colocar
0, não há segmentação (este é o equivalente de colocar Nenhum).
Taxa de compressão
Como padrão, 4D comprime os backups para economizar espaço em disco. Entretanto, a fase de compressão de
arquivos pode fazer com que os backups se tornem muito lentos, quando grandes volumes de dados estão sendo
manejados.
A opção Taxa de compressão permite ajustar a compressão:
Nenhum: não se aplica nenhuma taxa de compressão. O backup é mais rápido mas os arquivos são
consideravelmente maiores.
Rápido (padrão): esta opção é um compromisso entre velocidade do backup e tamanho do arquivo.
Compacto: a taxa de compressão máxima se aplica aos arquivos.
Os arquivos utilizam o menor espaço possível no disco, mas o backup é muito mais lento.
Taxa de entrelaçamento e Taxa de redundância
4D gera arquivos utilizando algoritmos específicos baseados em mecanismos de otimização (entrelaçamento) e
segurança (redundância). Pode estabelecer estes mecanismos conforme suas necessidades. Os menus para estas
opções também possuem os fatores Alto, Médio, Baixo, e Nenhum (como padrão).
Taxa de entrelaçamento: o entrelaçamento consiste em guardar dados em setores não contíguos para limitar
os riscos em caso de dano dos setores. Quanto maior a taxa, maior o consumo de memória do processamento
dos dados.
Taxa de redundância: a redundância permite assegurar os dados presentes em um arquivo ao repetir a
mesma informação várias vezes. Quanto maior a taxa de redundância, melhor a segurança do arquivo;
entretanto, o armazenamento é mais lento e o tamanho do arquivo é maior.
Restituição automática
Estas opções são utilizadas para configurar os mecanismos automáticos a considerar durante a abertura de um banco de
dados danificado.
Restaurar o último backup se o banco de dados estiver danificado: quando esta opção estiver marcada, o
programa inicia automaticamente a restauração do arquivo de dados do último backup válido do banco, se detecta
alguma anomalia (por exemplo um arquivo corrompido) durante o lançamento do banco. Não é necessária nenhuma
intervenção por parte do usuário; a operação se registra no diário do backup.
Nota: no caso de uma restauração automática, somente se restitui o arquivo de dados. Se quiser recuperar os
arquivos anexos ou o arquivo de estrutura, deve realizar uma restauração manual.
Integrar o último histórico se o banco estiver incompleto: quando esta opção está selecionada, o programa
integra automaticamente histórico durante a abertura ou restauração de um banco.
Quando abre um banco, o histórico atual se integra automaticamente se 4D detecta que as operações
guardadas no histórico não estão presentes nos dados. Esta situação se apresenta, por exemplo, quando ocorre
uma perda de energia, então as operações no cache de dados não são escritas no disco.
Quando se restaura um banco, se o arquivo de histórico atual ou o arquivo de backup de histórico têm o mesmo
número que o arquivo de backup guardado na mesma pasta, 4D examina seu conteúdo. Se contêm operações
não presentes no arquivo de dados, ele o integra automaticamente.
Não se mostra nenhuma caixa de diálogo ao usuário; a operação é completamente automática. A meta é fazer com que o
uso seja o mais fácil possível. A operação se registra no diário de backup.
Notas sobre os backups 4D
Para uma descrição detalhada dos mecanismos de backup de 4D, consulte o capítulo Backup e restauração do banco
de dados.
No modo cliente-servidor, os parâmetros de backup só podem ser definidos desde a máquina 4D Server.
Gestão das propriedades através do arquivo Backup.XML
Todas as preferências de backup e de restauração de 4D estão disponíveis em forma de arquivo XML independente. 4D
utiliza os dados neste arquivo para mostrar as opções na caixa de diálogo de Preferências e no momento em que cada
backup começa.
É possível ler e modificar os parâmetros de backup utilizando os comandos XML de 4D ou através do editor XML. Este
permite aos desenvolvedores manejar por programação os parâmetros de backup, especialmente com aplicações
compiladas e fusionadas com 4D Unlimited Desktop.
- 63 -
O arquivo XML das preferências de backup e de restituição se chama Backup.XML. É criada automaticamente na seguinte
localização:
PastaBanco/Preferences/Backup/Backup.XML
... onde PastaBanco é a pasta que contêm o arquivo da estrutura do banco. As sub-pastas Preferences/Backup/ são
criadas automaticamente se necessário. A descrição das chaves XML associadas às preferências de backup estão no
manual Chaves XML Backup.
- 64 -
Página Cliente-servidor/opções de rede
Esta página agrupa os parâmetros relacionados com o uso do banco em modo cliente-servidor. Estas propriedades só são
consideradas quando o banco se utiliza em modo remoto.
Os parâmetros são agrupados em duas abas: Opções de rede e Configuração IP (Tabela de configuração AutorizarNegar).
Rede
Publicar o banco ao iniciar
Esta opção permite indicar se o banco 4D Server deve aparecer ou não na lista de bancos publicados na caixa de diálogo
de conexão.
Quando a opção estiver selecionada (opção selecionada como padrão), o banco se torna público e aparece na lista
de bancos publicados (página TCP/IP).
Quando a opção não estiver selecionada, o banco não se torna público e não aparece na lista de bancos publicados.
Para conectar, os usuários devem introduzir manualmente a direção do banco na página Personalizado da caixa de
diálogo de conexão.
Nota: se modificar este parâmetro, deve reiniciar o banco servidor para que seja considerada.
Nome de publicação
Esta opção permite modificar o nome de publicação de um banco publicado pelo 4D Server, ou seja, o nome que é
mostrado na página de publicação dinâmica TCP/IP da caixa de diálogo de conexão (ver a seção Conexão a um banco
de dados 4D Server).
Como padrão, 4D Server utiliza o nome do arquivo de estrutura do banco. Pode escrever qualquer nome personalizado que
deseje.
Nota: este parâmetro não é considerado nas aplicações cliente-servidor personalizadas. Em teoria, a aplicação cliente se
conecta diretamente à aplicação servidor, sem passar pela caixa de diálogo de conexão. Entretanto, em caso de erro, esta
caixa de diálogo aparecerá, neste caso, o nome da publicação da aplicação servidor é o nome do banco compilado.
Número de porta
Esta opção permite modificar o número da porta TCP na qual o 4D Server publica o banco de dados. Esta informação se
armazena na estrutura do banco e em cada máquina cliente. Como padrão, o número de porta TCP utilizado pelo 4D Server
e 4D em modo remoto é 19813.
Personalizar este valor é necessário quando se deseja utilizar várias aplicações 4D no mesmo aparelho com o protocolo
TCP, neste caso, deve especificar um número de porta diferente para cada aplicação.
Ao modificar este valor desde 4D Server ou 4D, se transmite automaticamente a todas as máquinas 4D conectadas ao
banco. Para atualizar as outras máquinas clientes não conectadas, apenas deve entrar o novo número de porta (precedido
por dois pontos) depois da direção IP da máquina servidor na página Personalizado da caixa de diálogo de conexão. Por
exemplo, se o novo número de porta é 19888:
- 65 -
Nota: somente os bancos publicados na mesma porta que o definido no cliente 4D são visíveis na página de publicação
dinâmica TCP/IP.
4D Server e números de porta
4D Server utiliza três portas TCP para as comunicações entre os servidores internos e os clientes:
Servidor SQL: 19812 como padrão (modificável através da página "SQL/Configuração" das Preferências).
Servidor da aplicação: 19813 como padrão (modificável através da página "Cliente-Servidor/Configuração" das
Preferências, ver acima).
Servidor DB4D (servidor de banco de dados): 19814 como padrão. Este número de porta não pode ser modificado
diretamente, mas é sempre o número da porta do servidor da aplicação + 1.
Quando um cliente 4D se conecta ao 4D Server, se utiliza a porta TCP do servidor da aplicação (19813 ou a porta
indicada depois dos dois pontos ':' na direção IP que se mostra na caixa de diálogo de conexão). A conexão a outros
servidores através de suas respectivas portas é então automática, já que não é necessário especificar-la.
Tenha em mente que no caso de acesso através de um router ou um firewall, as três portas TCP devem estar abertas
de forma explícita.
Tempo limite de conexão Cliente-servidor
Este termômetro permite definir o tempo limite (timeout - período de inatividade depois do qual a conexão se fecha) entre
4D Server e as máquinas clientes conectadas a ele.
A opção ilimitado elimina o tempo limite. Quando esta opção estiver selecionada, o controle de inatividade do cliente se
desativa.
Quando se seleciona um tempo limite, o servidor fechará a conexão de um cliente se não recebe nenhuma petição do cliente
durante o tempo limite especificado.
Comunicação cliente-servidor
Inscrever os clientes ao início para executar no cliente
Quando esta opção está selecionada, todos as máquinas 4D remotas que se conectam ao banco podem executar os
métodos remotamente. Este mecanismo é detalhado na seção Procedimentos armazenados nas máquinas clientes.
Encriptar as conexões cliente-servidor
Esta opção permite ativar o modo SSL (modo de segurança) para a comunicação entre a máquina servidora e as possíveis
máquinas 4D remotas. Esta opção é detalhada na seção Criptografar conexões cliente-servidor.
Atualizar a pasta "Resources" durante uma sessão
Esta configuração permite definir globalmente o modo de atualização da instância local da pasta nas máquinas 4D
conectadas quando a pasta do banco foi modificada durante a sessão (a pasta se sincroniza automaticamente no
equipamento remoto cada vez que uma sessão se abre). Três opções estao disponíveis:
- 66 -
Nunca: a pasta local não se atualiza durante a sessão. A notificação enviada pelo servidor é ignorada. A pasta local
pode ser atualizada de forma manual utilizando o comando Update Local Resources.
Sempre: a sincronização da pasta local é realizada automaticamente durante a sessão cada vez que se envia a
notificação pelo servidor.
Perguntar: quando é enviada a notificação pelo servidor, é mostrada uma caixa de diálogo nas máquinas cliente,
indicando a modificação. O usuário pode aceitar ou recusar a sincronização da pasta local.
A pasta centraliza os arquivos personalizados necessários para a interface do banco (arquivos de tradução, imagens,
etc.) Os mecanismos automáticos ou manuais permitem notificar a cada cliente quando o conteúdo desta pasta foi
modificado. Para mais informação, consulte a seção Gerenciamento da pasta Resources.
Abrir a estrutura em modo
Esta opção permite definir o modo de abertura da estrutura do banco para as máquinas clientes. Como padrão, está
definido o modo Leitura/Escrita mas também é possível configurar a abertura no modo Somente leitura para evitar
modificações na estrutura.
- 67 -
Página Cliente-servidor/configuração IP
Tabela de configuração Autorizar-Negar
Esta tabela permite estabelecer as regras de controle de acesso ao banco em função da direção IP dos equipamentos 4D
remotos. Esta opção permite reforçar a segurança, por exemplo, para aplicações estratégicas.
Nota: esta tabela de configuração não controla as conexões web.
O funcionamento da tabela de configuração é o seguinte:
A coluna "Autorizar-Negar" permite selecionar o tipo de regra a aplicar (Autorizar ou Negar) utilizando um menu popup. Para agregar uma regra, clique no botão Adicionar (+). Uma nova linha aparece na tabela. O botão Eliminar (-)
permite eliminar a linha atual.
A coluna "Direção IP" permite designar a direção ou direções IP, incluídas na regra. Para especificar uma direção,
clique na coluna e escreva a direção da seguinte forma: 123.45.67.89.
Pode utilizar um caractere * (asterisco) para especificar as direções do tipo "começa com". Por exemplo, 192.168 .*
indica todas as direções que começam com 192.168.
A aplicação das regras é efetuada na ordem de visualização da tabela. Se duas regras são contraditórias, se dá
prioridade à regra localizada mais acima na tabela.
Pode re-organizar as linhas modificando a ordem atual (clique no cabeçalho da coluna para alternar o sentido de
ordenação).
Também pode mover linhas através de arrastar e soltar.
Por razões de segurança, somente as direções correspondentes a uma regra de autorização explícita poderão ser
conectadas.
Em outras palavras, se a tabela só conter uma ou mais regras Negar, todas as direções serão negadas porque
nenhuma cumpria ao menos uma regra. Se deseja negar somente determinadas direções (e permitir outras), adicione
uma regra Autorizar * ao final da tabela. Por exemplo:
- Negar 192.168.* (negar todas as direções que comecem por 192.168)
- Autorizar * (e autorizar todas as demais direções)
Como padrão, não se aplicam restrições de conexão por 4D Server: a primeira linha da tabela contêm a etiqueta
Autorizar e o caractere * (todas as direções).
- 68 -
Página Web/configuração
As abas da página Web permitem configurar múltiplos aspectos do servidor web integrado de 4D (segurança, início,
conexões, serviços web, etc.). Para mais informação sobre o funcionamento do servidor web de 4D, consulte o capítulo Web
Server do manual Linguagem de 4D. Para mais informação sobre os serviços web de 4D, consulte o capítulo Publicar ou
utilizar serviços Web.
Informação de publicação
Publicar o banco ao iniciar
Indica se o servidor web deve iniciar ao se lançar a aplicação 4D. Esta opção está descrita na seção Configuração web
server e gestão de conexão.
Número de porta TCP
Automaticamente, 4D publica um banco web na porta Web TCP padrão, que é a porta 80. Se essa porta já estiver sendo
utilizada por outro serviço Web, deve modificar o porto TCP utilizado por 4D para este banco. A modificação da porta TCP
que permite iniciar o servidor Web 4D baixo Mac OS X sem ser o usuário raiz da máquina (ver a seção Configuração web
server e gestão de conexão).
Para fazer isso, vá à área de entrada Porta TCP e indique o número da porta TCP a ser utilizada (um número de porta TCP
que não esteja sendo utilizada por outro serviço TCP/IP na máquina).
Nota: Se digitar 0, 4D utilizará o número de porta TCP como padrão, ou seja 80.
Ao nível do navegador web, deve incluir esse número de porta TCP personalizado na descrição da direção utilizada para se
conectar ao banco Web. A direção deve ter um sufixo que consiste em dois pontos seguidos pelo número de porta. Por
exemplo, se utiliza a porta TCP 8080, deve especificar no navegador “123.4.567.89:8080”.
Advertência: Se utiliza números de porta TCP diferentes dos números do padrão (80 para o modo padrão e 443 para o
modo SLL), tenha cuidado de não utilizar números de porta que sejam números padrão para outros serviços que possam
utilizá-la simultaneamente. Por exemplo, se planeja utilizar também o protocolo FTP em sua máquina servidor Web, não
utilize as portas TCP 20 e 21, as quais são as portas padronizadas para esse protocolo. Para conhecer as atribuições
padrão de números de porta TCP, consulte a seção Apêndice B, Números de portas TCP na documentação de
Comandos Internet 4D. Os números de porta inferiores a 256 estão reservados para os serviços padrão, e os números 256
a 1 024 estão reservados para os serviços específicos originados nas plataformas UNIX. Para máxima segurança,
especifique um número de porta superior a estes intervalos, por exemplo entre 2 000 ou 3 000.
Definir o Endereço IP para os pedidos HTTP
Esta opção permite definir o endereço IP no qual o servidor Web receberá os pedidos HTTP. Por padrão, o servidor Web
responde em todos os endereços IP (opção Todos).
O menu pop-up mostra automaticamente todos os endereços IP disponíveis na máquina. Se você deseja que o servidor só responda os
pedidos enviados a um endereço TCP/IP específico, simplesmente selecione este endereço através de um menu.
Esta funcionalidade é para os servidores Web 4D localizados em máquinas com vários endereços TCP/IP, o que é caso freqüente para a
maioria dos provedores de hospedagem na Internet (multiHoming.) A implementação de um sistema MultiHoming requer configurações
específicas na máquina servidor web:
Configuração MultiHoming em Mac OS
Para configurar um sistema MultiHoming em Mac OS:
1. Abra o painel de controle TCP/IP.
2. Selecione a opção Manual do menu Configuração.
3. Crie um arquivo de texto chamado "Direção IP secundária" e guarde-o na subpasta Preferências de sua pasta
Sistema.
Cada linha do arquivo "Direção IP secundária" deve conter uma direção IP secundária e se é necessário, uma
máscara de sub-rede e uma direção de router para a direção IP secundária.
Para mais informação consulte a documentação Apple.
Configuração MultiHoming em Windows
Para configurar um sistema MultiHoming em Windows:
1. Selecione as seguintes sequências de comandos (ou seus equivalentes em função de sua versão de Windows):
- 69 -
Menu Início > Painel de controle > Conexões de rede e Internet> Conexão de área local (Propriedades) >
Protocolo de Internet (TCP/IP) > botão Propriedades > botão Opções avançadas... Se mostra a caixa de diálogo de
configuração "Parâmetros avançados TCP/IP).
2. Clique no botão Agregar.... na área "Direções IP" e inclua as direções IP adicionais.
Pode definir até 5 direções IP diferentes. Para esta operação, pode necessitar da ajuda de um administrador de redes.
Ativar SSL
Indique se o servidor web deve aceitar ou não as conexões seguras. Esta opção se descreve na seção .
Número de porta HTTPS
Permite define a porta TCP/IP utilizada pelo servidor Web para as conexões seguras HTTP via SSL (protocolo HTTPS). O
número de porta HTTPS vem estabelecido como 443 (valor padrão).
Você pode considerar a alteração do número de porta por duas razões principais:
Por razões de segurança: os ataques de hackers contra os servidores Web se concentram geralmente nas portas
padrões TCP (80 e 443).
Em Mac OS X, para permitir aos usuários “padrões” iniciar o servidor Web em modo seguro. Sob Mac OS X, o uso de
portas TCP/IP reservado para publicações Web (0 a 1023) requerem privilégios de acesso específicos: só o usuário
root pode iniciar uma aplicação utilizando estas portas. Para que usuários padrões possam iniciar o servidor Web,
uma solução é modificar o número de porta TCP/IP (ver a seção Configuração web server e gestão de conexão).
É possível passar qualquer valor válido (para evitar restrições de aceso em Mac OS X, deve passar um valor superior a
1023). Para conhecer os números de porta padrões TCP, por favor, consulte o parágrafo "Número da Porta TCP"
Allow database access through 4DSYNC URLs
Esta opção da página "Web/Configuração" das Propriedades da base permite controlar o suporte de petições que contém
os URLs /4DSYNC. Estes URLs se utilizam para a sincronização de dados através de HTTP (para obter mais informação
sobre este mecanismo, consulte o parágrafo URL 4DSYNC/).
Esta opção habilita ou desabilita o processamento específico das petições que contem /4DSYNC:
Quando não está selecionada, as petições /4DSYNC são consideradas como petições padrão e não permitem o
processamento específico (o uso de uma petição de sincronização provoca o envio da resposta tipo "404 - recurso
não disponível").
Quando se ativa, o mecanismo de sincronização está ativado; as petições /4DSYNC se consideram como petições
especiais e são processadas pelo servidor HTTP de 4D.
Por padrão:
esta opção não está selecionada no banco de dados criadas com 4D a partir da versão 13.
esta opção não está selecionada no banco de dados convertidas de uma versão anterior a 4D v13, razões de
compatibilidade. Lhe recomendamos que a desative se sua aplicação não utiliza a função de replicação HTTP.
O alcance desta opção é local à aplicação e o servidor web deve ser reiniciado para ter ela em conta.
Rotas
Raiz HTML padrão
Permite definir a localização padrão dos arquivos do website e indica o nível hierárquico no disco sobre o qual não se
poderá acessar os arquivos. Esta opção está descrita na seção Conexões de Segurança.
Página de início padrão
Esta opção permite definir a página de início padrão para todos os navegadores que se conectem ao banco. Esta página pode ser estática ou
semi-dinâmica. Automaticamente, quando o servidor web é lançado pela primeira vez, 4D cria uma página de início chamada “index.html” e a
coloca na pasta raiz HTML. Se não modifica esta configuração, todo navegador que se conecte ao servidor web obterá a seguinte página:
- 70 -
Para modificar a página web padrão, pode substituí-la simplesmente pela sua própria página “index.html” na pasta raiz do
banco ou introduzir a rota de acesso relativa da página que deseja definir a área “Página de início padrão”.
A rota de acesso deve ser estabelecida com relação à pasta raiz HTML como padrão.
Para assegurar a compatibilidade multi-plataforma de seus bancos, o servidor web 4D utiliza, para descrever as rotas de
acesso, convenções de escritura particulares. As regras de sintaxe são as seguintes:
As pastas se separam por uma barra oblíqua (“/”)
A rota de acesso não deve terminar com uma barra oblíqua (“/”)
Para “subir” um nível na hierarquia da pasta, introduza “..” (Dois pontos) antes do nome da pasta
A rota de acesso não deve começar com uma barra oblíqua (“/”)
Por exemplo, se deseja que a página de início por padrão seja a página “MinhaCasa.htm”, localizada na pasta “Web”
(localizada na pasta raiz HTML do banco), introduza “Web/MinhaCasa.htm”.
Nota: também pode definir uma página de início padrão para cada processo web utilizando a rotina WEB SET HOME
PAGE.
Se não especifica uma página de início padrão, se chama ao Método de banco de dados On Web Connection. Pode
decidir se quer processar a requisição por programação.
- 71 -
Página Web/Opções (I)
Cachê de Páginas estáticas
O servidor web 4D dispõe de uma cachê que permite carregar na memória as páginas estáticas, as imagens GIF, as
imagens JPEG (<100 kb) e as folhas de estilos (arquivos .css), a medida em que são solicitadas.
A utilização de um cachê permite aumentar de maneira significativa o rendimento do servidor web ao enviar páginas
estáticas.
O cachê é comum para todos os processos web. Pode definir o tamanho do cachê nas Preferências. Por padrão (a partir de
4D v14 R5), o cachê das páginas estáticas não está ativo para as novas bases de dados. Para desativar, simplesmente
selecione a opção Usar o cachê Web de 4D.
Pode modificar o tamanho do cachê na área Tamanho cachê de páginas. O valor a definir depende do número e tamanho
das páginas estáticas de seu website, como também dos recursos de que dispõe a máquina local.
Nota: durante a utilização de seu banco web, pode controlar o desempenho do cachê utilizando a rotina WEB CACHE
STATISTICS. Se, por exemplo, notar que a taxa de utilização do cachê é próxima a 100%, pode considerar aumentar o
tamanho que tenha estabelecido.
As URLs /4DSTATS e /4DHTMLSTATS também permitem obter informação sobre o estado do cachê. Consulte a seção
Informação sobre o Website.
Uma vez ativado o cachê, o servidor web 4D procura a página solicitada por o navegador primeiro no cachê. Se encontrar a
página, a envia imediatamente. Caso contrário, 4D carrega a página do disco e a localiza no cachê.
Quando o cachê está cheio e é necessário espaço adicional, 4D “esvazia” as páginas menos utilizadas, por ordem de mais
velhas para mais recentes.
Esvaziar a cachê
Em qualquer momento, pode esvaziar a cachê das páginas e das imagens que contém (por exemplo, se modifica uma
página estática e deseja carregá-la na cachê).
Para fazer isso, deve clicar no botão Esvaziar cachê. A cachê se esvazia imediatamente.
Nota: também pode utilizar o URL especial /4DCACHECLEAR.
Processo Web
Conservação de processos inativos
Permite definir o tempo limite (timeout) antes de fechar os processos web inativos no servidor.
Número máximo de processos web concorrentes
Esta opção indica o limite estritamente superior do número de processos web de todo tipo (processos web padrão ou
pertencentes ao "grupo de processos") que podem ser abertos simultaneamente no servidor. Este parâmetro permite a
prevenção da saturação do servidor 4D como resultado de um número massivo de requisições.
Como padrão, este valor é estabelecido como 32 000 (ou, em outras palavras, pode criar simultaneamente até 31 999
processos web). Pode definir o número entre 10 e 32 000.
Quando se alcança o número máximo de processos web concorrentes (menos um), 4D não cria mais novos processos e
envia a seguinte mensagem “Servidor não disponível” (estado HTTP 503 – Serviço não disponível) a cada nova requisição.
Nota: o número máximo de processos web pode também se definir com ajuda do comando WEB SET OPTION.
Como determinar o valor correto?
Em teoria, o número máximo de processos web é o resultado da divisão Memória disponível/Tamanho da pilha de um
processo web. Outra solução é visualizar a informação dos processos web mostrada no Explorador de execução: se indica
o número atual de processos web e o número máximo alcançado desde o início do servidor web.
Automatic Session Management
Ativa ou desativa o mecanismo interno para o controle automático de sessões de usuário por o servidor HTTP de 4D. Este
mecanismo se descreve na sessão Web Sessions Management.
Por padrão, este mecanismo se ativa nas bases de dados criadas a partir de 4D v13. No entanto, por razões de
compatibilidade, está desabilitado em bases de dados convertidas a partir de versões anteriores de 4D. Você deve o
habilitar explicitamente para ser beneficiado desta funcionalidade.
Quando esta opção está selecionada, a opção "Reutilização dos contextos temporais" se seleciona automaticamente (e
- 72 -
bloqueada).
Reutilização de contextos temporários (4D em modo remoto)
Permite otimizar o funcionamento do servidor web de 4D em modo remoto reutilizando processos web criados para o
processamento de requisições web anteriores.
Na realidade, o servidor web de um 4D Client necessita um processo web específico para a administração de cada
requisição web; quando é necessário, este processo se conecta à máquina 4D Server para acessar aos dados e ao motor
do banco de dados. Logo gera um contexto temporal utilizando suas próprias variáveis, seleções, etc. Uma vez processada
a requisição, o processo se aborta.
Quando a opção Reutilização dos contextos temporais está selecionada, 4D mantém os processos web específicos
criados em 4D Client e os reutiliza para as requisições posteriores. Ao eliminar a etapa de criação do processo, melhora o
rendimento do servidor web.
Por outro lado, deve assegurar-se neste caso de inicializar sistematicamente as variáveis utilizadas em métodos 4D para
evitar obter resultados incorretos. Igualmente, é necessário apagar as seleções ou registros atuais definidos durante a
requisição anterior.
Senhas Web
Modo BASIC e modo DIGEST
Pode definir nas preferências do banco, o sistema de controle de acesso que deseja aplicar a seu servidor web. São
oferecidos dois modos de autenticação: Modo BASIC e modo DIGEST.
O modo autenticação se refere à maneira como se coleta e processa a informação relativa ao nome de usuário e senha.
Em modo BASIC, o nome e a senha introduzidas pelo usuário são enviadas sem encriptar nas requisições HTTP. Este
princípio não assegura uma segurança total ao sistema já que a informação pode ser interceptada e utilizada por
terceiros.
O modo DIGEST oferece um nível maior de segurança já que a informação de autenticação é processada por um
processo unidirecional chamado dispersão (hashing) que faz com que seu conteúdo seja impossível de decifrar.
Para o usuário, o uso de um modo de autenticação ou outro é transparente.
Notas:
Por razões de compatibilidade, o modo de autenticação BASIC é utilizado como o padrão automático das bases 4D
convertidas a versão 11 (se a opção “Utilizar senhas” foi selecionada na versão anterior). Deve ativar explicitamente o
modo Digest.
A autenticação Digest é uma função de HTTP1.1 e não é suportada por todos os navegadores. Por exemplo, somente
as versões 5.0 e superiores de Microsoft Internet Explorer aceitam este modo. Se um navegador que não suporta esta
funcionalidade envia uma requisição a um servidor web, quando se ativa a autenticação Digest, o servidor negará a
requisição e devolverá uma mensagem de erro ao navegador.
A escolha do modo de autenticação se realiza na página Web/Opções (I) da caixa de diálogo de Propriedades do banco:
- 73 -
Na área "Senhas web", há três opções disponíveis:
Sem senhas: nenhuma autenticação é necessária para a conexão ao servidor web. Neste caso:
- Se existe On Web Authentication database method se executa e além de $1 e $2, somente as direções IP do
navegador e do servidor ($3 e $4) são informadas, o nome de usuário e a senha ($5 y $6) estão vazios. Neste caso, pode
filtrar as conexões em função da direção IP do navegador e/ou da direção IP pedida do servidor.
- Se o On Web Authentication database method não existe, as conexões são aceitas automaticamente.
Senhas com protocolo BASIC: autenticação padrão em modo BASIC. Quando um usuário se conecta ao servidor,
aparece uma caixa de diálogo em seu navegador permitindo que introduza seu nome e sua senha. Estes dois valores
são enviados ao On Web Authentication database method junto com os outros parâmetros da conexão (direção e
porta IP, URL...) de maneira que você os possa processar.
Este modo oferece acesso à opção Incluir senhas 4D que permite utilizar o sistema 4D de senhas do banco
(definido em 4D), seja em substituição ou de forma conjunta com seu próprio sistema de senhas,
Senhas com protocolo DIGEST: autenticação no modo DIGEST. Como no modo BASIC, os usuários devem
introduzir seu nome e senha quando se conectam. Estes dois valores são enviados criptografados ao On Web
Authentication database method com os outros parâmetros da conexão. Deve autenticar um usuário utilizando o
comando Validate Digest Web Password .
Notas:
Deve reiniciar o servidor web para que as modificações efetuadas a estes parâmetros sejan levadas em conta
Com o servidor web de 4D Client, recorde que todos os websites publicados pelas máquinas clientes 4D compartirão
a mesma tabela de usuários. A validação dos usuários/senhas é levada a cabo pela aplicação 4D Server.
BASIC Mode: Combinação de senhas e On Web Authentication Database Method
Quando se utiliza o modo BASIC, o sistema de filtro das conexões ao servidor web de 4D depende da combinação de dois
parâmetros:
As opções de senhas web na caixa de diálogo de Propriedades do banco,
A existência do On Web Authentication Database Method.
- 74 -
Estas são as diferentes possibilidades de controle das conexões:
A opção “Senhas com protocolo BASIC” está selecionada e a opção “Incluir senhas 4D” não está selecionada.
Se existir o On Web Authentication Database Method, ele é executado e todos os seus parâmetros são dados.
Pode filtrar mais precisamente as conexões de acordo ao nome de usuário, senha, e/ou às direções IP do navegador
e do servidor web.
Se o On Web Authentication Database Method não existe, a conexão é negada automaticamente e é enviada uma
mensagem ao navegador indicando que o método de autenticação não existe.
Nota: se o nome de usuário enviado é uma string vazía e se o On Web Authentication Database Method não existe, é
enviada ao navegador uma caixa de diálogo de pedido de senha.
As opções “Senhas com protocolo BASIC” e “Incluir senhas 4D” estão selecionadas.
Se o nome de usuário enviado pelo navegador existe na tabela de usuários 4D e a senha é correta, a conexão é
aceita. Se a senha é incorreta, a conexão é negada.
Se o nome de usuário enviado pelo navegador não existe em 4D, dois resultados são possíveis:
- Se existir o On Web Authentication Database Method, se retornam os parâmetros $1, $2, $3, $4, $5, e $6. Portanto
pode filtrar as conexões de acordo com o nome de usuário, senha, e/ou as direções IP do navegador e do servidor web.
- Se o On Web Authentication Database Method não existe, a conexão é negada.
Modo DIGEST
Diferentemente do modo BASIC, o modo DIGEST não é compatível com as senhas 4D padrão: não é possível utilizar as
senhas 4D como identificadores Web. A opção “Incluir senhas 4D” está desativada quando se seleciona este modo. Os
identificadores dos usuários Web devem ser administrados de maneira personalizada (por exemplo, através de uma tabela).
Quando o modo DIGEST está ativo, o parâmetro $6 (senha) sempre é devolvido vazio no . Na realidade, quando se utiliza
este modo, esta informação não passa pela rede como texto não criptografado. Portanto é imperativo neste caso avaliar a
requisição de conexão com a ajuda do comando Validate Digest Web Password.
O funcionamento do sistema de acesso ao servidor Web 4D é resumido no seguinte diagrama:
- 75 -
Usuário Web genérico
Pode designar um usuário, previamente definido na tabela de senhas de 4D, como “Usuário Web Genérico.” Neste caso,
cada navegador que se conecta ao banco pode utilizar as autorizações de acesso e as restrições associadas com este
usuário. Desta maneira pode controlar facilmente o acesso dos navegadores às diferentes partes do banco.
Nota: não se deve confundir esta opção, que permite restringir os acessos dos navegadores às diferentes partes da
aplicação (métodos, formulários, etc.), com o sistema de controle de conexões ao servidor web, administrado pelo sistema
de senhas e On Web Authentication Database Method
Para definir um Usuário web genérico:
1. No modo Desenho, criar ao menos um usuário com o editor de usuários da caixa de ferramentas.
Se deseja pode associar uma senha com o usuário.
2. Nos diferentes editores de 4D, autorizar ou restringir o acesso a este usuário.
- 76 -
3. Na caixa de diálogo de Propriedades, escolher o tema Web, página Opções (I).
Na área “Senhas Web” contém a lista pop-up Usuário web genérico. Como padrão, o Usuário web genérico é o
Designer e os navegadores têm acesso completo a todas as partes do banco.
4. Escolher o usuário na lista pop-up e validar a caixa de diálogo.
Todos os navegadores web autorizados a conectar-se ao banco se beneficiarão das autorizações de acesso associadas
ao Usuário web genérico (exceto quando o modo BASIC e a opção “Incluir senhas 4D” estão selecionadas e o usuário que
se conecta não existe na tabela de senhas 4D, ver a continuação).
Interação com o protocolo BASIC
A opção "Senhas com protocolo BASIC" não influi em como funciona o Usuário Web genérico. Sem importar o estado desta
opção, os privilégios e as restrições de acesso associadas ao “Usuário Web genérico” se aplicarão a todos os
navegadores Web que estejam autorizados a se conectar ao banco.
Entretanto, quando a opção "Incluir senhas 4D" estiver selecionada podem apresentar-se dois possíveis resultados:
o nome e a senha do usuário não existem na tabela de senhas de 4D. Neste caso, se a conexão foi aceita pelo On
Web Authentication Database Method, os direitos de acesso do usuário Web genérico serão aplicados ao
navegador.
Se o nome de usuário e senha existem na tabela de senhas de 4D, o parâmetro “Usuário Web genérico” se ignora. O
usuário se conecta com seus próprios direitos de acesso.
- 77 -
Página Web/Opções (II)
Conversão de texto
Enviar diretamente os caracteres estendidos
Por configuração padrão, o servidor web 4D converte os caracteres estendidos presentes nas páginas web (dinâmicas e
estáticas) aos padrões HTML antes de enviá-las. São interpretados pelos navegadores.
Pode configurar o servidor web de maneira que os caracteres estendidos sejam enviados “do jeito que estão”, sem os
converter a entidades HTML. Esta opção permite ganhar uma velocidade importante nos sistemas operativos estrangeiros
(especialmente no sistema japonês).
Para fazer isto, selecione a opção Enviar diretamente os caracteres estendidos.
Conjunto padrão
A lista pop-up Conjunto padrão permite definir o conjunto de caracteres padrão utilizado pelo servidor web 4D. Como
padrão, o conjunto de caracteres é UTF-8.
Conexões Persistentes
O servidor web de 4D pode utilizar conexões persistentes. A opção de conexões persistentes mantém aberta só uma
conexão TCP para o conjunto de modificações entre um navegador web e o servidor para economizar os recursos e otimizar
as transferências.
A opção Usar conexões persistentes ativa ou desativa as conexões TCP persistentes para o servidor web. Esta opção
está selecionada como padrão. Na maioria dos casos, é recomendável conservar esta opção selecionada já que acelera
aos intercâmbios. Se o navegador web não suporta conexões persistentes, o servidor web 4D automaticamente passa a
HTTP/1.0.
A função conexões persistentes do servidor web de 4D se refere a todas as conexões TCP/IP (HTTP, HTTPS). Note
entretanto que as conexões persistentes nem sempre se utilizam para todos os processos web 4D. Em certos casos,
podem ser invocadas outras funções de otimização do servidor web. As conexões persistentes são úteis principalmente
durante o envio de páginas estáticas.
Duas opções permitem definir o mecanismo de conexões persistentes:
• Número de requisições por conexão: permite definir o número máximo de requisições e respostas que podem viajar
numa mesma conexão persistente. Limitar o número de requisições por conexão permite evitar os riscos de saturação do
servidor através do envio massivo de requisições (técnica utilizada pelos piratas).
O valor padrão (100) pode ser aumentado ou diminuído dependendo dos recursos da máquina que hospeda o servidor web
4D.
• Tempo limite (segundos): este valor define o tempo limite de espera (em segundos) durante o qual o servidor web
mantém aberta uma conexão TCP sem receber requisições por parte do navegador web. Uma vez terminado este período,
o servidor termina a conexão.
Se o navegador web enviar uma requisição depois de terminada a conexão, uma nova conexão TCP é criada
automaticamente. Este funcionamento é transparente para o usuário.
- 78 -
Página Histórico (formato)
Arquivo de histórico de conexões
4D permite obter um histórico de requisições.
Este arquivo se chama “logweb.txt” e se localiza automaticamente:
com 4D em modo local e 4D Server, na pasta Logs localizada ao lado do archivo de estrutura do banco.
com 4D em modo remoto, na subpasta Logs da pasta do banco do cliente 4D (pasta cache).
Ativação e Formato
A ativação e a configuração do conteúdo do arquivo de histórico se realizam nas Propriedades do banco, página
Web/Histórico (formato):
Nota: a ativação e desativação do arquivo de histórico das requisições pode igualmente ser realizado por programação
utilizando o comando SET DATABASE PARAMETER (4D v12) ou WEB SET OPTION (4D v13 e posteriores).
O menu de formato do histórico oferece as seguintes opções:
Sem histórico: quando esta opção estiver selecionada, 4D não gerará um arquivo de histórico das requisições.
CLF (Common Log Format): quando se seleciona esta opção, o histórico de requisições é gerado no formato CLF.
Com o formato CLF, cada linha do arquivo representa uma requisição, por exemplo:
host rfc931 user [DD/MMM/YYYY:HH:MM:SS] "request" state length
Cada campo está separado por um espaço e cada linha termina na sequência CR/LF (caractere 13, caractere 10).
host: direção IP do cliente (exemplo. 192.100.100.10)
- 79 -
rfc931: informação não gerada por 4D, é sempre um - (um sinal de menos)
usuário: nome do usuário tal qual é autenticado, ou do contrário - (sinal de menos). Se o nome de usuário contém
espaços, serão substituídos por _ (um traço inferior ou grifo)
DD: dia, MMM: abreviação de 3 letras do nome do mês (Jan, Fev,...), YYYY: ano, HH: hora, MM: minutos, SS: segundos
A data e a hora são locais ao servidor.
request: requisição enviada pelo cliente (ex. GET /index.htm HTTP/1.0)
state: resposta dada pelo servidor.
length: tamanho dos dados devolvidos (exceto o cabeçalho HTTP) ou 0.
Nota: por razões de rendimento, as operações são guardadas no buffer de memória em pacotes de 1Kb antes de serem
escritas no disco. As operações também estão escritas no disco se nenhuma requisição foi enviada por 5 segundos.
Os possíveis valores de estado são os seguintes:
200: OK
204: Sem conteúdo
302: Redireção
304: Não modificado
400: Autenticação incorreta
401: Autenticação necessária
404: Não encontrado
500: Erro interno
O formato CLF não pode ser personalizado.
DLF (Combined Log Format): quando se seleciona esta opção, o histórico de requisições é gerado no formato DLF.
O formato DLF é similar ao formato CLF e utiliza exatamente a mesma estrutura. Simplesmente contém dois campos
HTTP adicionais ao final de cada requisição: Referer e User-agent.
- Referer: contém a URL da página que aponta ao documento solicitado.
- User-agent: contém o nome e a versão do navegador ou do pacote cliente na origem da petição.
O formato DLF não pode ser personalizado.
ELF (Extended Log Format): quando esta opção estiver selecionada, o histórico de requisições é gerado no formato
ELF. O formato ELF está amplamente expandido no mundo dos navegadores HTTP. Pode ser utilizado para criar
históricos sofisticados, que respondam a necessidades específicas. Por esta razão, o formato ELF é personalizável: é
possível escolher os campos a gravar assim como a ordem de inserção no arquivo.
WLF (WebStar Log Format): quando se seleciona esta opção, o histórico de requisições é gerado no formato WLF.
O formato WLF foi desenvolvido especificamente para o servidor 4D WebSTAR. É similar ao formato ELF, com
apenas uns poucos campos adicionais. Do mesmo jeito que o formato ELF, é personalizável.
Configurar os campos
Quando escolher o formato ELF (Extended Log Format) ou WLF (WebStar Log Format), a área “Formato personalizado do
histórico Web” mostra os campos disponíveis para o formato. Deve selecionar cada campo a ser incluído no histórico. Para
isso, utilize os botões de flecha ou simplesmente arraste e solte os campos que queira na área “Campos selecionados”.
Nota: não é possível selecionar o mesmo campo duas vezes.
A seguinte tabela lista os campos disponíveis para cada formato (em ordem alfabética) e descreve seus conteúdos:
- 80 -
Campo
BYTES_RECEIVED
BYTES_SENT
C_DNS
C_IP
CONNECTION_ID
CS(COOKIE)
CS(HOST)
CS(REFERER)
CS(USER_AGENT)
CS_SIP
CS_URI
CS_URI_QUERY
CS_URI_STEM
DATE
METHOD
PATH_ARGS
STATUS
TIME
TRANSFER_TIME
USER
URL
ELF WLF Valor
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
Nota: datas e horas estão em GMT.
Número de bytes recebidos pelo servidor
Número de bytes enviados pelo servidor ao cliente
Direção IP do DNS (ELF: campo idêntico ao campo C_IP)
Direção IP do cliente (por exemplo 192.100.100.10)
Número único da conexão
Informação sobre os cookies contidos na requisição HTTP
Campo Host da requisição HTTP
URL da página que dirige ao documento solicitado
Informação sobre o software e o sistema operativo do cliente
Direção IP do servidor
URI na qual a requisição se realiza
Parâmetros de pesquisa de requisições
Parte da requisição sem os parâmetros de pesquisa
DD: día, MMM: abreviação de 3 letras para o mês (Jan, Fev, etc.), YYYY: ano
Método HTTP utilizado para a requisição enviada ao servidor
Parâmetros da CGI: string localizada depois do carctere “$”
Resposta oferecida pelo servidor
HH: hora, MM: minutos, SS: segundos
Tempo solicitado pelo servidor para gerar a resposta
Nome do usuário se é autenticado; do contrário - (sinal de menos).
Se o nome de usuário contém espaços, são substituídos por _ (traço inferior ou
grifo)
URL solicitada pelo cliente
- 81 -
Página Web/Histórico (periodicidade)
Parâmetros de Backup
Os parâmetros de backup automático do histórico de requisições se definem na página Web/Histórico (periodicidade) das
Propriedades do banco:
Primeiro deve escolher a frequência (dias, semanas, etc.) ou com critério de tamanho limite do arquivo clicando no botão
correspondente. Logo deve especificar o momento preciso para realizar o backup se for necessário.
Sem backup: a função de backup programado está desativada.
Todos os X hora(s): esta opção se utiliza para programar backups a determinadas horas. Pode introduzir um valor
entre 1 e 24 .
- a partir de: utilizado para definir a hora em que começará o primeiro backup.
Todos os X dia(s) às X: esta opção se utiliza para programar backups diários. Introduza 1 se deseja realizar um
backup diariamente. Quando esta opção está selecionada, deve indicar a hora em que deve começar o backup.
Todos as X semana(s), dia às X: esta opção permite programar backups baseados em semanas. Introduza 1 se
deseja realizar um backup semanalmente. Quando esta opção está selecionada, deve indicar o (os) dia(s) da semana
e a hora em que o backup deve começar. Pode selecionar vários dias da semana se deseja. Por exemplo, pode
utilizar esta opção para definir dois backups por semana: um na quarta e o outro na sexta.
Todos os X mês(es), X dia às X: esta opção se utiliza para programar backups baseados em meses. Introduza 1 se
deseja realizar um backup mensal. Quando esta opção estiver selecionada, deve indicar o dia do mês e a hora em
que o backup deve começar.
- 82 -
Todos os X MB: esta opção se utiliza para programar backups baseados no tamanho do arquivo de histórico de
requisições atual. Um backup se dispara automaticamente quando o arquivo alcança o tamanho definido. Pode definir
um tamanho limite de 1, 10, 100 ou 1000 MB.
Nota: No caso dos backups programados, se o servidor web não foi lançado no momento do backup programado, no
seguinte início 4D considera o backup como tendo falhado e aplica os parâmetros apropriados, definidos nas Propriedades.
- 83 -
Página Web/Web Services
As opções desta página permitem ativar e configurar os serviços web do banco 4D, para sua publicação (servidor) e
inscrição (cliente).
Para mais informação sobre o suporte dos serviços web em 4D, consulte o capítulo Publicar ou utilizar serviços Web.
Servidor
Esta área mostra as opções relacionadas com o uso de 4D como um “servidor” de serviços web, publicando métodos
projeto em forma de serviços web.
Permitir requisições de serviços web: esta opção permite “inicializar” a publicação de serviços web. Se esta opção
não estiver selecionada, 4D recusa as petições SOAP e não gera um WSDL, mesmo que os métodos tenham o
atributo Oferecido como Serviço web. Quando esta opção estiver selecionada, 4D cria o arquivo WSDL.
Nome do serviço web: esta área permite modificar o “nome genérico” do serviço web. Este nome diferencia aos
serviços a nível do servidor SOAP (quando o servidor publica vários serviços web diferentes) assim como nos
diretórios de serviços web. Como padrão, 4D utiliza o nome A_WebService.
Espaço de nomes dos serviços web: esta área permite modificar o espaço de nomes dos serviços web publicados
por 4D.
Cada serviço web publicado na Internet deve ser único. A unicidade dos nomes dos serviços web se assegura com o
uso de espaços de nomes XML. Um espaço de nomes é uma string de caracteres arbitrária utilizada para identificar
de forma única um conjunto de etiquetas XML. Geralmente, o espaço de nomes começa pela URL da empresa
(http://minhaEmpresa.com/meuEspacoDeNomes). Neste caso, não é indispensável ter algo em particular na URL
definida; o que realmente importa é que a string de caracteres utilizada seja única.Como padrão, 4D utiliza o espaço
de nomes: http://www.4d.com/namespace/default.
Nota: segundo a norma XML padrão para nomes de etiquetas, a string de caracteres utilizada não deve conter
espaços nem começar por um número. Além disso, para evitar todo risco de incompatibilidade se recomenda não
utilizar caracteres estendidos (por exemplo os caracteres acentuados).
Cliente
Esta área contém várias opções relacionadas com o uso de 4D como “cliente” de serviços web, inscrevendo-se a serviços
web publicados na rede.
Prefixo dos métodos criados pelo assistente: esta área permite modificar o prefixo adicionado automaticamente
por 4D ao nome dos métodos proxy gerados pelo assistente de serviços web. Os métodos de projeto proxy constituem
um link entre a aplicação 4D e o servidor de serviços web.
Como padrão, 4D utiliza o prefixo “proxy_”.
- 84 -
Página Web/REST
Esta página contém as opções que se utilizam para ativar e controlar os acessos 4D Mobile (via REST) para a base 4D.
Os acessos 4D Mobile permitem as aplicações Wakanda acessar diretamente aos dados de sua base. Para obter mais
informação consulte o manual 4D Mobile.
Ativar os serviços 4D Mobile
Por razões de segurança, por padrão, 4D não responde as petições 4D Mobile (via REST). Se deseja utilizar esta
funcionalidade, se deve selecionar a opção Ativar os serviços 4D Mobile para que as solicitações sejam processadas e o
conector 4D / Wakanda possa ser implementado.
Nota: os serviços 4D Mobile utilizam o servidor HTTP de 4D, pelo que necessita garantir de que o servidor Web de 4D ou
4D Server tenha sido iniciado.
A mensagem de advertência "Precaução, verifique os direitos de acesso" é mostrado quando se marca esta opção para
chamar sua atenção sobre o fato de que quando os serviços 4D Mobile se ativam, por padrão o acesso aos objetos da
base é livre, enquanto que os acessos 4D Mobile não tenham sido configurados.
Acesso Leitura/Escritura
Esta opção especifica o grupo de usuários 4D que está facultado para estabelecer a conexão ao servidor 4D desde a
aplicação Wakanda.
Por padrão, o menu mostra <Qualquer>, o que significa que os acessos 4D Mobile estão abertos a todos os usuários.
Uma vez que tenha especificado um grupo, só uma conta de usuário 4D que pertence a este grupo se pode utilizar para
acessar a 4D por meio de uma solicitação 4D Mobile, em particular, para abrir uma sessão no servidor 4D utilizando o
método mergeOutsideCatalog(). Se utilizar uma conta que não pertence a este grupo, 4D devolve um erro de autenticação
ao remetente da solicitação.
Tenha em conta que para que esta configuração tenha efeito:
o sistema de senhas de 4D deve ser ativada (uma senha que foi atribuída ao Designer, ver Ativar o sistema de
senhas),
o comando On 4D Mobile Authentication database method não deve ser definido. Se existe, 4D não leva em conta
a configuração de acesso definidos nas Propriedades da base.
- 85 -
Página SQL
Esta página permite configurar os parâmetros de publicação por padrão e os acessos do servidor SQL integrado de 4D,
como também as opções relacionadas com o funcionamento do motor SQL de 4D. Para mais informação sobre SQL em
4D, consulte Utilizar SQL em 4D no manual Reference SQL.
Preferências de publicação do servidor SQL
É possível configurar os parâmetros de publicação do servidor SQL integrado de 4D. Estes parâmetros se encontram na
página SQL das Propriedades do banco:
A opção Iniciar o servidor SQL ao iniciar permite iniciar o servidor SQL ao início da aplicação.
Porta TCP: como padrão, o servidor SQL de 4D responde às requisições na porta TCP 19812. Se esta porta já está
sendo utilizada por outro serviço, ou se seus parâmetros de conexão requerem outra configuração, pode modificar a
porta TCP utilizada pelo servidor SQL de 4D.
Nota: se digitar 0, 4D utilizará o número de porta TCP como padrão, ou seja, 19812.
Endereço IP: permite definir o endereço IP da máquina na qual o servidor SQL deve processar as consultas SQL.
Como padrão, o servidor responderá a todos os endereços IP (opção Todos).
A lista pop-up "Endereço IP" contém automaticamente todos os endereços IP presentes na máquina. Quando é
selecionada uma direção em particular, o servidor somente responderá às consultas enviadas a este endereço.
Esta funcionalidade está dirigida às aplicações 4D hospedadas em máquinas com várias direções TCP/IP.
Nota: do lado do cliente, a direção IP e a porta TCP do servidor SQL para que a aplicação se conecte deven estar
corretamente configurados na definição da fonte de dados ODBC.
Ativar SSL: esta opção indica se o servidor SQL deve ativar o protocolo SSL para o processamento das conexões
SQL. Note que quando esse protocolo está ativado, você deve adicionar a palavra chave ":ssl" ao final do endereço IP
do servidor SQL quando você abre a conexão usando o comando SQL LOGIN
Por padrão, o servidor SQL usa arquivos internos para a chave SSL e certificado. Você pode, entretanto, usar
elementos personalizados: para fazer isso, apenas copie seus arquivos key.pem e cert.pem de 4D na seguinte
localização: MeuBanco/Preferencias/SQL (onde "MeuBanco" representa a pasta/pacote do banco).
Autorizar as requisições Flash Player: esta opção permite ativar o mecanismo de suporte às requisições Flash
Player pelo servidor SQL de 4D. Este mecanismo é baseado na presença de um arquivo, chamado "socketpolicy.xml,"
na pasta preferências do banco (Preferencias/SQL/Flash/). Este arquivo é pedido pelo Flash Player para permitir
conexões entre domínios ou conexões por aplicações sockets Flex (Web 2.0).
Na versão anterior de 4D, este arquivo tinha que se agregar manualmente. A partir de agora, a ativação se realiza
utilizando a opção Autorizar as requisições Flash Player: ao ativar esta opção, as requisições Flash Player são
aceitas e um arquivo "socketpolicy.xml" genérico é criado para o banco se é necessário.
Nota: é possível definir a codificação utilizada pelo servidor SQL para o processamento de requisições externas
utilizando o comando 4D SQL SET OPTION.
Controle do acesso SQL para o esquema por padrão
Por razões de segurança, é possível controlar as ações que as consultas externas enviadas ao servidor SQL podem realizar
no banco de dados 4D.
Este controle se realiza em dois níveis:
Ao nível do tipo de ação autorizada;
Ao nível do usuário que faz a consulta.
Estes ajustes podem ser feitos na página SQL das Propriedades do banco:
Nota: Pode utilizar o Método de base On SQL Authentication para controlar de forma personalizada as petições externas
ao motor SQL de 4D.
Os parâmetros definidos nesta caixa de diálogo são aplicados ao esquema (Schema) como padrão. O controle dos
acessos externos ao banco se baseiam no conceito de esquemas SQL (ver a seção Princípios para Integração 4D e
motor SQL de 4D). Se não criar esquemas personalizados, o esquema padrão inclui todas as tabelas do banco. Se criar
outros esquemas com os direitos de acesso específicos e os associa com as tabelas, o esquema por padrão somente
incluirá as tabelas que não estão incluídas nos esquemas personalizados.
Pode configurar três tipos distintos de acesso ao esquema por padrão através do servidor SQL:
"Somente leitura (dados)": acesso ilimitado na leitura a todos os dados das tabelas do banco mas não está
- 86 -
permitido adicionar, modificar ou eliminar registros, nem modificar a estrutura do banco.
“Leitura/escrita (dados)": acesso em leitura e escrita (adicionar, modificar e apagar) a todos os dados das tabelas
de banco, mas não é possível modificar a estrutura do banco.
"Completo (dados e estrutura)": acesso em leitura e escrita (adicionar, modificar e apagar) a todos os dados das
tabelas do banco, assim como à modificação da estrutura do banco (tabelas, campos, relações, etc.).
Pode designar um conjunto de usuários para cada tipo de acesso. Há três opções disponíveis para este propósito:
<Ninguém>: se selecionar esta opção, o tipo de acesso será negado para todas as consultas, independentemente de
sua origem. Este parâmetro pode ser utilizado mesmo quando o sistema de gestão de acesso por senhas de 4D não
estiver ativo.
<Todos>: se selecionar esta opção, o tipo de acesso se aceitará para todas as consultas (sem limites).
Grupo de usuários: esta opção permite criar um grupo de usuários autorizados a realizar o tipo de acesso atribuído.
Esta opção requer que a gestão de senhas de 4D esteja ativada. O usuário que realiza as consultas dá seu nome e
senha durante a conexão ao servidor SQL.
ADVERTÊNCIA: cada tipo de acesso está definido de forma independente dos outros. Mais especificamente, se só atribui
o tipo de acesso Só leitura a um grupo este não terá nenhum efeito já que este grupo, assim como também todos os outros
vão continuar se beneficiando do acesso Leitura/escritura (atribuído a <Todo o mundo> de forma pré determinada). Com o
propósito de definir um acesso Só leitura, também é necessário o acesso Leitura/escritura.
ADVERTÊNCIA: este mecanismo se baseia nas senhas de 4D. Para que o controle de acesso ao servidor SQL tenha
efeito, o sistema de senhas de 4D deve estar ativo (uma senha deve ser atribuída ao Designer).
Nota: uma opção de segurança adicional pode ser estabelecida ao nível de cada método de projeto 4D. Para obter mais
informação, consulte o parágrafo "Opção Disponível através SQL" da seção .
Opções do motor SQL
Transações Auto-commit: esta opção permite ativar o mecanismo de auto-commit no motor SQL. O propósito do
modo auto-commit é preservar a integridade referencial dos dados. Quando esta opção estiver selecionada, toda
pesquisa SELECT, INSERT, UPDATE e DELETE (SIUD) não realizada dentro de uma transação se inclui
automaticamente em uma operação ad hoc. Isso garante que as consultas se executarão em sua totalidade ou em
caso de erro, se cancelarão totalmente.
As consultas incluídas em uma transação (gestão personalizada da integridade referencial) não se verão afetadas por
esta opção.
Quando esta opção não estiver selecionada, não se geram transações automáticas (exceto para as consultas
SELECT... FOR UPDATE, consulte o comando SELECT). Como padrão, esta opção não está selecionada.
Também pode administrar esta opção por programação utilizando o comando SET DATABASE PARAMETER.
Nota: somente os bancos locais consultados pelo motor SQL de 4D se vêm afetados por este parâmetro. No caso
das conexões externas a outros bancos de dados SQL, o mecanismo de auto-commit é manejado pelos motores SQL
remotos.
Levar em consideração as maiúsculas e minúsculas nas comparações de cadeias de caracteres: esta opção
permite modificar a sensibilidade às maiúsculas e minúsculas dos caracteres nas consultas SQL. Está selecionada
como padrão, o que significa que o motor SQL diferencia entre maiúsculas e minúsculas quando se comparam strings
(ordenações e pesquisas). Por exemplo, "ABC" = "ABC", mas "ABC" # Abc "."
Em alguns casos, por exemplo para alinhar o funcionamento do motor SQL com o do motor 4D, é possível que deseje
que as comparações de cadeias de caracteres não sejam sensíveis às maiúsculas ("ABC" = "Abc"). Para isso,
apenas deve desmarcar esta opção.
Também pode administrar esta opção por programação utilizando o comando SET DATABASE PARAMETER.
- 87 -
Página PHP
4D permite executar diretamente scripts PHP configurando a página PHP das Propriedades do banco (ver Executar
scripts PHP em 4D no manual Linguagem 4D).
Intérprete
Direção IP e Número de porta
Como padrão, 4D oferece um intérprete PHP compilado em FastCGI. Por razões relacionadas com a arquitetura
interna, as petições de execução são enviadas ao intérprete PHP a uma direção HTTP específica. Como padrão, 4D
utiliza o endereço 127.0.0.1 e a porta 8002. Pode modificar este endereço e/ou porta se já estão sendo utilizados por
outro serviço ou se têm vários intérpretes na mesma máquina. Para fazer isto, modifique os parâmetros Endereço IP
e Número de porta.
Note que o endereço HTTP deve estar na mesma máquina que 4D.
Intérprete externo
Se utiliza um intérprete PHP externo, deve ser compilado em FastCGI e estar na mesma máquina que 4D (ver “Uso de
outro intérprete PHP ou de outro arquivo php.ini file” em Executar scripts PHP em 4D).
Selecione esta opção com o fim de que 4D não tente uma conexão com o intérprete interno quando se execute uma
requisição PHP. Note que esta configuração necessita a execução e controle do intérprete externo.
4D Server: Estesparâmetros são compartilhados entre 4D Server e as equipes remotos 4D, portanto não é possível
utilizar um intérprete externo na equipe servidor e simultaneamente utilizar o intérprete interno nas equipes clientes (e
vice-versa). Igualmente, se o servidor utilizar um intérprete externo no porto 9002, as equipes clientes devem também
utilizar um intérprete neste porto.
Opções
Estas opções estão relacionadas com a gestão automática do intérprete PHP de 4D e são desativadas quando a opção
Interpretador externo estiver selecionada.
Número de processos: o intérprete PHP de 4D dirige um conjunto de processos de execução de sistema chamados
"processos filhos". Por razões de otimização, como padrão pode lançar e manter até cinco processos filhos
simultaneamente. Pode modificar o número de processos filho de acordo a suas necessidades. Por exemplo, pode
aumentar este valor se chama intensivamente ao intérprete PHP. Para mais informação, consulte a seção “Arquitetura”
em Executar scripts PHP em 4D.
Nota: em Mac OS, todos os processos filhos compartem a mesma porta. Em Windows, cada processo filho utiliza um
número de porta específico. O primeiro número é definido pelo intérprete PHP; os outros processos filhos incrementam
este número. Por exemplo, se a porta como padrão é 8002 e lança 5 processos filhos, utilizarão as portas 8002 a
8006.
Reiniciar o interpretador depois de X requisições: permite definir o número máximo de requisições aceitas pelo
intérprete PHP de 4D. Quando este número é alcançado, se reinicia o intérprete. Para mais informação sobre este
parâmetro, consulte a documentação de FastCGI-PHP.
Nota: nesta caixa de diálogo, os parâmetros se definem por padrão para todas as máquinas conectadas e para todas
as sessões. Também pode modificar e ler esses parâmetros separadamente para cada máquina e cada sessão
através dos comandos SET DATABASE PARAMETER e Get database parameter. Os parâmetros modificados
pelo comando SET DATABASE PARAMETER têm prioridade para a sessão atual.
- 88 -
Página Segurança
Esta página contém as opções relacionadas com o acesso e proteção dos dados para seu banco.
Gestão de Acessos
Acesso Desenho: permite ao grupo de usuários especificado acessar o modo Desenho do banco.
Note que:
A definição de um grupo de acesso no ambiente Desenho também permite igualmente desativar a opção Criar
uma tabela da caixa de diálogo de importação de dados. Para mais informação sobre esta caixa de diálogo,
consulte Importar dados de arquivos.
O Designer e o Administrador sempre têm acesso ao ambiente Desenho, mesmo se não formam parte explícita
do grupo de acesso especificado.
Para mais informação sobre os controles de acesso em 4D, consulte o capítulo Usuários e grupos.
Filtragem de comandos e métodos de projeto no editor de fórmulas:
Por razões de segurança, 4D restringe por padrão o acesso aos comandos, funções e métodos do projeto no em
modo Aplicação: somente podem ser utilizadas algumas funções 4D e métodos de projeto que tenham sido
declaradas explicitamente utilizando o comando SET ALLOWED METHODS. Pode cancelar total ou parcialmente
este filtro utilizando as seguintes opções.
Autorizar para todos: O acesso aos comandos, funções e métodos de projeto está restringido para todos os
usuários em modo Aplicação, incluindo o Desenhador e o Administrador.
Desativado para o Designer e Administrador: esta opção restabelece ao Designer e ao Administrador
unicamente o acesso completo aos comandos 4D e aos métodos no editor de fórmulas. Permite estabelecer um
modo de acesso ilimitado a comandos e métodos ao mesmo tempo em que conserva o controle das operações
efetuadas. Durante a fase de desenvolvimento, este modo permite provar livremente todas as fórmulas, informes,
etc. Durante a operação, se pode utilizar para estabelecer soluções seguras que permitam o acesso a
comandos e métodos de maneira temporária. O princípio consiste em mudar o usuário (com o comando
CHANGE CURRENT USER) antes de chamar uma caixa de diálogo ou iniciar uma impressão que requeira
acesso total aos comandos, quando a operação específica tenha terminado se regressa ao usuário original.
Nota: se o acesso total foi ativado utilizando a opção anterior, esta opção não terá efeito.
Usuário padrão: quando um usuário padrão é definido, cada usuário que abra ou se conecte ao banco, terá os
mesmos privilégios e restrições de acesso que o usuário padrão. Um usuário padrão não necessita escrever seu
nome de usuário. Além disso, se não tiver uma senha associada ao usuário padrão, não aparece a caixa de diálogo
de senhas e o banco abre diretamente.
Esta opção simplifica o acesso ao banco ao mesmo tempo que mantém um sistema completo de controle de dados.
Se o usuário padrão tem uma senha de acesso padrão, quando o banco se abre, aparecerá uma caixa de
diálogo e os usuários deverão introduzir uma senha:
Se o usuário padrão não tem uma senha de acesso, a caixa de diálogo não aparecerá.
Nota: pode “forçar” a visualização da caixa de diálogo padrão de ingresso de senhas quando o modo “Usuário
padrão" estiver ativo, por exemplo para se conectar como Administrador ou Designer. Para isso, pressione a tecla
Maiúscula enquanto abre o banco ou se conecta a ele.
- 89 -
Mostrar a lista de usuários na janela de senhas: se está opção estiver selecionada, os usuários devem selecionar
seu nome numa lista de usuários e introduzir sua senha na caixa de diálogo de identificação do usuário. Se esta
opção não estiver selecionada, os usuários devem introduzir seu nome e senha. Para mais informação sobre as duas
versões da caixa de diálogo de identificação do usuário, consulte a seção “Visão geral do sistema de acesso” em
Visão geral do sistema de acesso.
Ordenar a lista de usuários em ordem alfabética (opção disponível unicamente se a opção anterior estiver
marcada): quando esta opção estiver selecionada, a lista de usuários na caixa de diálogo de Identificação de
usuário aparece em ordem alfabética.
Os usuários podem mudar sua senha: quando esta opção estiver selecionada, é mostrado um botão Mudar na
caixa de diálogo de identificação do usuário. Este botão permite ao usuário acessar a caixa de diálogo onde pode
modificar sua senha (para mais informação sobre esta caixa de diálogo, consulte o parágrafo “Modificação de senha
pelo usuário” em A manutenção do sistema). Se deseja, pode ocultar o botão Mudarde forma que os usuários não
possam modificar suas senhas. Para isso, simplesmente desmarque esta opção.
Opções
Autorizar as propriedades usuário em um arquivo externo: deve selecionar esta opção se deseja utilizar a
funcionalidade de externalização das propriedades usuário. Quando esta opção está selecionada, duas caixas de
diálogo estão disponíveis para definir as propriedades: Propriedades estrutura e Propriedades usuário. Para
maior informação, consulte a seção Using user settings.
Executar o método "On Host Database Event" dos componentes: o On Host Database Event database
method facilita as fases de inicialização e de cópia de segurança dos componentes 4D. Por razões de segurança,
deve autorizar expressamente a execução deste método em cada base local. Para isso, deve selecionar esta opção.
Por padrão, não está selecionada.
Quando se seleciona esta opção:
os componentes 4D se carregam,
cada On Host Database Event database method do componente (se existe) é chamado pela base local,
o código do método se executa.
Quando esta opção não está selecionada:
os componentes 4D se carregam, mas devem gerenciar eles mesmos suas fases de inicialização e de cópia de
segurança.
o desenvolvedor do componente deve publicar os métodos dos componentes que devem ser chamados pela
base local durante estas fases (início e desfecho).
o desenvolvedor da base local deve chamar aos métodos apropriados do componente no momento adequado
(deve ser coberto na documentação do componente).
- 90 -
Página Compatibilidade
A página Compatibilidade agrupa todos os parâmetros relacionados com a manutenção da compatibilidade com versões
anteriores de 4D. Lembre que o número de opções mostradas dependerá da versão de 4D com a qual se criou o banco de
dados originalmente: (2004.x, v11, v12), assim como das configurações modificadas do banco de dados.
Os campos não são editáveis nos diálogos: em versões anteriores de 4D, não era possível introduzir valores
utilizando campos em caixas de diálogo (mostradas, por exemplo, utilizando o comando DIALOG ). Esta limitação se
eliminou desde 4D 2004. Pode conservar o comportamento anterior, especialmente se seu banco de dados utiliza
campos em diálogos para mostrar dados. Por padrão, esta opção está selecionada para as versões antigas
convertidas a versão 2004 e não está selecionada para o bancos de dados criadas a partir da versão 2004.
Botões radio agrupados pelo nome: nas versões anteriores de 4D, o funcionamento coordenado de um grupo de
botões de opção (radio) era obtido dando uma primeira letra idêntica às variáveis associadas com os botões (por
exemplo, m_botao1, m_botao2, m_botao3, etc.). A partir de 4D 2004 se modificou da seguinte forma: para funcionar
de maneira coordenada, um conjunto de botões de radio simplesmente devem estar agrupados no editor de
formulários. Para mais informação, consulte Botões de opção e botões imagem de opção.
Este novo modo é válido para botões radio, botões radio 3D e botões radio imagem. Por razões de compatibilidade,
o modo anterior se conserva por padrão em bancos de dados convertidos. Entretanto, pode forçar o uso do novo
modo desmarcando esta opção. Esta opção somente aparece em bancos convertidos de versões anteriores. Está
selecionada como padrão. Os bancos de dados criados a partir da versão 2004 utilizam o novo modo.
Recarregar o formulário para cada registro durante PRINT SELECTION: em versões anteriores de 4D, o
formulário utilizado durante uma impressão utilizando o comando PRINT SELECTION se recarregava para cada
registro. Isto permitia reiniciar automaticamente todos os parâmetros dos objetos que o desenvolvedor pudesse ter
modificado com a linguagem no evento de formulário On printing detail.
Para melhorar o rendimento, este mecanismo foi eliminado a partir de 4D 2004. O desenvolvedor 4D agora deve
reiniciar ele mesmo os parâmetros que deseja no método de formulário, este funcionamento é idêntico ao dos
formulários listados com o evento On display detail. Mesmo assim, pode conservar o mecanismo anterior utilizando
esta opção. Os bancos de dados criados em versão 2004 utilizam o novo modo.
Usar comentários 4DVAR ao invés de colchetes: esta opção define a notação a ser utilizada para inserir
expressões 4D em páginas estáticas. Quando a opção está selecionada (valor padrão), a sintaxe a ser usada é a
notação HTML padrão (<!--4DVAR MYVAR-->).
Quando a opção não está selecionada, a sintaxe a usar é a notação com colchetes ([MYVAR]), solução proprietária
utilizada nas versões anteriores do servidor web de 4D.
Não utilizar o novo modo de referenciar os contextos: quando esta opção não estiver selecionada (padrão), o
servidor web 4D põe o número do contexto na URL do banco dos documentos HTML enviados.
Com o sistema anterior (opção selecionada), o servidor web 4D envia ao navegador o número do contexto por cada
elemento de uma página, fazendo com que os processos fossem menos rápidos. Mesmo assim esta opção pode ser
selecionada por razões de compatibilidade. Lembre que deve reiniciar o banco de dados depois de modificar esta
opção para que o novo funcionamento se aplique.
Apagar o “/” nas URLs desconhecidas: nas versões anteriores de 4D, as URLs desconhecidas (URLs que não
correspondem a páginas existentes nem a URLs especiais de 4D) eram devolvidas aos métodos base On Web
Authentication e On Web Connection ($1) e não começavam com o caractere “/”. Esta particularidade foi eliminada em
4D 2004. Entretanto, se você implementou algoritmos baseados nessa operação e deseja mantê-los, desmarque essa
opção.
Proibir arrastar e soltar dados não provenientes de 4D: a partir da v11, 4D permite arrastar e soltar seleções de
objetos e/ou arquivos externos a 4D, como por exemplo os arquivos imagem, no modo Aplicação.
Esta possibilidade deve estar suportada pelo código do banco. Nos bancos de dados convertidos de versões
anteriores de 4D, esta possibilidade pode trazer problemas de funcionamento se o código existente não estiver
adaptado devidamente.
Esta opção permite antecipar-se a estes possíveis problemas de funcionamento. Quando esta opção estiver
selecionada, se nega a soltar objetos externos em formulários 4D. Note que inserir objetos externos ainda é possível
nos objetos que têm a opção Soltar automático, nesse caso a aplicação pode interpretar automaticamente os dados
soltados (texto ou imagem). Para mais informação, consulte Arrastar e soltar.
Executar QUERY BY FORMULA no servidor e Executar ORDER BY FORMULA no servidor: a partir de 4D v11,
por razões de otimização, os comandos de pesquisas e de ordenação “por fórmula” se executam no servidor; somente
se devolve o resultado a máquina cliente. Isto aplica aos seguintes comandos: [#cmd id="48"/], QUERY SELECTION
BY FORMULA e ORDER BY FORMULA. Em caso de chamada direta de variáveis na fórmula, a pesquisa é
calculada com o valor da variável na máquina cliente. Por exemplo,
QUERY BY FORMULA([tabela];[tabela]campo=variável)
se executará no servidor mas com o conteúdo da variável do cliente. Por outro lado, este princípio não se aplica às
- 91 -
fórmulas que utilizam métodos que, por si mesmo, chamam variáveis: neste caso o valor das variáveis são avaliados
no servidor.
Nos bancos de dados convertidos, este funcionamento pode afetar os algoritmos existentes. Portanto, como padrão
neste contexto, estes comandos continuam sendo executados na máquina cliente. Se deseja aproveitar o novo
algoritmo v11 em um banco convertido, pode simplesmente selecionar estas opções.
Nota: esta opção pode ser definida utilizando o comando SET DATABASE PARAMETER.
QUERY BY FORMULA usa uniões SQL: a partir de 4D v11, os comandos QUERY BY FORMULA e QUERY
SELECTION BY FORMULA realizam uniões baseadas no modelo de SQL. Isto significa que não é necessário que
exista uma relação estrutural entre a tabela A e a tabela B para utilizar uma fórmula que contenha [Tabela_A
]campo_X=[Tabela_B]campo_Y.
Como este mecanismo pode gerar disfunções nas aplicações existentes, está desativado como padrão nos bancos
de dados convertidos. Se recomenda que seja ativado (depois de revisar o código do banco) selecionando esta
opção com o propósito de se beneficiar da otimização dos comandos de pesquisa por fórmula.
Notas:
Quando o modo "Uniões SQL" estiver ativo, os comandos QUERY BY FORMULA e QUERY SELECTION BY
FORMULA utilizam entretanto as relações automáticas definidas no editor de estrutura nos seguintes casos:
- Se a fórmula não pode ser dividida em elementos no formato {campo;comparador ;valor}
- Se são comparados dois campos da mesma tabela.
Esta opção também pode ser definida pelo processo utilizando o comando SET DATABASE PARAMETER.
Autorizar as transações aninhadas: ativa o suporte das transações multi-nível. A partir de v11, 4D aceita as
transações aninhadas em um número de níveis ilimitado. Como esta nova operação pode gerar problemas nos bancos
desenvolvidos com versões anteriores de 4D, está desativado por padrão nos bancos convertidos (as transações
permanecem limitadas a um só nível). Se deseja usar transações em vários níveis num banco de dados convertido,
deve selecionar essa opção.
Por padrão, esta opção não está selecionada. Se especifica para cada banco de dados.
Nota: esta opção não tem efeito nas transações realizadas no motor SQL de 4D. As transações SQL sempre são
multi-nível.
Modo Unicode: permite ativar ou desativar o modo Unicode para o banco atual. No modo Unicode, o motor do banco
de dados, a linguagem e os menus manejam nativamente as cadeias de caracteres (cadeias) em Unicode. Em modo
não Unicode (modo compatibilidade ASCII), se utiliza o conjunto de caracteres ASCII.
Esta opção permite preservar a compatibilidade dos bancos convertidos.
Está selecionada como padrão para os bancos criados com 4D v11 e superiores e não está selecionada nos bancos
convertidos.
Notas:
Esta opção é específica para cada banco. Portanto é possível coabitar um banco Unicode com os componentes
não Unicode (ou vice-versa) em modo interpretado.
Também é possível configurar o modo Unicode utilizando os comandos SET DATABASE PARAMETER.
As características específicas do suporte Unicode en 4D são detalhadas no manual Linguagem. Para mais
informação consulte Códigos ASCII.
Utilize os parâmetros do sistema em formatos numéricos: a partir de v11, 4D utiliza os parâmetros sistema
regionais para os formatos de visualização numéricos (ver “Formatos de campos numéricos” em Formatos de saída).
4D substitui automaticamente os caracteres “,” e “.” nos formatos de visualização numérica pelo separador de milhares
e o separador decimal definido no sistema operativo, respectivamente. O sinal de ponto e a vírgula são então
considerados como os caracteres de marcação de posição, seguindo o exemplo de 0 ou #. Nas versões anteriores de
4D, os formatos de visualização numéricos não consideram os parâmetros regionais do sistema. Por exemplo, o
formato “###,##0.00” é um formato válido para um sistema americano. Entretanto, quando se aplica a um valor
numérico mostrado em um sistema francês o suíço, o resultado é incorreto.
Nos bancos de dados convertidos, por compatibilidade, este novo mecanismo não está ativado. Para se beneficiar de
seu uso, deve selecionar esta opção.
Atribuição automática de variáveis: em versões anteriores de 4D, um mecanismo padrão do servidor web permite
tornar a copiar automaticamente nas variáveis processo 4D o valor das variáveis enviadas por meio de um formulário
HTTP ou um URL de tipo GET. Em modo interpretado, o valor de toda variável recebida se copia diretamente em uma
variável processo 4D com o mesmo nome, em modo compilado, as variáveis devem ter sido previamente declaradas
em um método projeto COMPILER_WEB.
A partir de 4D v13.4, este mecanismo é obsoleto e já não está disponível nas novas bases de dados. Por razões de
compatibilidade, se mantém nas bases convertidas, mas pode desativar ela desmarcando esta opção de
compatibilidade. Agora se recomenda utilizar os comandos dedicados WEB GET VARIABLES ou WEB GET BODY
PART.
Utilizar a capa de rede antiga (ignorada em OS X de 64 bits): a partir do lançamento de v14 R5, as aplicações 4D
contém uma nova capa de rede, chamada ServerNet, para gerenciar as comunicações entre 4D Server e as máquinas
4D remotas (clientes). A capa de rede antiga ficou obsoleta, mas se conserva para garantir a compatibilidade com as
bases de dados existentes. Mediante esta opção, pode ativar ou desativar a capa de rede antiga em qualquer
momento nas aplicações 4D Server convertidas em função de suas necessidades, por exemplo, ao migrar as
aplicações cliente (ver a seção Preferências de configuração). ServerNet se utiliza automaticamente para as novas
bases e se desativa por padrão nas bases convertidas (opção selecionada).
Tenha em conta que em caso de uma modificação, é necessário reiniciar a aplicação para que a mudança seja levada
em conta. Todas as aplicações cliente que se conectaram também devem se reiniciar para poder conectar com a
- 92 -
nova capa de rede (a versão de cliente mínima para usar a capa ServerNet é 4D v14 R4, consulte a seção
Preferências de configuração).
Notas:
Esta opção também pode ser administrada por programação utilizando o comando SET DATABASE
PARAMETER.
Tal como se especifica em seu título, esta opção é ignorada na versão de 64 bits de 4D Server para OS X; só
ServerNet pode ser utilizada nesta plataforma.
- 93 -
Explorador
Visão Geral e Funcionamento
Página Início
Página Tabelas
Página Formulários
Página Métodos
Página Comandos
Página Constantes
Página Plug-ins
Página Lixeira
Usar os comentários
- 94 -
Visão Geral e Funcionamento
O Explorador é uma janela do ambiente Desenho que centraliza os acesos às tabelas, formulários, métodos, comandos,
constantes e plug-ins e oferece informação sobre estes elementos. Pode mostrar o Explorador a qualquer momento
escolhendo uma das páginas no submenu Desenho > Explorador ou clicando no botão Explorador da barra de
ferramentas.
Os botões à esquerda do Explorador permitem aceder às diferentes páginas de objetos do ambiente Desenho. O
Explorador tem páginas independentes para as tabelas, formulários, métodos, comandos, constantes e plug-ins.
As páginas Início e Lixeira oferecem funções específicas adicionais.
Quando mostra uma página específica, os objetos correspondentes são listados no Explorador. Em cada página, os objetos
são mostrados em listas hierárquicas. Uma área de controle na parte inferior da lista tem botões para adicionar e apagar,
assim como também um menu de opções.
Renomear um objeto
Se deseja renomear uma pasta, uma tabela, um campo, um formulário ou um método, mantenha pressionada a tecla Alt ( em
Windows) ou a tecla Opção (em Mac OS) e clique no nome do objeto. Também pode clicar duas vezes no nome (espere um
momento entre os dois cliques, do contrario será um duplo clique). O texto fica editável.
Faça as mudanças e logo clique fora da ãrea de texto para guardá-las.
Nota: mudar o nome de um formulário invalida os métodos e os formulários que utilizam o nome anterior. Cada um desses
objetos devem ser atualizados para que funcionem corretamente.
O Explorador mostra os objetos em ordem alfabético. Se novo nome não corresponde a esta ordem, 4D realiza uma nova
ordenação e modifica a ordem quando você clicar fora da área de entrada.
4D Server: o nome do objeto é modificado no servidor ao se clicar fora da área de entrada do nome. Se vários usuários
modificam al tempo o nome de um objeto, o nome final será o dado por o último usuário que o modificou. Pode definir um
proprietário para um objeto de maneira que somente alguns usuários possam mudar seu nome. Para mais informação sobre
a definição de privilégios de acesso, consulte o capítulo Usuários e grupos.
Mostrar ou ocultar a vista prévia
- 95 -
Mostrar ou ocultar a vista prévia
Pode mostrar ou ocultar a área de vista prévia do Explorador clicando no ícone de expandir ou contrair a área de vista previa . A janela de
vista prévia permite visualizar as tabelas e campos, os formulários, os métodos, a documentação dos comandos, os valores de constantes,
assim como também a informação sobre os componentes e plug-ins instalados no banco. Também pode utilizar a área de vista prévia para
adicionar e ver comentários sobre certos objetos do banco.
Para ocultar a área de vista prévia, clique novamente no botão Expandir/Contrair.
Exibir comentários
4D permite associar comentários às pastas, tabelas, campos, formulários e métodos (banco, projeto, triggers e formulário)
de seu banco de dados. A visualização e modificação dos comentários é realizada utilizando o Explorador (a área de vista
prévia deve estar expandida).
Para mostrar e modificar os comentários associados a um objeto, selecione o objeto na lista do Explorador e clique no
botão Comentários localizado debaixo da área de vista prévia. A área de vista prévia é substituída pela área de
comentários:
A criação e uso dos comentários é descrita em detalhe na seção Usar os comentários.
Usar Arrastar e Soltar
Em muitos casos, pode utilizar arrastar e soltar para adicionar um objeto do banco de dados na janela de um editor. Por
exemplo, pode adicionar um campo em um formulário arrastando o nome do campo desde a página Tabelas do Explorador
ao editor de formulários. Quando trabalhe no editor de métodos, pode adicionar nomes de tabelas, campos, formulários,
métodos de projeto, constantes e comandos (incluindo sua sintaxe) em seu código.
As seções deste capítulo que descrevem as páginas do Explorador tem informação específica sobre as opções arrastar e
soltar de cada página. Cada página do Explorador é descrita nas seguintes seções.
Usar os menus contextuais e os menus de opções
Pode utilizar os menus contextuais e os menus de opções nas páginas Início, Formulários, Métodos e Lixeira do Explorador.
Estes menus dão acesso a funções adicionais, descritas nas seguintes seções deste capítulo.
- 96 -
- 97 -
Página Início
A página Início permite definir e utilizar as “pastas” de objetos do Explorador de 4D.
Do mesmo jeito que as pastas utilizadas em Windows e Mac OS, as pastas de 4D agrupam diferentes objetos em função de
critérios personalizados (particularmente por funcionalidade) e não apenas por tipo.
Por exemplo, pode agrupar em uma pasta chamada “E-mail” os objetos relativos ao envio de mensagens de correio
eletrônico em seu banco.
Os objetos de tipo Tabela, Formulário e Método projeto podem se localizar em pastas. Também é possível criar sub-pastas
em diferentes níveis.
Todos os objetos personalizados do banco (tabelas, formulários, métodos de projeto) sempre são mostrados na página
Início. Observe que os objetos continuam aparecendo nas outras páginas do Explorador.
Nesta página, pode adicionar pastas e sub-pastas, renomear, mover e reorganizar pastas e objetos. Também pode criar
diretamente tabelas, formulários e métodos de projeto. Como nas outras páginas do Explorador, pode abrir uma tabela, um
formulário ou um método de projeto em uma janela do editor correspondente com um duplo clique em seu nome, ou inserir o
nome utilizando arrastar e soltar. Por último, pode renomear ou apagar pastas e objetos. Também é possível atribuir uma
pasta a um objeto no momento de sua criação.
4D Server: todos as máquinas cliente conectadas a um mesmo banco compartem a mesma configuração de pastas.
Qualquer modificação realizada por um usuário desde uma máquina cliente (movimento, adição, etc.), automaticamente e
instantaneamente repercute em todos as máquinas clientes conectadas.
Desde esta página, também pode arrastar diferentes tipos de objetos (métodos, formulários, etc.) aos editores da base ou a
outras bases em modo Desenho. As opções de arrastar e soltar que estão disponíveis para cada tipo de objeto se
descrevem nas seções correspondentes deste tema. O arrastar e soltar entre bases se descrevem em [#title id="562"/].
Criar pastas e subpastas
As pastas são úteis para organizar seus bancos por funcionalidades ou por critérios personalizados (datas, linguagens,
etc.). Dessa maneira se facilita o acesso aos diferentes objetos a partir do Explorador. As pastas também são acessíveis
em forma de listas hierárquicas no editor de métodos de 4D. Isto facilita as chamadas aos objetos quando se escrevem os
métodos:
- 98 -
Também é possível utilizar as pastas para filtrar a visualização das tabelas no editor de estrutura (ver o parágrafo
Ressaltar/Atenuar tabelas por pasta).
Como padrão todos os objetos se localizam no primeiro nível. Pode adicionar pastas ou subpastas em qualquer momento
na página Início do Explorador. Para fazer isso, simplesmente utilize o comando Novo>Pasta do menu de opções da
página ou do menu contextual de área:
Também pode utilizar o menu que aparece quando clicar no ícone adicionar (+) localizado na parte inferior da área.
A pasta ou subpasta é criada imediatamente e seu nome por padrão é "Pasta_ + número da pasta". Pode modificar este
nome, entretanto, o nome da pasta deve ser único e não conter mais de 31 caracteres.
Para criar uma pasta, tenha certeza de que não existam elementos selecionados no momento da criação.
Para criar uma subpasta, selecione a pasta na qual criar a subpasta antes de completar a criação.
Após isso, pode facilmente transformar uma pasta em subpasta, e vice-versa, utilizando os comandos de movimento ou a
função arrastar e soltar com o mouse.
O comando Novo> da página Início permite criar não apenas as pastas, mas também tabelas, formulários e métodos de
projeto. Quando escolher um subcomando deste tipo, vá diretamente à caixa de diálogo de criação do objeto.
O menu contextual e o menu de opções da página Início oferecem funções adicionais em função do tipo de objeto
selecionado. As opções disponíveis por tipo de objeto são descritas nas seções correspondentes deste tema.
Apagar um objeto
O comando Borrar elimina a seleção. Se a seleção contém uma pasta ou subpasta, todos os elementos que contém são
eliminados.
Este comando pode ser utilizado com todos os tipos de elementos (pastas, sub-pastas, tabelas, formulários e métodos
projeto) e com seleções múltiplas. Os objetos eliminados desaparecem das listas e dos editores da aplicação.
Os elementos eliminados passam a Lixeira do Explorador. Para mais informação sobre o funcionamento da lixeira do
Explorador, consulte Página Lixeira.
Para apagar um ou mais objetos desde a página Início do Explorador, podem ser selecionados e depois escolher Enviar a
> Lixeira no menu contextual ou utilizando o menu de opções da página.
Enviar a
O comando Enviar a do menu contextual da página Início permite modificar o conteúdo de uma pasta sem ter que antes
expandir a pasta destino.
Para fazer isso, dê um clique direito no objeto, pasta ou seleção. Aparece o menu contextual. A opção Enviar a oferece
como destinos possíveis todas as pastas e subpastas existentes:
- 99 -
Simplesmente selecione a pasta onde deseja localizar sua seleção. Se selecionar Nível superior, a seleção se localizará
no primeiro nível da lista, fora de qualquer pasta (esta linha aparece inativa quando tentar mover um objeto que já esteja no
primeiro nível). Se escolher Lixeira, se elimina a seleção (ver a seção anterior).
Adicionar um objeto a pasta durante criação
Pode colocar um novo objeto diretamente numa nova pasta durante sua criação. O menu "Pasta", localizado nas caixas de
diálogo de criação de tabelas, formulários e métodos projeto, permite selecionar a pasta na qual criar o objeto. Como
padrão, os objetos são criados no primeiro nível (Nível superior) ou na última pasta selecionada no Explorador (se aplicável).
O menu de seleção está, por exemplo, presente na caixa de diálogo de criação de tabelas como se mostra na seguinte
imagem:
Depois de criar os objetos na página de Início do Explorador, você sempre pode mover os objetos para outra pasta.
Informação da Pasta
Quando selecionar uma pasta no Explorador, a área de vista prévia da janela mostra informação sobre a pasta:
Pasta: Nome da pasta: número de objetos presentes dentro da pasta
Tabela(s): número de tabelas na pasta
Formulário(s): número de formulários na pasta
Método(s) de projeto: número de métodos projeto na pasta
Pasta(s): número de pastas (subpastas) na pasta
Se um tipo de objeto não está na pasta, não aparece na área de vista prévia. Se a pasta está vazia, a área de vista prévia
mostra unicamente Pasta: Nome da pasta. Quando existem várias pastas e/ou objetos selecionados, a informação
mostrada é sobre o elemento atual, ou seja, o último elemento onde foi feito um clique.
- 100 -
Página Tabelas
A página Tabelas contém todas as tabelas e campos do banco. Pode ser utilizada para acessar as propriedades das
tabelas e campos. Ao expandir uma tabela aparece a lista de seus campos.
O tipo de campo é indicado por um ícone do lado esquerdo de seu nome. Duplo-clique no nome de um campo para mostrar
suas propriedades na janela Inspetor. Para mais informação consulte a seção Get database parameter.
Usar Arrastar e Soltar
Pode adicionar um campo a um formulário arrastando seu nome desde a página Tabelas do Explorador até o formulário.
Pode adicionar um nome de tabela ou campo a um método, arrastando o nome do método na janela do editor de métodos.
Desta forma se assegura de utilizar a sintaxe correta. Por exemplo, se arrasta o campo “Nome” da tabela [Clientes] até um
método, aparecerá no método como “[Clientes]Nome”.
Área de pré-visualização
Também pode pré-visualizar a descrição das tabelas em forma tabular na área de pré-visualização do Explorador. Para
fazer isto, selecione uma tabela e faça clique no ícone de pré-visualização
. A imagem seguinte
mostra a vista prévia de uma tabela:
Esta área é unicamente informativa, não é possível modificar seus valores.
Além dos números, nomes e tipos de campos da tabela selecionada, também são listados os índices associados a tabela
(sem importar seu tipo) como também as relações que se originam na tabela. Para cada campo na origem de uma relação
(campo Muitos), o campo de destino (Campo Um) se indica na coluna Relação.
Igualmente pode visualizar o tipo de um campo quando seleciona seu nome na lista:
- 101 -
Ver a imagem da tabela na janela estrutura
Pode ver a imagem de uma tabela com um duplo-clique no nome da tabela. 4D centra a visão da janela de estrutura na
imagem da tabela e mostra suas propriedades na janela Inspetor. Esta funcionalidade é bastante útil se a estrutura de seu
banco tem muitas tabelas diferentes, já que evita ter que movimentar-se na janela do editor de estrutura para ver uma tabela
em particular.
Adicionar uma tabela ou campo
Pode adicionar uma tabela ou campo utilizando o botão adicionar
.
Para criar uma tabela, selecione um nome de tabela (ou se assegure de que nenhum objeto esteja selecionado) e clique no
botão de adição. Aparece a caixa de diálogo padrão Nova tabela (consulte a seção Criar e modificar Tabelas). Para criar
um campo, selecione um campo existente e clique no botão de adição. Aparece a janela do Inspetor, pronta para criar um
campo em uma tabela selecionada (consulte o parágrafo ).
Apagar uma tabela
Pode eliminar uma tabela utilizando o botão apagar . Quando selecionar uma tabela e clicar neste botão, a tabela se
apaga do editor 4D e não pode mais ser utilizada. Os formulários e métodos associados a ela também são apagados
Nota: não se pode eliminar campos com o botão apagar.
Na verdade, a tabela não é eliminada definitivamente, ela vai para a Lixeira, e se oculta em 4D (consulte Página Lixeira).
Sua eliminação apenas acontece quando se esvazia a Lixeira.
É possível apagar uma tabela desde o editor de estrutura (consulte o parágrafo Eliminar uma Tabela) ou através da
linguagem SQL.
- 102 -
Página Formulários
A página Formulários contém duas listas de formulários: Formulários de projeto e Formulários de tabela. A lista dos
formulários de tabela mostra as tabelas do banco e seus formulários associados.
Os formulários de projeto são formulários independentes que náo estáo associados a tabelas. Estes formulários são
particularmente úteis quando desenvolve interfaces e componentes.
Os formulários tabela são formulários associados a tabelas. Se beneficiam de automatizações e de funções adicionais para
o processamento de dados. Para mais informação sobre as diferenças entre estes dois tipos de formulários, consulte o
parágrafo Formulários de tabela e de projeto.
Criar um novo formulário
A página Formulários permite criar um formulário (formulário de projeto ou formulário tabela) de duas formas:
Utilizando o assistente de criação de formulários: selecione o título “Formulários de projeto” (para criar um formulário
projeto) ou a tabela ou um formulário da tabela na qual queira adicionar o formulário (para criar um formulário tabela) e
logo escolha Novo formulário com Assistente... no menu de opções da página:
Aparece o assistente de criação de formulários, pronto para criar um novo formulário. Para mais informação sobre
este assistente, consulte a seção Criar um formulário com o assistente de formulário.
Criar um formulário vazio: selecione o título “Formulários de projeto” (para criar um formulário de projeto) ou a tabela ou
um formulário da tabela na qual queira adicionar um formulário (para criar um formulário de tabela) e logo clique no
botão adicionar . Aparece uma caixa de diálogo onde pode definir o nome e a pasta do formulário. Quando valida
esta caixa de diálogo, se cria o formulário vazio e se mostra em uma janela do editor de formulários. Para mais
informação, consulte a seção Criar um formulário em branco.
Editar um formulário
Desde o Explorador, pode abrir diretamente um formulário existente no editor de formulários para edição. Para fazer isso,
pode:
Fazer um duplo clique em seu nome,
Selecionar o formulário e logo Modificar o formulário... no menu contextual ou no menu opções da página.
Para mais informação sobre a edição de formulários, consulte o capítulo Criar formulários.
Eliminar um formulário
Para eliminar um formulário, selecione seu nome na lsita e clique no botão apagar
ou utilize o comando Eliminar
formulário do menu contextual. Também pode arrastar e soltar o formulário na Lixeira.
Não pode apagar um formulário de tabela que esteja sendo utilizado como formulário padrão de entrada ou saída de uma
tabela.
Pré-visualizar um formulário
Para mostrar a área de visualização prévia, clique no ícone de pré-visualização
visualizado.
- 103 -
. Selecione um formulário para ser
Especificar o formulário atual de entrada ou saída
Pode atribuir os formulários de entrada e de saída atuais para cada tabela desde o Explorador (formulários de tabela
unicamente). Para fazer isso, clique no nome do formulário de tabela e utilize os comandos Formulário de entrada ou
Formulário de saida do menu contextual:
Para mais informação sobre os formulários de entrada e de saída padrão, consulte a seção Definir formulários de
entrada e saída.
Modificar o método de um formulário
Pode abrir o método de um formulário diretamente desde a página Formulários do Explorador, selecionando o comando
Modificar método de formulário... no menu contextual ou no menu de opções. O método do formulário se abrirá em uma
janela do editor de métodos.
Definir propriedades do Formulário através do Explorador
Pode acessar as principais propriedades de um formulário desde o Explorador. Clique no nome do formulário, depois clique
no comando Propriedades do formulário... no menu contextual ou no menu de opções da página. Para mais informação,
consulte o parágrafo Propriedades de formulário (Explorador).
Executar um formulário
Pode executar um formulário em seu contexto (lista de registros para um formulário de tabela listado e registro atual em
página para um formulário tabela detalhado) na janela de visualização de registros. Para fazer isso, escolha Executar
formulário no menu contextual ou no menu opções da página. Para mais informação sobre como provar formulários,
consulte o parágrafo Barra de ferramentas.
Usar Arrastar e Soltar
- 104 -
Pode inserir um nome de formulário num método arrastándo-lo. Ao fazer isto, o nome do formulário aparece utilizando a
sintaxe correta. Por exemplo, se arrasta o formulário Entrada da tabela [Empresas], aparecerá como [Empresas]"Entrada".
Pode inserir um subformulário num formulário arrastando o nome desde a página Formulários do Explorador ao formulário
aberto no editor de formulários. Para associar um subformulário detalhado ao subformulário listado na tela, mantendo
pressionada a tecla Maiúscula e arraste o nome de um formulário de entrada desde a página Formulários do Explorador à
área do subformulário no formulário. Para mais informação, consulte a seção Subformulários e widgets.
Copiar, colar ou duplicar um formulário
4D permite copiar/colar ou duplicar um formulário existente, através dos comandos correspondentes do menu contextual ou
no menu de opções da página. Isso permite desenvolver rapidamente vários formulários com características comuns.
4D adiciona e incrementa automaticamente um número ao nome do formulário se já existe um formulário com o mesmo
nome na mesma localização de destino.
- 105 -
Página Métodos
A página Métodos mostra as listas de métodos de projeto, métodos de banco de dados, métodos formulário tabela,
métodos formulários projeto e triggers do banco de dados. Os tipos de métodos se agrupam por categorias.
Nota: se foram instaladas no banco os componentes com métodos compartidos, a página mostra uma categoria adicional:
Métodos componente. Este elemento lista os componentes instalados e seus métodos compartidos. Este ponto se detalha
no parágrafo Visualização dos componentes.
Criar um novo método
Este parágrafo descreve como criar cada tipo de método desde o Explorador.
Métodos de projeto: para criar um novo método de projeto, selecione o elemento Métodos projeto na lista hierárquica
ou o nome de um método projeto existente e clique no botão adicionar .
Também é possível criar um método projeto por duplicação ou copiar/colar (ver a seguir).
Métodos recipiente: é mostrada esta categoria quando os recipientes com métodos compartilhados se instalam na
base. Nele se enumeram os recipientes instalados junto com seus métodos compartilhados. Este ponto se descreve
em Visualização dos componentes.
Métodos de banco: não pode criar novos métodos banco. Simplesmente pode adicionar código a um dos métodos
existentes (vazios por padrão). Para fazer isto, expanda o elemento Métodos de banco e logo dê um duplo-clique no
método banco a modificar ou escolha o comando Modificar método... do menu contextual ou do menu de opções da
página.
Triggers: para criar um novo trigger, expanda a lista Triggers, selecione a tabela que deseja e clique no botão
adicionar
ou dê um clique duplo no nome da tabela. Também pode escolher Modificar método... no menu
contextual ou no menu de opções da página.
Métodos formulários projeto: para criar um novo método para um formulário projeto, expanda a lista Métodos
formulários projeto, selecione o formulário que deseja e clique no botão adicionar
ou dê um duplo clique no nome
do formulário ou selecione Modificar métodos... no menu contextual ou no menu de opções da página.
Métodos formulários tabela: para criar um novo método para um formulário tabela, expanda a lista Métodos
formulários tabela, seleciona a lista de tabelas e formulários que deseja e clique no botão lista
ou dê um duplo
clique no nome do formulário ou selecione Modificar métodos... no menu contextual ou no menu de opções da
página.
Métodos4D Mobile: esta categoria enumera as tabelas que se expõem em 4D Mobile e todos os métodos projeto
expostos unidos a elas. Para obter mais informação, consulte a seção [#title id="3391"/] no manual 4D Mobile.
Nota: também pode criar um método de formulário selecionando Modificar método de formulário... no menu contextual ou
no menu de opções da página Formulários.
Criar um método com o Assistente de serviços Web
Pode mostrar o assistente de serviços web desde a página Métodos. Selecione Assistente de serviços web... no menu
de opções da página.
Aparece o assistente de serviços web, pronto para ser utilizado para descobrir um serviço web e gerar os métodos proxy
correspondentes. Para mais informação sobre o uso deste assistente, consulte o parágrafo Subscrever a um Serviço
Web em 4D”.
Deletar Métodos
Pode eliminar qualquer método selecionando e clicando no botão Apagar
contextual.
ou selecionando Apagar método... no menu
A eliminação depende do tipo de método:
* Métodos base, triggers e métodos formulário: o conteúdo do método se apaga de modo que o método volta a seu estado “vazio” de
forma padrão. Uma caixa de diálogo indica que a eliminação é definitiva.
* Métodos projeto: o método é apagado da lista de métodos e vai para a Lixeira. É possível recuperar o método da Lixeira ou apaga-lo
- 106 -
definitivamente (para mais informação, consulte a seção Página Lixeira).
Visualizar um método
Clique no ícone
para mostrar a área de pré-visualização e selecione um método. O conteúdo do método aparece como
no editor de métodos. Pode selecionar, copiar ou arrastar e soltar tudo ou parte do conteúdo da área de pré-visualização.
Propriedades de Método de Projeto
Pode mostrar e modificar as propriedades dos métodos projeto desde o Explorador selecionando um método e usando o comando
Propriedades do método... no menu contextual ou no menu de opções da página.
Aparece a janela “Propriedades do método”, permitindo modificar o nome assim como as outras propriedades do método.
Para mais informação sobre as outras opções de esta caixa de diálogo, consulte Definir as propriedades dos métodos de projeto.
Alteração global de atributos
O comando Alteração global de atributos... do menu contextual ou do menu opções (apenas se aplica a métodos projeto)
permite modificar em una mesma operação um atributo (Invisível, Disponível através de 4DACTION, 4DMETHOD e
4DSCRIPT, etc.) para todos ou alguns dos métodos projeto do banco. Para mais informação, consulte o parágrafo
“Alteração global de atributos de métodos”, na seção Alteração global de atributos de métodos.
Executar um método
É possível lançar a execução de um método banco e de um método projeto desde o Explorador. Selecione o método e logo escolha o
comando Executar o método... no menu contextual ou no menu de opções da página.
O método se executa em modo padrão. Para mais informação, consulte a seção Executar métodos.
- 107 -
Copiar, colar ou duplicar métodos de projeto
É possível copiar, colar e duplicar métodos projeto desde a lista de métodos do Explorador. Estas funções permitem
duplicar um método no mesmo banco de dados ou copiar novamente um método de um banco para outro.
Para duplicar um método, selecione o método e escolha o comando Duplicar no menu contextual ou no menu opções da
página. Para copiar um método, selecione o método e escolha o comando Copiar no menu contextual. Para colar o
método, escolha Colar no menu contextual.
Em caso de duplicação, ou se já existe um método com o mesmo nome no lugar onde vai colar o método, se adiciona um
número ao nome do método, por exemplo MeuMetodo1. Este número aumenta se necessário (MeuMetodo2, MeuMetodo3,
etc).
Pesquisar por chamadas
Pode pesquisar no Explorador a lista de objetos que fazem referência a um método de projeto (outros métodos ou menus).
Esta função está disponível através do comando Pesquisar chamadas ao método no menu contextual ou no menu opções
da página:
Nota: o comando Pesquisar chamadas ao método... também está disponível no menu Método de Janela do editor de
métodos.
Este comando mostra uma nova janela de resultados. Para mais informação sobre a janela de resultados, consulte a seção
Janela de Resultados.
Buscar as dependências
Pode buscar automaticamente desde o Explorador as dependências dos métodos projeto, em outras palavras os outros
métodos projeto e os formulários utilizados direto ou indiretamente por estes métodos. Para ele, se seleciona um método
projeto no Explorador e se seleciona o comando Buscar as dependências do método no menu contextual ou no menu de
opções da página.
Todas as dependências do método selecionado são mostrados a continuação em uma Janela de Resultados padrão.
Você pode abrir-los em seus respectivos editores ou selecionar-los e mover-los usando arrastar e soltar. Isto facilita
transferir funcionalidades completas entre suas bases.
Também pode selecionar vários métodos projeto de uma vez e selecionar Buscar as dependências do método. Neste
caso, as dependências de todos os métodos se mostram na janela de resultados.
Analises da dependência
Para encontrar os métodos projeto dependentes, 4D analisa o código do método a detectar:
as chamadas diretas no código,
os nomes dos métodos passados como parâmetros a um dos seguintes comandos:
Open window (parâmetro controleMenuBox)
ON ERR CALL
ON EVENT CALL
New process
EXECUTE ON CLIENT
SET MENU ITEM METHOD
EXECUTE METHOD
Deve passar um nome de parâmetro que seja uma constante literal de tipo texto correspondente a um nome de método
executável válido.
Para buscar um formulário dependente no código, 4D busca um nome de formulário passado como um parâmetro a um dos
- 108 -
seguintes comandos:
Print form
DIALOG
OUTPUT FORM
INPUT FORM
PRINT SETTINGS
GET FORM PROPERTIES
Open form window
O parâmetro tabela do formulário é reconhecido mas deve ser especificado explicitamente.
4D poderia não detectar uma dependência nos seguintes casos:
//Caso de não detecção
//método por referencia
v:="myhandler"
ON ERR CALL(v)
//ponteiro a uma tabela
DIALOG(Table(1)->;$formname)
// usuário de DEFAULT TABLE
DEFAULT TABLE([myTable])
DIALOG("myForm") // "myForm" será avaliado como um formulário projeto
// chamada de função utilizando FN no código SQL
Begin SQL
SELECT Film_Title, {FN How_Many_Actors(ID) AS NUMERIC}
...
- 109 -
Página Comandos
A página Comandos mostra todas as rotinas integradas de 4D, agrupadas por temas. Esta lista é a mesma que se mostra
no editor de métodos.
Pode utilizar esta página para acessar a página de documentação online dos comandos. A área de visualização prévia
também permite mostrar a informação sobre a sintaxe dos comandos.
Acessar a documentação online
Pode acessar a documentação online (HTML) de 4D diretamente a partir da página de comandos: somente necessita fazer
um duplo clique no nome do comando. A página de documentação HTML correspondente é mostrada no seu navegador.
As páginas de documentação HTML podem ser guardadas em um CD ou em um DVD, em seu disco rígido ou podem vir
diretamente do website de 4D (4D Doc Center). A localização de onde a página é carregada está definida pela área
"Localização da documentação" nas Preferências de Usuário (ver a seção Página Geral). Por configuração padrão, 4D se
conectará ao website do 4D Doc Center.
Mostrar a sintaxe de comando
Quando a área de visualização prévia está aberta, mostra o número do comando selecionado assim como uma descrição
da sintaxe do comando.
Nota: o número do comando é utilizado pela função Command name.
Se não deseja mostrar a sintaxe, pressione a tecla Alt (Windows) ou Opção (Mac OS)enquanto clica sobre o nome do
comando.
A área de lista do Explorador também mostra mensagens de ajuda que contém o número e a sintaxe dos comandos:
Estes mensagens de ajuda são idênticos aos mostrados na área de edição do Janela do editor de métodos.
Usar arrastar e soltar
Pode inserir um comando no método utilizando arrastar e soltar no Explorador. Neste caso, o comando se insere com sua
sintaxe.
- 110 -
Página Constantes
A página Constantes contém todas as constantes que possam ser utilizadas nos métodos. Pode visualizar o valor da
constante selecionada na área de vista prévia quando se despega, ou via mensagens de ajuda mostrados na área de lista .
As constantes mostradas podem vir de 4D, plug-ins ou recursos personalizados. Para mais informação sobre constantes,
consulte a seção ARRAY TO SELECTION no manual de Linguagem de 4D.
Usar arrastar e soltar
Como as constantes são utilizadas frequentemente nos métodos, é possível inserir uma constante num método apenas com
arrastar e soltar. Selecione a constante no Explorador e a arraste até a janela do editor de métodos. Po padrão, as
constantes aparecem sublinhadas no editor de métodos.
- 111 -
Página Plug-ins
A página Plug-ins lista todos os plug-ins instalados no banco assim como todos os seus comandos, geralmente agrupados
por temas.
A área de visualização prévia mostra informação adicional sobre os plugins e também a localização dos arquivos ativos.
Nota: Para mais informação sobre a instalação de plug-ins em sua aplicação, consulte a seção Instalar plugins ou
componentes.
- 112 -
Página Lixeira
A página Lixeira do Explorador reúne todos os objetos do tipo Pasta, Tabela, Formulário ou Método projeto apagados do
banco.
Igual que a Lixeira de Windows ou de Mac OS, a Lixeira de 4D é um elemento de segurança da interface, que reduz o risco
de eliminação acidental de objetos.
Os objetos na Lixeira não aparecem mais nos editores ou menus de 4D e não podem ser modificados, utilizados, movidos,
etc. Outros objetos similares podem ser criados com o mesmo nome. Os objetos localizados na Lixeira podem ser
recuperados desde que a Lixeira não seja esvaziada.
Também é possível mostrar os objetos na área de visualização prévia da página Lixeira. Além disso, os possiveis
comentários associados com os objetos eliminados permancem visíveis.
4D Server: o conteúdo da Lixeira é idêntico para todas as máquinas cliente.
Deletar objetos
Objetos podem ser eliminados a partir da página Início ou desde as páginas Tabelas, Formulários e Métodos.
Para eliminar um objeto no Explorador, simplesmente selecione o objeto e escolha o comando Eliminar no menu contextual
do Explorador (clique com o botão direito) ou simplesmente selecione o objeto e escolha o botão de eliminar .
Na página Inìcio, também se pode selecionar a Lixeira como destino de um objeto.
Também pode por uma tabela na Lixeira. A tabela desaparece dos editores do banco, incluindo o editor de Estrutura.
Quando colocar uma tabela na Lixeira, os formulários da tabela também são eliminados automaticamente (vão para a
Lixeira) e seus menus associados são apagados.
Não é possível eliminar a partir do Explorador um formulário tabela com o atributo E (formulário de entrada atual) ou S
(formulário de saída atual) ou A (formulário com os dois atributos) exceto quando se apaga a tabela desse formulário. Do
mesmo modo, não é possível eliminar as pastas que contém elementos não elimináveis.
Restaurar um objeto
A qualquer momento é possível recuperar um ou vários objetos que estiverem na Lixeira (desde que ela ainda não tenha
sido esvaziada). Simplesmente selecione os objetos e os arraste até o ícone da página apropriada do lado esquerdo da
janela, ou selecioe o comando Enviar a > no menu contextual com o clique direito:
O submenu Enviar a > mostra as pastas presentes no banco (para mais informação, consulte a seção ). Se o banco de
dados não contém pastas, somente aparece disponível a opção Nível Superior. Quando escolhe uma opção deste
submenu, os objetos selecionados são restaurados e movidos para a pasta escolhida como destino. Se escolhe Nível
superior, a seleção se localiza no primeiro nível, não em nenhuma pasta.
Se um ou mais objetos do banco têm o mesmo nome de um ou mais objetos que deseja recuperar, 4D mostra uma caixa de
diálogo de alerta oferecendo:
substituir o objeto no banco (formulários, métodos, etc).
renomear o objeto a recuperar como nome_1 (tabelas)
O botão Sim renomeia o objeto em recuperação ou substitui o objeto existente. O botão Sim para todos renomeia ou
substitui todos os objetos da seleção. Se fizer clique no botão Não, ou Não para todos, a recuperação de objetos não se
realiza.
Apenas se recupera ao objeto selecionado. Especificamente, os formulários apagados com uma tabela não são
- 113 -
recuperados automaticamente com a tabela.
Esvaziar a Lixeira
Como padrão, os objetos eliminados permanecem na Lixeira até ela ser esvaziada. Pode esvaziar a Lixeira a qualquer
momento, por exemplo, antes de compactar o banco de dados, com o propósito de reduzir o tamanho do arquivo de
estrutura. Todos os objetos da Lixeira são eliminados definitivamente do banco de dados.
Para esvaziar a Lixeira, escolha o comando Esvaziar a Lixeira no menu contextual (clique direito) ou no menu de opções da
página:
Uma caixa de diálogo de alerta indica o número de objetos presentes na Lixeira e permite confirmar ou cancelar a
operação:
Clique em Aceitar para apagar todos os objetos da Lixeira.
- 114 -
Usar os comentários
O Explorador permite associar comentários aos objetos em seu banco de dados. O uso de comentários é especialmente
apropriado para bancos desenvolvidos por vários programadores e geralmente é uma boa prática em programação. Seus
comentários são visíveis na área de visualização prévia do Explorador.
Os seguintes tipos de objetos aceitam o uso de comentários:
pastas
métodos (banco, componentes, projeto, triggers e formulário),
formulários,
tabelas,
campos,
plug-ins
Um comentário 4D se apresenta como texto, (os caracteres podem ter diferentes estilos de fontes, cores, etc..) modificável e
visível a qualquer momento no ambiente Explorador. POde conter uma descrição do objeto a que está associado, assim
como também toda informação necessária para entender o funcionamento do banco. Os comentários são guardados na
estrutura do banco.
Adicionalmente, pode gerar comentários automáticos, ou seja, comentários cujo conteúdo é atualizado automaticamente
por 4D quando um objeto é criado ou modificado.
Nota de compatibilidade: desde a versão 12 de 4D, os comentários inseridos no cabeçalho de um método utilizando os
caractere // são mostrados como mensagens de ajuda quando o método é referenciado em outro método (ver o parágrafo
"Utilizar as mensagens de ajuda" na seção WA SET EXTERNAL LINKS FILTERS. Esta função, muito útil para
documentar os métodos usuário, não é compatível com os comentários no Explorador. Se deseja utilizar os cabeçalhos dos
métodos desta forma, não introduza comentários no Explorador.
Associar um comentário com um objeto
Pode criar, ver e modificar os comentários no Explorador. Para adicionar um comentário quando se mostra a área de
visualização prévia, selecione o objeto na lista do Explorador, e logo clique no botão Comentários localizado na parte
inferior da área de visualização prévia.
Quando a opção Comentários estiver selecionada, a área de visualização prévia é substituída pela área Comentários e
pode introduzir ou modificar o texto mostrado.
- 115 -
4D Server: o ícone de bloqueio, localizado na esquina inferior esquerda da área, indica se o comentário está sendo editado
por outro usuário. Se esse for o caso, o lápis aparece com uma barra diagonal e somente se pode ler o comentário.
O texto é guardado logo que se faça um clique fora da área de entrada. Pode introduzir até 32.700 caracteres de
comentários por objeto.
Pode utilizar na área de comentários os comandos padrão de texto (Copiar, Colar, Selecionar tudo, etc) disponíveis no
menu contextual ou utilizando os atalhos de teclado. Também pode utilizar as teclas de navegação para se movimentar pelo
texto da área de comentários.
Modificar o estilo dos comentários
Pode melhorar o estilo dos comentários (colocando negrito ou itálico) e mudar a fonte dos caracteres ou sua cor:
1. Selecione o texto que deseja modificar na área Comentários.
2. Clique com o botão direito na área.
3. Aparece um menu hierárquico expandível
4.
5. Seleccione los atributos que quiere aplicar al texto.
Inserir comentários automáticos
É possível ativar um sistema de comentários automático, apenas para os métodos e formulários do banco de dados.
Quando esse sistema estiver ativo, um comentário se associa automaticamente a cada método ou formulário criado ou
modificado no banco de dados. Um comentário automático pode conter texto estático (como "Modificado por") e elementos
variáveis (data, hora e usuário atual, como definido na tabela de senhas de 4D)
Os comentários automáticos são definidos na caixa diálogo de Propriedades do banco, Página Geral (ver o parágrafo ). Do
mesmo jeito que os comentários padrão, eles podem ser vistos no Explorador.
Para ativar o sistema de comentários automáticos:
1. Abra a caixa de diálogo de Propriedades através do comando Propriedades do banco... do menu Desenho ou
clicando no botão Propriedades da barra de ferramentas de 4D.
2. Na página Geral, selecione a opção Ativar os comentários automáticos.
3. Introduza o texto dos comentários.
Pode inserir textos estáticos e elementos variáveis utilizando os botões
Data, Hora e Usuário localizados na área. Também pode introduzir diretamente as seguintes variáveis:
#D para a data
#H para a hora
#N para o usuário atual
Por exemplo, se introduzir os seguintes valores:
- 116 -
O comentário automático se adicionará aos comentários para todos os novos métodos e formulários, como também para
todos os métodos e formulários existentes que se modifiquem depois de que se ativem os comentários automáticos:
- 117 -
Nota: se o banco não possui um sistema de senhas, #N devolve a string “Designer.”
4D Server: os comentários automáticos podem ser modificados por qualquer máquina cliente com acesso às Propriedades
do banco. Também pode modificar estes parâmetros nas Propriedades do banco na máquina servidor. Toda modificação
realizada na página de comentários automáticos é considerada imediatamente em cada máquina cliente no instante em que
o objeto comentado é modificado.
- 118 -
Explorador de Execução
Acesso ao Explorador de Execução
Página Seguimento
Página Processo
Página Ponto de Interrupção
Página Captura
- 119 -
Acesso ao Explorador de Execução
A janela do Explorador de Execução permite revisar o comportamento dos diferentes elementos estruturais de seu banco e
verificar que os recursos disponíveis funcionem corretamente. O explorador de execução é particularmente útil durante as
fases de desenvolvimento e análise de uma aplicação.
A janela do Explorador de Execução pode ser mostrada nos ambientes Desenho e Aplicação, em modo interpretado ou
compilado.
Em um banco protegido por senhas, somente O Desenhista e o Administrador tem acesso à janela do Explorador de
execução.
O Explorador de execução pode ser mostrado em dois tipos de janela: em uma janela normal ou em uma janela flutuante. A
paleta flutuante sempre é mostrada em primeiro plano.
Para mostrar a janela do explorador de execução em uma janela normal, selecione o comando Explorador de
execução no menu Executar.
Para mostrar a janela do Explorador de ejecução como uma paleta flutuante:
pressione Ctrl+Maiúscula+F9 (Windows) ou Comando+Maiúscula+F9 (Mac OS)
Mantenha pressionada a tecla Maiúscula e selecione o comando Explorador de execução no menu
Executar.
A janela do Explorador de execução tem quatro páginas, acessíveis através dos botões localizados à esquerda:
Seguimento, Processo, Ponto de interrupção e Captura.
- 120 -
Página Seguimento
A página Seguimento é um depurador de bugs e mostra informação sobre a execução do código relacionada com a
aplicação e o processo selecionado.
As áreas localizadas na parte inferior da janela permitem configurar a informação mostrada:
Processo selecionado: esta lista expansível contém todos os processos que estão em execução no banco,
permitindo selecionar os processos que se deseja observar.
Atualizar cada: nesta área pode definir um valor (em segundos) que indica a frequência de atualização da informação
na página.
A coluna “Expressão” mostra os nomes dos objetos e expressões. A coluna “Valor” mostra o valor atual dos objetos e
expressões. Estas colunas podem ser redimensionadas, uma em relação com a outra. Clicando em um valor da coluna
direita, pode modificar o valor do objeto, se for permitido.
A lista hierárquica multi-níveis está organizada por tema. Os temas são os seguintes:
Variáveis: permite ver a lista de variáveis interprocesso do banco e das variáveis de processo do processo
selecionado.
Constantes: permite ver a lista de constantes definidas no banco.
Tabelas e campos, Semáforos, Conjuntos, Processos e Seleções temporais: a informação proporcionada
nestes temas é idêntica à informação proporcionada pelo depurador de 4D. Para mais informação, consulte a seção
Painel de expressão no manual Linguagem de 4D.
Informação: este tema mostra informação geral relacionada com o funcionamento do banco, tal como a tabela padrão
atual (se houver), a memória disponível, o destino da pesquisa, etc. Esta informação permite examinar o
funcionamento do banco.
Web: mostra informação relacionada com o servidor web da aplicação (apenas está disponível quando o servidor web
está ativo).
Arquivo web a enviar: nome do arquivo web esperando ser enviado (se houver um)
Ocupação de cache web: número de páginas presentes no cache web e sua porcentagem de uso,
Tempo de atividade do servidor web: tempo de funcionamento do servidor web em formato
horas:minutos:segundos
Número de requisições http: número total de requisições HTTP recebidas desde o lançamento do servidor
web, como também o número instantâneo de requisições por segundo
Número de processos web ativos: número de processos web ativos, todos os processos web.
As expressões dentro desse tema não podem ser modificadas.
A informação oferecida nestes temas é idêntica a proposta pelo depurador de 4D. Para maior informação, consulte a seção
[#title id="29"/]no manual Linguagem de 4D.
Para eliminar uma expressão ou tema, selecione a linha correspondente e pressione a tecla eliminar uma expresão ou tema,
selecione a linha correspondente e pressione a tecla Deletar ou Retrocesso.
Adicionalmente, o menu contextual (botão direito do mouse) permite realizar várias operações
Também pode adicionar uma Nova expressão ou inserir um Comando 4D ou realizar operações globais como: Eliminar
tudo, mostrar todas as Expressões padrão, Contrair tudo ou Expandir tudo.
Nota: pode adicionar uma nova expressão com um duplo clique na coluna Expressão.
Além disso, há várias opções de expansão disponíveis no menu contextual:
Mostrar tipos: mostra ou oculta os tipos de campos junto a seus nomes na lista tabelas e campos.
Mostrar números de tabelas e campos: mostra ou oculta os números de tabelas e campos junto a seus nomes na
- 121 -
lista tabelas e campos. Para cada campo se aplica o seguinte formato: [NúmeroTabela]NúmeroCampo.
Mostrar ícones: mostra ou oculta os ícones dos objetos na lista hierárquica.
Tabelas e campos ordenados: ordena alfabeticamente a lista de tabelas e campos (como padrão, estes objetos
aparecem na ordem em que foram criados).
Mostrar inteiros em hexadecimal: mostra as variáveis declaradas como de tipo Inteiro ou Inteiro longo em sua forma
hexadecimal.
Ativar seguimento de atividade: mostra informação adicional relacionada com o planificador e a rede de
comunicações. Esta informação de baixo nível, agrupada nos elementos Planificador e Rede, permitem fazer um
seguimento avançado da atividade interna da aplicação. Atenção, ao ativar esta opção os processos perdem
velocidade.
- 122 -
Página Processo
A página Processo permite visualizar o tempo de CPU consumido como também diferente informação sobre cada
processo criado na base.
Você também dispõe de várias ferramentas para os processos (excluindo processos sistema). Para mais informação sobre
processos em 4D, consulte a seção Processos no manual Linguagem de 4D.
Nota 4D Server: a página Processo do Explorador de execução em um cliente 4D controla os processos deste cliente 4D.
A Página Processos da janela de administração de 4D Server controla todos os processos dos clientes conectados ao
servidor.
Informação sobre os processos
Para cada processo, a página dá a seguinte informação:
tipo do processo
número do processo (número de identificação, idêntico ao número de processo. Este número de identificação é
utilizado pelos comandos e funções para designar um processo particular).
nome do processo,
estado atual do processo,
tempo de execução total do processo em segundos desde sua criação,
a porcentagem de tempo CPU consumido pelo processo.
Tipo de processo
Cada processo está identificado por um ícone, cuja cor e forma indicam seu tipo:
Servidor de aplicação
Servidor SQL
Servidor DB4D (motor de base de dados)
Servidor Web
Servidor SOAP
Processo client 4D protegido (processo desenvolvido de um 4D conectado)
Processo client 4D principal (processo principal de um 4D conectado; processo cooperativo, equivalente no
servidor do processo criado na equipe cliente)
Processo client 4D de base de dados (processo paralelo a um processo cliente 4D; processo preemptive
responsável de controlar o processo client 4D principal correspondente)
Processo Spare (anterior ou futuro "Processo client 4D de base de dados")
Processo client 4D (processo executando no 4D conectado)
Procedimento armazenado (processo lançado por um 4D conectado e executado no servidor)
Método Web (lançado por um 4DACTION por exemplo)
Método SOAP (lançado por um Web Service)
Método SQL (lançado por uma petição SQL)
Número de Processo
Cada processo tem um número único que corresponde à ordem de criação do processo durante a sessão. Quando se inicia
a aplicação, os primeiros números são atribuídos aos processos criados automaticamente por 4D (seu número varia de
acordo com os servidores executados no início).
Quando você criar seus próprio processo, ele aparece como o próximo processo na sequencia ou então pega o lugar de um
processo que tenha sido abortado. Por exemplo, suponha que processos 7 e 8 estão sendo executados. Se processo 7 é
abortado, o próximo processo a começar será chamado de processo 7.
Nota: os processos são abortados automaticamente ao terminar as tarefas para as quais foram criados. Pode abortar um
processo antes de que termine usando o Explorador de Execução. Para mais informação, consulte Abortar um processo.
Nome de Processo
É criado um novo processo utilizando New process ou Execute on server, pode definir seu nome como parâmetro para a
função. O nome especificado no parâmetro aparece como o nome do processo na lista de processos.
- 123 -
Se não especifica um nome de processo utilizando um comando, 4D atribui automaticamente um nome por padrão ao
processo. Os nomes automáticos estão baseados no método utilizado para criar o processo:
Processos criados desde um comando de menu: é criado um processo desde um comando de menu, o processo
recebe por padrão o nome “M_NúmeroProcesso.” Por exemplo, se o processo 7 é criado quando se seleciona um
comando de menu, o processo recebe o nome “M_7.”
Processos criados a partir da execução de um método: é criado um processo desde a caixa de diálogo Executar
método ou diretamente do editor de métodos, o método recebe automaticamente o nome “P_ProcessNumber.” Por
exemplo, se o processo 8 é criado por programação, o processo recebe o nome “P_8.”
Processos criados utilizando um comando, mas não chamados explicitamente: é criado um processo
utilizando um método mas não especifica o nome como um parâmetro para o comando New process, o nome do
processo se deixa em branco.
Nota para 4D Server: se o nome de um processo começa pelo caractere ($), é um processo local que não tem acesso às
tabelas ou ao servidor 4D. (ver Processos globais e locais).
Estado do processo
O estado de um processo é o estado atual de sua execução. Os seguintes estados podem ser mostrados na lista dos
processos:
Executando: o processo está sendo executado.
Suspenso: o processo está parado por um tempo específico. Durante o período que o processo está suspenso, o
processo não ocupa nenhum tempo de processamento. Para mais informação sobre como suspender um processo,
consulte o manual de Linguagem 4D.
Esperando evento: o processo está esperando uma ação do usuário tal como clicar um botão, a seleção de um
comando.
Esperando entrada/saída: o processo está esperando que ocorra uma entrada ou saída. Por exemplo, um processo
pode necessitar esperar enquanto um grupo de registros está sendo atualizado no disco.
Esperando bandeira: o processo está esperando que os processos internos terminem de executar as tarefas do
banco 4D.
Parado: o processo está parado até que se indique que a execução seja retomada Durante o período em que o
processo esteja suspenso, não consome tempo de processamento. Para mais informação, consulte Colocar um
processo em pausa.
Abortado: o processo termina. Quando um processo é abortado, 4D libera todos os registros bloqueados, cancela
todas as transações abertas pelo processo mas não validadas ou canceladas e libera a seleção atual assim como o
registro atual. Os processos são abortados automaticamente uma vez terminados. Igualmente pode abortar um
processo antes de que tenha sido completado, usando o Explorador de execução. Para mais informação sobre como
abortar um processo, consulte Abortar um processo.
Diálogo Modal Oculto: um processo que mostrava uma caixa de diálogo modal se esconde de maneira que o
usuário não possa ver mais a caixa de diálogo. O processo permanecerá neste estado até que a caixa de diálogo seja
mostrada novamente
Tempo e porcentagem CPU da execução
Quando se administram os processos, 4D divide o tempo de processamento entre os diferentes processos em execução.
Dessa maneira, a duração da execução é o tempo total de execução (em segundos) que um processo tomou desde sua
criação. Note que o tempo de processamento não corresponde à quantidade total de tempo que passou desde que o
processo começou a ser executado, já que na realidade, a execução vai alternando entre todos os processos abertos.
O Explorador de execução mostra o tempo de processamento de cada processo. Se abrir o gráfico do processo, poderá
ver a seguinte informação:
Pode modificar a frequência com a qual atualizar a informação, que pode ser a cada um, dois ou três segundos. Escolha um
valor no menu "Frequência de atualização" localizado na parte inferior da janela. Quanto maior o tempo de atualização, mais
tempo de CPU é consumido pelo Explorador de Execução. O número de processos a serem representados graficamente na
tela também influencia o tempo de CPU consumido pelo processo.
Ações realizadas nos processos
O explorador de execução permite controlar a execução de processos suspendendo, retomando ou abortando um processo.
Pode igualmente escolher executar em modo depuração. Por último, a qualquer momento pode ocultar e voltar a mostrar
suas janelas. Estas operações são detalhadas nas seções abaixo.
Estas operações são levadas a cabo por meio de botões de controle que se encontram por debaixo da lista de processos.
- 124 -
Estes botões afetam a seleção de processos. Pode selecionar mais de um processo ao mesmo tempo (Maiús+clique para
uma seleção adjacente ou Comando/Ctrl+ clique para uma seleção não adjacente).
Nota: pode suspender um processo por um período de tempo específico. Para mais informação a respeito, consulte o
manual de Linguagem 4D.
Suspender e reativar a execução de um processo
Pode suspender temporariamente a execução de um processo. Pausar um processo permite, por exemplo, dispor de mais
tempo de processamento para a execução de outros processos ou para permitir que um evento, do qual depende o
processo, ocorra.
Por exemplo, suponha que inicia um processo que imprime uma seleção de registros. Logo percebe que deseja modificar a
informação em um dos registros, e assim primeiro suspende o processo, realiza suas modificações e logo reativa o
processo para continuar imprimindo os registros.
Para deixar um processo em pausa, selecione-o e clique no botão Pausa
. O estado do processo na janela do
editor muda automaticamente a "em pausa". O processo permanece em pausa indefinidamente até que se indique
que a execução seja reativada.
Para reativar a execução de um processo, selecione-o e clique no botão Reativar
. O estado do processo
regressa ao estado que o processo tinha antes de ficar em pausa. Por exemplo, se o processo estava sendo
executado antes de ser colocado em pausa, o processo começa novamente sua execução. Se o processo estava
esperando por um evento antes de ser pausado, continua esperando por um evento.
Abortar um processo
Um processo se aborta automaticamente quando termina a tarefa que realiza. Entretanto, é possível abortar um processo
antes que termine por motivos de depuração. Os processos não devem abortar-se por outras razões. Para parar sua
execução, se aborta o processo no Explorador de execução.
Quando se aborta um processo, 4D libera todos os registros bloqueados, cancela todas as transações abertas pelo
processo, mas não validadas ou cancelas, e libera a seleção e o registro atual.
Para abortar um processo, selecione-o e clique no botão Abortar
. O estado do processo no Explorador de execução
muda automaticamente para “abortado.”
Depurar um processo
Pode depurar um processo monitorando sua execução no depurador de 4D.
Para depurar um processo, selecione-o e clique no botão Depurar
.
Se o processo está sendo executado, aparece a janela de depuração de 4D, que permite depurar o processo executando-o
passo a passo e avaliando expressões tais como o valor dos campos e variáveis utilizadas no método. Se o processo for
parado, 4D "guarda" a solicitação e mostra a janela de depuração logo que a execução do processo seja reativada.
Para mais informação sobre a utilização da janela de depuração, consulte o manual Linguagem 4D.
Não é possível depurar os processos internos criados e administrados por 4D.
Esconder um processo
É possível tornar um processo invisível quando estiver no modo Aplicação. Quando um processo estiver oculto, todas as
janelas e todos os menus criados para o processo se tornam invisíveis para os usuários durante sua execução.
Ocultar um processo é útil para as operações nas quais você abre uma janela que queira fechar mais tarde. Ao invés de
abortar o processo para fechar a janela, pode tornar a janela invisível para o usuário ocultando o processo que a abre.
Mesmo que a janela esteja oculta, o processo continua para executar e completar a operação que começou.
Para ocultar um processo, selecione e escolha o comando Ocultar no menu de opções:
Agora o processo está oculto no modo Aplicação. Note que o processo continua a execução mesmo que esteja oculto.
Pode mostrar o processo oculto a qualquer momento.
Para mostrar novamente um processo, faça clique no botão Mostrar
. O processo se torna novamente visível no
ambiente Aplicação.
Passar um processo para o primeiro plano
É possível passar uma janela para o primeiro plano, e assim também passar a primeiro plano o processo que a genera. Por
exemplo, se passa ao primeiro plano o processo principal, o modo Aplicação passa ao primeiro plano da tela.
Pode passar ao primeiro plano todos os processos usuário. Se criou uma janela para um processo, essa janela se converte
na janela do primeiro plano da tela. Se uma barra de menus está associada à janela, 4D passa a barra de menus ao
primeiro plano e os menus da barra são convertidos nos menus atuais. A barra de menus atual é substituída pela barra de
menus do processo que passou ao primeiro plano.
- 125 -
Para passar um processo para frente, selecione-o e escolha o comando Trazer para frente
.
Todas as janelas associadas ao processo passam para o primeiro plano. Além disso, 4D mostra a barra de menus da
janela atual do processo.
- 126 -
Página Ponto de Interrupção
Permite visualizar e administrar os pontos de interrupção que tenha estabelecido no seu banco de dados.
Está página está descrita na seção Listas de ponto de interrupção do manual Linguagem.
- 127 -
Página Captura
A página Captura mostra os pontos de interrupção definidos no banco em relação aos comandos (ou expressões).
Esta página está descrita na seção Capturas de comandos do manual Linguagem.
- 128 -
Procurar e substituir no ambiente Desenho
Visão Geral
Realizar uma Busca
Janela de Resultados
Substituir no conteúdo
Renomear
Procurar por elementos sem usar
- 129 -
Visão Geral
4D oferece várias funções de busca e substituição de objetos no ambiente Desenho.
Pode procurar por uma cadeia de caracteres (string) ou um tipo de objeto (variável, comentário, expressão, etc.), numa
parte ou em toda a estrutura do banco dados, usando critérios personalizados ("começa por", "contém", etc.). Por
exemplo, pode procurar todas as variáveis que contém a string "MinhaVar", somente nos métodos cujo nome começa
por "RH_".
Os resultados são mostrados numa janela de resultados, onde é possível substituir o conteúdo.
Pode detectar as variáveis e métodos que não são utilizados no código e logo apagá-las para liberar memória.
Pode mudar o nome do método projeto ou uma variável em todo o ambiente Desenho em uma só operação.
Nota: também há funções de pesquisa entre os métodos de sua base, os quais estão disponíveis no menu contextual da
Página Métodos no Explorador: Buscar os chamamentos e Buscar as dependências. As duas funções mostram os
elementos encontrados em uma Janela de Resultados.
Elementos pesquisados
Uma busca no ambiente Desenho, automaticamente busca nos seguintes objetos:
Menus (nomes e elementos) e comandos associados aos elementos.
Listas (nomes e elementos)
Imagens da biblioteca (nomes)
Mensagens de ajuda (nomes e conteúdo)
Nomes de formatos /filtros (nomes e conteúdo)
Nomes de tabelas e campos
Nomes dos formulários
Nomes dos métodos de projeto
Comentários no Explorador
Conteúdo de todos os métodos (triggers, métodos banco, métodos projeto, métodos objeto)
Conteúdo dos formulários:
1.
2.
3.
4.
5.
6.
7.
8.
nomes dos objetos
nomes de mensagens de ajuda utilizadas pelos objetos
nomes de imagens utilizadas pelos objetos
nomes de variáveis utilizadas pelos objetos
nomes de folhas de estilo utilizadas pelos objetos
cadeias de formatos
títulos de objetos
referências a campos ou tabelas
- 130 -
Realizar uma Busca
Iniciar a procura
Especifique os seus critérios de busca na janela "Procurar em Desenho". Para fazer isso:
1. Clique no botão em formato de lupa
na barra de ferramentas de 4D.
2. Ou escolha o comando Procurar no ambiente Desenho... do menu Edição. Aparece a janela de procura:
3. As áreas dessa janela variam dinamicamente em função das seleções realizadas nos menus.
4. Construa sua procura usando os diferentes menus e áreas de entrada de "Definição" e se for necessário introduza a
cadeia de caracteres a procurar. Estes elementos são descritos nas seções seguintes.
5. Configure as opções de busca (se necessário). Estas opções são descritas na seção "Opções de procura" a
continuação.
6. Clique em Aceitar ou pressione a tecla Enter. A procura começa. Quando terminar, aparece a janela de resultados
listando os objetos que contém a string introduzida (ver a seção Janela de Resultados).
Nota: é possível interromper uma procura a qualquer momento pressionando a tecla Esc.
Após ter realizado sua procura, o valor introduzido na área de procura é guardado na memória. Este valor, assim como
todos os demais valores ingressados durante a mesma sesão, podem ser selecionados desde o combo box:
Usar a barra de ferramentas
Pode realizar pesquisas usando a barra de ferramentas do ambiente Desenho de 4D.
Se não realizou nenhuma procura durante a sessão, pode introduzir a cadeia de caracteres a procurar e pressionar
Retorno de Carro ou a tecla Enter. Uma procura do tipo "o texto contém" é realizada automaticamente com as opções
- 131 -
automáticas
Se deseja repetir uma procura realizada durante a sessão, pode selecioná-la na lista expandível.
Se a procura foi realizada usando a janela Procurar, a procura é feita com as opções definidas nessa janela.
A procura é iniciada imediatamente. Uma vez realizada a procura, aparece uma janela de resultados, com uma lista de
todos os objetos que contém a cadeia introduzida.
Definições de Procura
As procuras no ambiente Desenho podem ser baseadas em um ou mais critérios.
Procurar
Pode especificar o tipo de elemento a ser procurado usando o menu Procurar. As seguintes opções estão disponíveis:
Texto: nesse caso, 4D procura uma cadeia de caracteres em todo o ambiente Desenho. A procura é realizada em
modo de texto sem formato, sem ter em conta o contexto. Por exemplo, pode procurar o texto "ALERTA ("Número de
erro: "+" ou "botão27".
Neste modo, não é possível utilizar o caractere coringa porque "@" é considerado como um caractere qualquer.
Comentário: uma procura desse tipo equivale à anterior mas está restrita ao conteúdo dos comentários no código
(linhas que começam por //) e na janela do Explorador (ver Usar os comentários). Por exemplo, pode procurar os
comentários que contenham a frase "A verificar".
Nota: o resultado final de ambos os tipos de procuras depende de como está configurado o modo de procura (ver o
parágrafo Modo Procura).
A Expressão...: permite procurar toda expressão 4D válida, realizada em modo "contém". A validez é importante
porque 4D deve poder avaliar uma expressão para procurá-la. Por exemplo, uma procura da expressão "[clientes"
(expressão inválida) não devolverá nenhum resultado, enquanto que "[Clientes]" é correta.
Esta opção é especialmente adequada para as procuras de atributos de valor e comparações de valores. Por
exemplo:
Procura de "minhavar:=" (atribuição)
Procura de "minhavar=" (comparação)
Elemento de linguagem: permite procurar um elemento de linguagem específico pelo seu nome. 4D diferencia entre
os seguintes elementos:
Método projeto: nome do método de projeto, por exemplo "M_Add". Lembre que essa procura (associada ao
modo "é exatamente") é equivalente ao comando contextual Procurar as referências no editor de métodos
(consultar ).
Formulário: nome do formulário, por exemplo, "Entrada". O comando procura nos formulários projeto nos
formulários tabela.
Campo ou Tabela: nome de tabela ou campo, por exemplo "Clientes".
Variável: qualquer nome de variável, por exemplo "$mivar".
Constante 4D: qualquer constante, como "é uma imagem".
String entre aspas: constante texto literal, ou seja, qualquer valor dentro das aspas no editor de código é
inserido nas áreas de texto do editor de formulários (texto estático ou uma área de grupo). Por exemplo, uma
procura de "Martin" obterá resultados se seu código contém a linha:
QUERY ([Clientes];[Clientes]Nome="Martin")
Comando: comando 4D, por exemplo, "Alerta".
Plug-in: comando de plug-in instalado na aplicação, por exemplo "WR Find".
Todos os elementos: esta opção permite realizar uma procura entre todos os objetos no ambiente Desenho. Está
disponível apenas no filtro de data de modificação. Utilize esta opção, por exemplo, para procurar "todos os objetos
modificados hoje".
- 132 -
Modo Procura
No menu do modo de procura (ou seja, cujo, que é ou cujo nome, em função do tipo de procura) especifique como deseja
buscar o valor que escreve. O conteúdo deste menu varia segundo o tipo de elemento a procurar selecionado no menu
anterior.
Procura de texto ou comentário:
contém: procura a string entre os textos no ambiente Desenho. A procura de "var" pode encontrar "minhavar",
"variavel1" ou "aVariavel".
Contém a palavra completa: procura a string como uma palavra completa em todo o texto do ambiente
Desenho. Os resultados da procura de "var" apenas incluem coincidências exatas. Não incluirão "minhavariavel",
mas incluirão, por exemplo, "var:=10" ou "ID+var", porque os símbolos ":" ou "+" são separadores de palavras.
começa por / termina em: procura a string ao princípio ou ao final da palavra (procura de texto) ou ao princípio
ou final da linha de comentário (procura de comentário). No modo "texto termina em", a procura de "var",
encontrará "minhavar".
Procura de elemento de linguagem: o menu oferece as opções padrão (é exatamente, contém, começa por,
termina em) similares às oferecidas nas versões anteriores de 4D. Lembre que pode utilizar o caractere coringa de
procura (@), com a opção "é exatamente" (devolve todos os objetos do tipo definido).
Modification date of the parent
Este menu restringe a procura relativa a data de criação/modificação do elemento pai (ou seja, por exemplo, o método que
contém a string que se procura). Este menu contém os critérios de data comuns (é, é anterior a, é posterior a, é diferente
de) assim como várias novas opções que permite especificar um período de procura padrão:
é hoje: período que começa a meia-noite do dia atual (00:00 h).
é desde ontem: período que inclui o dia atual e o anterior.
é esta semana: período que começa na segunda-feira da semana atual.
é este mês: período que começa no primeiro dia do mês atual.
Pastas
O menu "Na pasta" permite filtrar a procura por nível de pasta. Automaticamente (opção "Nível superior", a procura é
realizada em todas as pastas.
Nota: as pastas de objetos são definidas em Página Início do Explorador.
Opções
Pode selecionar diferentes opções de procura para ajudar a acelerar suas pesquisas:
Buscar nos formulários: quando essa opção está desmarcada, a procura global é realizada em todo o banco, exceto nos
formulários e nomes de formulários.
Buscar nos métodos: quando essa opção está desmarcada, a procura global é realizada em todo o banco, exceto em
métodos e nomes de métodos.
Sensível a maíusculas e minúsculas: quando essa opção estiver selecionada, a procura considera como foram
introduzidas os caracteres na caixa de diálogo Buscar. Portanto, se procura "MinhaVar", 4D não encontrará "minhaVar".
Exemplos de buscas
Uma procura eficaz resulta da combinação adequada das opções dos menus da janela de procura. Para ilustrar o
funcionamento da procura em 4D v12, a continuação apresentamos alguns exemplos de procuras típicas e como as
configurar.
Procurar todos os lugares onde um valor foi atribuído diretamente à variável vTInit:
- 133 -
Procurar todas as referências ao formulário "Entrada" da tabela [Clientes]:
Procurar as chamadas aos métodos cujo nome começa por "RH_":
- 134 -
Listar todas as variáveis no banco:
Procurar a palavra chave "Designer" nos comentários escritos na semana:
- 135 -
- 136 -
Janela de Resultados
A Janela de Resultados lista os objetos encontrados que cumprem com os critérios de busca definidos via diferentes tipos
de pesquisa:
pesquisa estandarte (ver a seção Realizar uma Busca)
pesquisa de elementos não utilizados (ver a seção Procurar por elementos sem usar).
pesquisa de chamamentos (ver Pesquisar por chamadas)
pesquisa de dependências (ver Buscar as dependências) (a partir de 4D v13 unicamente)
renomear os métodos de projeto e de variáveis (ver Renomear)
A janela de resultados mostra os resultados como uma lista hierárquica organizada por tipo de objeto encontrado. Pode
expandir ou contrair todos os elementos utilizando os comandos correspondentes do menu de opções (encontrado na parte
inferior esquerda da janela) ou do menu contextual.
Pode dar um duplo clique em uma linha dessa janela para ver o objeto no editor. Se fizer várias procuras, cada busca abre
sua própria janela de resultados, deixando abertas as janelas de resultados anteriores.
Quando são encontradas mais de uma ocorrência de um objeto ou uma cadeia dentro de um método, a lista indica seu
número ao lado do nome do objeto.
Este botão
permite repetir a procura com os mesmos critérios e opções.
Também pode acessar a função Substituir no conteúdo na janela de resultados.
Menu de opções
O menu de opções lhe permite realizar diferentes ações:
- 137 -
Nota: também pode encontrar estas ações no menu contextual da janela.
Remover da lista: apaga os elementos selecionados da janela de resultados. Más especificamente, lhe permite
conservar só os elementos objetivo de um substituto no conteúdo ou utilizados para um arrastar soltar entre aplicações.
Substituir no conteúdo: substitui uma cadeia de caracteres ao interior dos elementos selecionados. Esta função é
descrita em Substituir no conteúdo
Selecionar >: seleciona um tipo de elemento (métodos projeto, nomes de objetos, etc.) entre os elementos presentes
na Janela de Resultados. O submenu hierárquico também oferece os comandos para selecionar (Tudo) ou não
selecionar todos os elementos (Nenhum).
Contrair tudo/Expandir tudo: expande ou contrai todos os elementos hierárquicos da lista.
Utilizar arrastar e soltar
Pode arrastar e soltar objetos entre dois aplicações em modo Desenho desde a Janela de Resultados. Os princípios de
deslocamento de objetos (em particular "objetos inseparáveis") é descrito no capítulo Arrastar e Soltar Objetos.
As tabelas referenciadas nos métodos se movem agora por padrão com os métodos. Pode desativar este funcionamento
pressionando a tecla Maiúscula ao arrastar os métodos desde a janela.
- 138 -
Substituir no conteúdo
A função de substituir no conteúdo permite substituir uma string de caracteres por outra dentro dos objetos listados na
seção Janela de Resultados. O comando Substituir no conteúdo se encontra disponível no menu de opções da janela:
Quando seleciona este comando, aparece uma caixa de diálogo onde se introduz a string de caracteres que substituirá
todas as ocorrências encontradas na pesquisa inicial:
As operações de substituição funcionam da seguinte maneira:
A substituição é realizada em todos os elementos presentes na lista e não em uma seleção. Entretanto, é possível
reduzir a operação de substituição, reduzindo o conteúdo da lista utilizando o comando Remover do menu contextual
(usando o botão direito do mouse):
Apenas as ocorrências mostradas na lista serão substituídas, e somente depois de comprovar os critérios de busca
iniciais para os casos em que os objetos foram modificados entre a pesquisa inicial e a operação de substituição..
A substituição se realiza:
no conteúdo dos métodos
nas propriedades dos objetos de formulário
no conteúdo das mensagens de ajuda
no conteúdo dos filtros de entrada
no conteúdo dos elementos de menus (textos e chamadas de métodos)
no conteúdo das listas de opções
- 139 -
no conteúdo dos comentários sobre métodos, formulários, tabelas e campos no Explorador.
Para cada objeto modificado, 4D comprova se ele já foi carregado por outra máquina ou janela. Em caso de conflito,
aparece uma caixa de diálogo indicando que o objeto está bloqueado. Pode fechar o objeto e tentar novamente ou
cancelar a substituição. A operação de substituição continuará com os demais objetos da lista.
Se um método ou um formulário afetado por uma operação "substituir no conteúdo" está sendo editado pela aplicação
4D, ele será modificado diretamente no editor aberto (sem advertência). Os formulários e métodos modificados dessa
maneira não são guardados de forma automática: terá que utilizar o comando Salvar ou Salvar todos para validar as
mudanças.
Quando uma substituição é realizada em um elemento da lista, o elemento é mostrado em itálico. Aparece na parte
inferior da janela a contagem em tempo real das substituições realizadas.
Os objetos nunca são renomeados pela função Substituir em conteúdo, exceto os objetos nos formulários. Portanto
é possível que certas ocorrências da lista não sejam afetadas pela substituição. Isso poderia acontecer quando
apenas o nome do elemento corresponde com os critérios de busca iniciais. Nesse caso, não todos os elementos da
lista aparecem necessariamente em cursiva e a posterior contagem das substituições é inferior ao número de
ocorrências encontradas na busca inicial.
- 140 -
Renomear
4D oferece uma função de mudança de nome de métodos projeto e de variáveis com propagação em todo o banco de
dados. Esta função é acessível:
através da opção Renomear... do menu contextual (botão direito do mouse) do editor de métodos (métodos projeto e
variáveis),
através da opção Renomear o método... do menu contextual do Explorador (métodos projeto).
Quando selecionar esta opção, aparece uma caixa de diálogo que permite introduzir o novo nome do objeto:
O novo nome deve cumprir com as regras de nomes, do contrário aparecerá uma advertência quando se valide a caixa de
diálogo. Por exemplo, não é possível mudar o nome de um método por um nome de comando como "Alert".
Dependendo do tipo de objeto que esteja sendo renomeado (método projeto ou variável), a caixa de diálogo de mudança de
nome também pode conter uma opção de propagação:
Método projeto: a opção Atualizar callers em todo o banco permite propagar o novo nome do método em todos os
objetos do banco. Também pode desmarcar esta opção, por exemplo, para renomear um método unicamente no
Explorador.
Variáveis processo e interprocessos: a opção Renomear a variável em todo o banco de dados permite propagar a
mudança de nome da variável em todos os objetos do banco. Se não desmarcar esta opção, a variável somente se
renomea no método atual.
Variável local: não há opção de propagação para este objeto, a variável se renomeia unicamente no método atual.
Refazer busca
Este botão
lhe permite realizar novamente a pesquisa com os mesmos critérios e opções. Isso pode ser útil, por
exemplo, para ter certeza de que todas as substituições desejadas foram realizadas.
- 141 -
Procurar por elementos sem usar
Dois novos comandos de pesquisa permitem detectar as variáveis e os métodos que não se utilizam em seu código. Pode
assim eliminá-los para liberar memória.
Estes comandos são encontrados no menu Edição no modo Desenho:
Encontrar métodos e variáveis globais não utilizadas
O comando Procurar métodos e variáveis globais sem usar busca os métodos projeto, assim como as variáveis "globais"
(variáveis processo e variáveis interprocesso) declaradas mas não utilizadas. Os resultados da procura aparecem em uma
Janela de Resultados.
Um método projeto é considerado como não sendo utilizado quando:
não está na Lixeira
não é chamado em nenhuma parte do código 4D,
não é chamado por um comando de menu,
não é chamado como uma constante string no código 4D (4D detecta um nome de método em uma string, mesmo
quando está seguido por parâmetros entre parêntesis).
Uma variável processo ou interprocesso é considerada como sendo não utilizada quando:
é declara em código 4D por um comando de declaração do tipo C_XXX o ARRAY XXX,
não é usada em nenhuma parte do código 4D,
não é usada em nenhum objeto de formulário.
Lembre-se que certos usos não podem ser detectados por essa função, ou seja, um elemento considerado como sendo não
utilizado pode em realidade ser utilizado. Este é o caso do seguinte código:
v:="metodo"
EXECUTE FORMULA("meu"+v+String(42))
Este código cria um nome de método. O método projeto meumetodo42 é considerado como não utilizado, quando na
verdade ele é sim chamado. Portanto, é conveniente certificar-se de que os elementos declarados como não utilizados são
realmente desnecessários antes de os eliminar.
Encontrar variáveis locais sem usar
O comando Procurar variáveis locais sem usar busca as variáveis locais declaradas mas não utilizadas. Os resultados
da busca aparecem em uma Janela de Resultados.
Uma variável local é considerada como não utilizada quando:
é declarada no código 4D por um comando do tipo C_XXX o ARRAY XXX,
não é usada em nenhuma outra parte dentro do mesmo método.
- 142 -
Arrastar e Soltar Objetos
Visão Geral
Caixa de diàlogo Movendo
Propriedades de Movimentacão
- 143 -
Visão Geral
Usando 4D é possível mover objetos entre duas aplicações no ambiente Desenho. Pode copiar em um banco as tabelas,
formulários, métodos, etc., que e copiá-los em outro banco de dados. Esta função facilita e acelera o desenvolvimento de
seus bancos.
O movimento de objeto não se limita a objetos individuais, também se aplica a todos os objetos referenciados por um
objeto, ou seja, seus objetos dependentes. Também podem ser movidos funcionalidades completas. Por exemplo, se criou
uma caixa de diálogo de pesquisa personalizada, pode mover o formulário utilizada para a caixa de diálogo assim como
também os métodos imagens e outros objetos que queira utilizar. Pode copiar o formulário em outro banco de dados ou em
uma biblioteca agrupando as funcionalidades utilizadas atualmente em seus bancos.
Alguns objetos são inseparáveis: são movimentados obrigatoriamente com seus objetos "pai". A lista de objetos
inseparáveis é detalhada a seguir.
Objetos movéis
Os objetos podem ser movidos com a caixa de ferramentas Explorador e o editor de formulários. Além disso, é possível
usar a janela de resultados de uma procura global (consulte Janela de Resultados).
Por razões de coerência estrutural, a cópia de certos objetos levará à cópia dos objetos com ele associados. Por exemplo,
a cópia de um formulário levará à cópia do método formulário e dos métodos objeto eventualmente associados. Estes
objetos inseparáveis não podem ser movidos diretamente um sem o outro.
Esta é uma lista de objetos movíveis com seus objetos inseparáveis:
Objetos
inseparáveis
Objetos Movéis
---- Caixa de ferramentas ---Listas
Folhas de estilos
Formatos/Filtros
Imagens da biblioteca
Mensagens de ajuda
-
---- Explorador e Janela de Resultados ---Métodos de
formulário
Métodos de
formulário
Campos,
triggers
Formulários projeto
Formulários tabela
Métodos projeto
Pastas / Subpastas
Tabelas
---- Editor de formulários ---Todos os objetos de um formulário (botões, variáveis, etc.). Ao mover um formulário, todos os objetos
que contém são movidos com ele.
Métodos de
objeto
Como funciona a movimentação de objetos
A movimentação de objetos pode ser feita indiferentemente através das funções de arrastar/soltar ou de copiar/colar.
Para mover objetos entre bancos de dados usando arrastar e soltar, deve duplicar sua aplicação 4D.
No caso de movimentação entre bancos, os objetos movimentados podem ser colados ou soltados no mesmo ambiente de
onde provêm (caixa de ferramentas, Explorador, etc.) ou em outras áreas da aplicação. 4D efetuará a ação apropriada em
função do contexto, sempre que seja possível. Por exemplo, é possível soltar um formulário em uma janela do editor de
métodos, neste caso, o nome do formulário é inserido no método.
Durante uma movimentação, se um objeto do mesmo tipo e com o mesmo nome já existe no banco de destino,
automaticamente o objeto existente será substituído pelo objeto movimentado. O Caixa de diàlogo Movendo será
mostrado nesse caso, indicando que os objetos serão substituídos e que poderá mudar essa ação.
Os seguintes mecanismos devem ser considerados:
- 144 -
Visualizações e nível: os objetos de formulário movimentados conservam suas propriedades de localização no
editor, particularmente sua posição nas visualizações ou nos diferentes níveis do formulário.
Formulários herdados: os formulários herdados não se modificam com os formulários fonte, entretanto sua
referência é conservada. Além disso, os formulários herdados são considerados como objetos dependentes e é
possível utilizar como formulário herdado outro formulário (existente) no momento da movimentação (ver o próximo
parágrafo).
Direitos de acesso: os formulários e métodos projeto movimentados não conservam seus direitos de acesso
originais. Automaticamente recebem o valor padrão ("Todos os grupos").
Pastas: quando movimenta um pasta desde a página início do Explorador, a operação inclui a pasta e todo o seu
conteúdo (tabelas, formulários e métodos projeto), que possam representar um volume de dados importante. Durante
este tipo de movimentação, aparece uma caixa de diálogo de alerta para indicar esse funcionamento.
Nota: não é possível arrastar objetos desde a página Lixeira do Explorador.
Objetos dependentes
Um formulário (de tabela ou de projeto) pode referenciar diferentes objetos como listas, imagens, etc. Estes objetos
são chamados de "objetos dependentes".Em alguns casos, seria possível mover todos os objetos dependentes, em
outros casos poderia ser desejável mover apenas alguns deles ou até mesmo nenhum desses objetos.4D permite
controlar o movimento dos objetos dependentes dos formulários através das Preferências de movimentação assim
como através de Caixa de diàlogo Movendo.As preferências de movimentação definem os princípios a serem
aplicados para a movimentação dos objetos dependentes. Pode escolher diferentes opções automáticas para cada
tipo de objeto. Para mais informação, consulte a seção WEB SET HOME PAGE.
A partir de 4D v13, as tabelas referenciadas nos métodos projeto se movem por padrão com os métodos. Pode
desativar este funcionamento pressionando a tecla Maiúscula quando arraste métodos da janela de resultados ou do
Explorador.
- 145 -
Caixa de diàlogo Movendo
Quando mover uma seleção de objetos (por arrastar/soltar ou copiar/pegar) entre dois bancos de dados 4D, ou entre um
banco de dados e uma biblioteca de objetos, você tem a possibilidade de mostrar uma caixa de diálogo que lista todos os
objetos movimentados, assim como as ações que foram associadas a eles no banco de destino.
Essa caixa de diálogo se chama "Diálogo de movimentação" e é mostrada quando ao menos um desses casos abaixo é
verdadeiro:
A opção “Mostrar sempre” está selecionada nas preferências de movimentação (ver a seção WEB SET HOME
PAGE).
Ao menos um objeto movimentado tem um conflito de nome com um objeto no banco de destino.
A ação automática Utilizar outro objeto foi selecionada para pelo menos um tipo de objeto dependente
movimentado.
Além desses casos, se a movimentação dos objetos não causa nenhum conflito, a caixa de diálogo de movimentação não
aparecerá e os objetos serão copiados diretamente.
Esta caixa de diálogo permite visualizar e/ou modificar os parâmetros de movimentação em função do contexto. Inclui duas
páginas: a página principal e a página detalhada. Pode passar de uma página a outra utilizando os botões Seguinte> e
<Anterior.
Página principal
A página principal da caixa de diálogo de movimentação mostra a lista dos objetos movimentados:
Os objetos que tenham conflitos de nome aparecem em negrito e os objetos dependentes aparecem em itálico. As
diferentes colunas indicam o tipo e o nome de cada objeto assim como seu "novo" nome, em outras palavras, seu nome
automático no banco de dados de destino. Pode modificar esse nome na página detalhes (ver o próximo parágrafo).
A opção da coluna "Copiar" indica se o objeto será copiado ou não no banco de destino. Esta opção está ativa: pode
desmarcá-la para resolver rapidamente os conflitos de cópia. Note que se um conflito envolver um objeto específico, sua
referência (nome) é conservada no banco de destino. Pode selecionar/desmarcar todos os itens da lista usando Alt+clique
(Windows) ou Opção+clique (Mac OS) em qualquer item. Também pode utilizar o botão direito do mouse na caixa de
diálogo.
Se os parâmetros de movimentação de configuração não são adequados às suas necessidades, pode clicar diretamente
em Aceitar para mover os objetos.
Nota: se ao menos um objeto for associado à ação Utilizar outro objeto, não é possível proceder com a cópia sem
escolher um objeto alvo no banco de destino (ou então você deve desmarcar esse objeto).
Se deseja modificar certas ações, clique no botão Próximo> para mostrar a página detalhada. Se deseja cancelar a
- 146 -
movimentação dos objetos, clique em Cancelar.
Página de detalhes
A página de detalhes lista os objetos a copiar (aqueles que foram selecionados na página principal) e permite modificar os
parâmetros de movimentação
Pode utilizar o menu pop up da coluna "Ação" para modificar as ações realizadas nos objetos. As ações propostas no menu
dependem do tipo de objeto selecionado e são descritas à continuação.
É possível modificar em uma só operação a ação atribuída para várias linhas. Simplesmente selecione as linhas a modificar,
logo selecione uma nova ação na coluna "Ação" de cada uma das linhas selecionadas. A modificação é realizada em todas
as linhas da seleção, onde for aplicável. Se a ação é incompatível com uma linha, a linha não é modificada e uma caixa de
diálogo de alerta oferecerá informação sobre o problema.
A coluna "Nome novo ou outro objeto" mostra o nome que será dado ao objeto quando seja copiado para o banco de dados
de destino. Pode modificar esse nome (tenha cuidado para não utilizar um nome já existe no banco de destino, isso criaria
um novo conflito de nomes). No caso de objetos dependentes, essa coluna permite igualmente atribuir outro objeto do banco
de destino (quando a ação Utilizar outro objeto estiver selecionada). Por exemplo, no caso da movimentação de um
formulário tabela, pode atribuir uma tabela do banco de dados destino como sendo a tabela a qual esse formulário
pertencerá, ao invés de simplesmente criar uma tabela totalmente nova.
Ações Possíveis
As ações possíveis são as seguintes:
Não criar: o objeto não é copiado. No caso de um objeto dependente, sua referência (nome) é conservada se um
objeto do mesmo nome já existe no banco (nesse caso, é utilizado por um objeto principal). Se nenhum objeto com o
mesmo nome está disponível, a referência é apagada.
Substituir: esta opção é oferecida quando um objeto do mesmo nome e tipo já existe no banco. Nesse caso, o objeto
do banco de dados de destino é substituído pelo objeto do banco de origem.
Criar: o objeto dependente é copiado no banco de destino com suas propriedades (opção oferecida quando não
houver conflitos de nome).
Criar e renomear: esta opção é oferecida quando um objeto do mesmo nome e tipo já existir no banco.
Automaticamente, o objeto é renomeado adicionando um número como sufixo. Nesse caso, pode renomear o objeto
movimentado na coluna "Novo nome ou outro objeto". As referências do objeto são atualizadas no banco de destino.
Utilizar outro objeto: esta opção apenas está disponível para os objetos dependentes. Permite utilizar outro objeto já
presente no banco de destino como referência. Nesse caso, a coluna "Novo nome ou outro objeto" contém a lista de
outros objetos que pode utilizar.
Utilizar a tabela de mesmo nome: esta opção é oferecida quando uma tabela com o mesmo nome já existe no
banco. Nesse caso, a coluna "Novo nome ou outro objeto" contém a lista de tabelas que podem ser utilizadas ao invés
da tabela dependente.
Se os objetos dependentes entre si referenciam a outros objetos, a lista é atualizada em função desses parâmetros.
Se os parâmetros de movimentação são convenientes, clique em Aceitar para continuar com a migração dos objetos.
Clique em <Anterior para voltar à página principal. Se deseja cancelar a movimentação clique em Cancelar.
- 147 -
Propriedades de Movimentacão
A página Movimentação que faz parte das MissingRef permite pré-configurar os deslocamentos de objetos no banco em
modo Desenho. 4D aplica estes parâmetros ao arrastar/colar objetos no banco, quando se utiliza como banco de destino.
Ações padrões durante a cópia de objetos dependentes
Estas opções permitem configurar a movimentação de objetos dependentes, ou seja os objetos associados aos formulários
que se movimentam (ver Visão Geral). Pode definir uma ação para cada tipo de objeto dependente.
Estas ações, por padrão, são aplicadas automaticamente se o movimento de objetos não provocar conflitos e se a opção
Somente em caso de conflito de nome estiver selecionada (ver a próxima seção). Do contrário, essas ações se
selecionarão, por padrão, na caixa de diálogo de movimentação.
As ações Ignorar, Criar (Renomear se for necessário), Criar (Substituir se for necessário) como também Utilizar
outro objeto são oferecidas para cada tipo de objeto. Note que outras ações contextuais mais específicas são propostas
na caixa de Caixa de diàlogo Movendo quando é mostrada. Esta é a descrição destas opções:
Ignorar: um objeto dependente deste tipo nunca se copia no banco de destino. Na caixa de diálogo de movimentação,
a ação Não criar é oferecida como padrão.
Criar (Renomear se for necessário): um objeto dependente deste tipo sempre é copiado no banco de destino. Na
caixa de diálogo de movimentação, a ação Criar é oferecida como padrão se o objeto não existir no banco de
destino.
Em caso de conflito de nome com um objeto do banco de destino, o objeto copiado é renomeado adicionando-se o
sufixo “_X,” de acordo com o princípio aplicado aos objetos principais. Neste caso, a ação Renomear é oferecida
como padrão na caixa de diálogo de movimentação.
Criar (Substituir se for necessário): um objeto dependente deste tipo sempre se copia no banco de destino. Na
caixa de diálogo de movimentação, a ação Criar é oferecida como padrão se o objeto não existir no banco de dados
de destino.
Em caso de conflito de nome com um objeto no banco de destino, o objeto copiado substitui o objeto existente. Neste
caso, a ação Substituir, é oferecida como padrão na caixa de diálogo de movimentação.
Utilizar outro objeto: esta opção provoca a visualização sistemática do diálogo de movimentação, mesmo se a
opção “Mostrar somente em caso de conflito de nome” estiver marcada. Durante o movimento de objetos, deve
designar um objeto do banco de destino a ser utilizado ao invés do objeto dependente copiado.
Nota: estas opções só servem para os objetos dependentes. Para os objetos movimentados, a ação padrão é do tipo Criar
(Substituir se for necessário).
Mostrar a caixa de diálogo de movimentação: este menu configura a visualização da caixa de diálogo de
movimentação.
Quando se seleciona a opção Sempre, a caixa de diálogo aparece toda vez que se movimentar objetos, o que
permite controlar com mais precisão a operação. Se a opção Somente em caso de conflito de nome estiver
selecionada, a caixa de diálogo só aparecerá quando um objeto movimentado (principal ou objeto dependente) tiver
um conflito de nome com um objeto do banco de destino.
- 148 -
Criar uma estrutura de banco de dados
Conceitos Básicos de Bancos de Dados
Editor de estrutura
Inspetor
Criar e modificar Tabelas
Propriedades de Tabela
Gestão de chaves primárias
Criar e modificar Campos
Tipos de campos 4D Updated 15.0
Armazenado em registro, arquivo de dados ou fora do arquivo de dados
Armazenamento externo dos dados
Regras para nomear tabelas e campos
Criar e modificar Índices
Criar e modificar Relações
Tipos de relações
Propriedades de Relações
Exportar e importar definições de estrutura
- 149 -
Conceitos Básicos de Bancos de Dados
Um banco de dados é um conjunto de informação organizada de maneira que possa ser utilizada eficientemente. Um
diretório telefônico é um bom exemplo de um banco de dados. Outros exemplos são um dicionário, um calendário ou um
livro de receitas.
A informação em um banco está organizada em forma de registros. Cada registro contém toda a informação sobre uma pessoa ou um
elemento do banco. Por exemplo, cada registro no diretório telefônico contém um nome, endereço e número telefônico de uma pessoa.
Cada registro contém campos. Um campo é utilizado para armazenar o endereço e outro campo para armazenar o número telefônico da
pessoa. Cada registro contém cada um destes campos e cada registro pode ter informação nestes campos.
O nome de um campo geralmente identifica a informação armazenada no campo. Por exemplo, os campos podem se
chamar Nome, Endereço ou Número telefônico. Cada campo tem um tipo que identifica a classe de informação que pode
ser armazenada: números, datas, caracteres alfanuméricos e outros. Como cada campo contém um tipo específico de
dados, você pode realizar cálculos e outras operações com a informação guardada neles. Por exemplo, pode somar os
números dos campos. Pode comparar a data de um campo com a de outro. Pode mostrar o nome de uma pessoa
(armazenado em um campo) depois de seu sobrenome (armazenado em outro campo) para construir a primeira linha de
uma etiqueta de correio.
O conjunto de registros que utilizam os mesmos campos forma uma tabela. Cada banco de dados pode ter muitas tabelas.
A imagem a seguir mostra como se relacionam estes conceitos.
4D pode reorganizar os registros e realizar cálculos com a informação para torná-la muito mais útil. Por exemplo, 4D pode
calcular os valores totais em um campo e apresentar o total em um relatório. Pode calcular o total de vendas por pessoa e
apresentar um gráfico que compare os resultados das vendas.
Tabelas e campos
4D permite criar desde 1 até 32.767 tabelas por banco de dados. Isso quer dizer que pode criar uma estrutura que se
adapte exatamente às suas necessidades.
Estrutura com somente uma tabela
Alguns bancos de dados utilizam somente uma tabela. É possível utilizar só uma tabela para uma categoria de informação somo funcionários,
empresas ou inventário. É possível ter tantos campos quanto for necessário em uma tabela (até 32.767).
- 150 -
Na imagem anterior, o registro de cada uma das pessoas necessita o mesmo tipo de dados. O banco de dados cresce de acordo ao número de
registros de artistas armazenados.
Estruturas multi-tabelas
Um banco de dados pode armazenar muito mais dados e acessar a informação de forma mais eficiente utilizando mais de
uma tabela. Uma boa regra para levar em consideração é que os diferentes tipos de informação devem ser armazenados
em diferentes tabelas.
Um banco de dados que guarda informação sobre empregados e empresas é um bom exemplo. Os registros dos empregados e as empresas
são armazenados em tabelas diferentes. Se o endereço de uma empresa muda, só é necessário modificar o registro desta empresa. Não é
necessário escrever o novo endereço para todas as pessoas que trabalhem nesta empresa.
Com somente uma tabela, você necessitaria introduzir o endereço em cada registro; com duas tabelas, só é necessário introduzir o endereço
uma vez. Quando se introduz o nome de uma empresa em um registro de um funcionário, 4D pode buscar o registro que corresponda a esta
empresa e mostrar automaticamente o endereço correto.
A imagem a seguir mostra a estrutura de um banco de dados multi-tabelas no qual duas tabelas estão relacionadas. A seta entre o campo
Empresa e o campo Nome representa esta relação.
Os dados de cada empregado são armazenados na tabela [EMPREGADOS]. Os dados sobre as empresas são armazenados separadamente
na tabela [EMPRESAS]
- 151 -
4D é um banco de dados relacional porque pode utilizar múltiplas tabelas e relacioná-las de distintas maneiras. Por exemplo, é possível criar um
relatório para a tabela [EMPREGADOS] que busque na tabela [EMPRESAS] e exiba e imprima automaticamente a informação da empresa
de cada pessoa. As relações entre as tabelas permitem que a informação de ambas as tabelas esteja disponível em um relatório.
Também é possível introduzir dados diretamente nas tabelas relacionadas. Por exemplo, um banco de faturamento pode escrever informação
na tabela [Detalhe] a partir da janela Faturamento. Também é possível escrever dados em uma tabela relacionada utilizando a linguagem 4D.
Às vezes é necessário uma estrutura de multi-tabelas na qual as tabelas não estão diretamente ligadas. Pode ser
conveniente ter um banco de dados armazenando diferentes tipos de informações, tais como uma lista de contatos e uma
tabela de despesas.
4D permite até 32.767 tabelas para cada banco de dados. A tabela pode ter até 32.767 campos. Usando tabelas múltiplas,
virtualmente qualquer tipo de estrutura de banco de dados é possível.
Tabelas relacionadas
Em geral, você necessitará criar estruturas nas quais as tabelas compartam informação sobre seus empregados e suas
empresas. A estrutura do banco, representada a seguir, contém um tabelas [EMPREGADOS] para armazenar as
informações relativas aos empregados e uma tabela [EMPRESAS] para armazenar a informação relativa às empresas.
Ainda que útil, a informação armazenada em cada tabela separadamente não responde completamente a suas
necessidades. Quando se visualiza um registro a partir da tabela [EMPREGADOS], você deve poder acessar a informação
sobre a empresa para qual o empregado trabalha e quando olha um registro da tabela [EMPRESAS], necessita poder ver a
informação sobre os empregados que trabalham para esta empresa.
Para permitir duas tabelas compartir informação desta maneira, as tabelas podem estar relacionadas entre elas, em outras palavras, uma relação
pode ser estabelecida entre os dados de cada tabela.
Em 4D, as relações permitem acessar aos dados armazenados em uma tabela a partir de outra tabela. As tabelas que
compartem informação por meio de uma relação se chamam tabelas relacionadas.
As tabelas relacionadas lhe permitem:
armazenar dados eficientemente,
atualizar os dados em um lugar e ver a alteração refletida em todas as partes onde se utilizam os dados,
ver informação relacionada,
realizar consultas e ordenações em uma tabela, com base nos dados armazenados em outra tabela,
Criar, modificar ou eliminar registros de tabelas relacionadas.
A imagem a seguir mostra uma relação criada entre a tabela [EMPREGADOS] e a tabela [EMPRESAS] no editor de estrutura.
- 152 -
A tabela [EMPREGADOS] contém um registro por pessoa. A tabela [EMPRESAS] contém um registro por empresa. A relação entre estas
duas tabelas lhe permite acessar, introduzir, modificar ou eliminar informação das duas tabelas. Por exemplo:
Quando o registro de um empregado está na tela, você pode ver ou modificar a informação da empresa
correspondente, o endereço, cidade, estado, código postal e o número telefônico da empresa.\
Quando se adiciona a uma nova pessoa, é possível associar o registro da pessoa com o registro da empresa
correspondente (se a empresa já existe no banco de dados) ou criar o registro de uma nova empresa ao mesmo
tempo que cria o registro do empregado. Para mais informação, consulte a seção Propriedades de Relações.
Para cada empresa, é possível modificar a informação de cada uma das pessoas que trabalham nela, nome, cargo,
número telefônico e outros dados. Também pode adicionar um novo registro de pessoal desde o registro da empresa.
Campos Relacionados
Graças aos campos relacionados, os campos que conectam duas tabelas em uma relação, você pode exibir a informação das tabelas
relacionadas. O objetivo principal das relações entre os campos é indicar a 4D quais são os registros atuais de uma tabela de acordo com o
registro atual da outra tabela. As tabelas relacionadas usam dois campos relacionados para identificar os registros correspondentes. No
exemplo anterior, o campo Empresa da tabela [EMPREGADOS] e o campo Nome da tabela [EMPRESAS] relacionam as duas tabelas.O
campo Nome na tabela [EMPRESAS] é o campo chave primária da tabela [EMPRESAS]. Este campo identifica de maneira única cada
registro de empresa. Um campo chave primária deve ter os atributos Indexado e Único. Se o campo chave primária não tem o atributo
Indexado, 4D o atribui automaticamente. O campo Empresa da tabela [EMPREGADOS] é um campo chave externa.
Cada valor do campo chave estrangeira corresponde a um valor exatamente igual ao campo chave primária na tabela relacionada. Neste
exemplo, um valor de campo de chave estrangeira da tabela [EMPREGADOS] coincide exatamente com um valor do campo chave primária
na tabela [EMPRESAS]. O campo chave estrangeira também é indexado, mas seus valores não são únicos (vários empregados poderiam
trabalhar na mesma empresa).
A partir de 4D v14, os campos chaves primária devem ser definidos explicitamente em cada tabela da base.
Os valores do campo chave primária geralmente são afetados diretamente pela base utilizando um número seqüencial gerado por 4D ou por um
método escrito pelo usuário. Tal procedimento garante a unicidade do campo chave. Por exemplo, se o campo chave primária da tabela
[EMPRESAS] é um número seqüencial e não o nome da empresa, é possível que os usuários introduzam várias companhias com o mesmo
nome, mas com endereços diferentes. Da mesma forma, se uma empresa muda de nome, o usuário pode fazer a alteração no banco de dados
sem afetar a relação entre as duas tabelas.
Se o usuário está autorizado a introduzir o valor do campo chave primária, você deve utilizar os atributos Único e Não modificável como
(Armazenado em registro, arquivo de dados ou fora do arquivo de dados) para garantir a unicidade da entrada inicial e evitar que
posteriormente os usuários criem um registro redundante. Se você decidir não utilizar o atributo Não modificável, terá que buscar outra forma
de evitar que os usuários criem registros “órfãos” em qualquer das tabelas relacionadas ao modificar os valores do campo chave primária.
Quando se estabelecem as relações, você pode ler e escrever valores em uma tabela enquanto trabalha na tabela relacionada. Por exemplo,
quando você escreve o nome de uma empresa em um registro de pessoa, 4D busca esta empresa na tabela [EMPRESAS] e mostra o
endereço e o número telefônico no registro da pessoa. Quando você visualiza o registro de uma empresa, 4D busca na tabela
[EMPREGADOS] todos os empregados que trabalham nesta empresa e mostra seus registros no registro da empresa.
Estas relações podem ser chamadas automaticamente (ou seja, sem programação de sua parte) ou você pode optar por
usar relações manuais. Neste último caso, você utiliza os métodos para carregar e descarregar os registros relacionados e
controlar a criação, modificação ou exclusão de registros relacionados. Às vezes as relações manuais são preferíveis em
estruturas complicadas onde haja mais de duas tabelas relacionadas a outra e você necessite controlar a carga e descarga
dos registros relacionados. Você pode escolher usar relações automáticas ao selecionar as propriedades adequadas no
momento em que a relação entre as tabelas está sendo especificada (veja Propriedades de Relações).
- 153 -
Editor de estrutura
Pode acessar o editor dee estrutura com o comando Estrutura no menu Desenho ou clicando no botão
na barra
de ferramentas de 4D.
O editor de estrutura permite controlar a estrutura do banco de dados, as tabelas e suas relações, lhe dá controle sobre as
tabelas, os campos, suas propriedades assim como também sobre as relações entre as tabelas.
O editor de estrutura lhe oferece uma representação gráfica da estrutura de um banco de dados assim como também uma
barra de ferramentas e os menus contextuais necessários para realizar as operações relacionadas com a criação do banco.
Cada tabela está representada por uma imagem no editor de estrutura. As imagens das tabelas mostram os campos da tabelas e seus tipos, em
forma de ícones. Uma barra de informação exibe as características das tabelas e dos campos ao passar o mouse sobre eles.
Uma janela flutuante chamada Inspetor permite visualizar e modificar as propriedades dos objetos da estrutura e do editor
de estrutura. Essa janela está descrita na seção Inspetor.
Barra de informação e Barra de Ferramentas
O editor de estrutura dispõe de uma barra de ferramentas que contém funções como a adição de objetos, como também opções de navegação e
visualização:
A parte inferior da janela do editor é uma barra de informação que mostra os dados em função da área sobre a qual se
passa o cursor: tabela, campo ou relação.
Selecionar um objeto
- 154 -
Para trabalhar com a imagem de um objeto no editor de estrutura, primeiro você deve selecioná-lo. Logo é possível
especificar suas propriedades, movê-lo, redimensioná-lo, excluí-lo, etc. Também é possível selecionar vários objetos do
mesmo tipo simultaneamente com a finalidade, por exemplo, de mostrar ou modificar suas propriedades comuns na palheta
do Inspector. Inclusive é possível selecionar campos de diferentes tabelas.
Para selecionar uma tabela:
1. Clique na imagem da tabela ou Pressione [Tab] ou Shift+[Tab] para selecionar sucessivamente cada tabela da janela
de estrutura. A tabela selecionada está rodeada por uma linha azul. As ações posteriores afetam a tabela selecionada.
Para selecionar um campo ou uma relação:
Clique no campo ou relação.
Quando uma tabela estiver selecionada, pressione as teclas [flecha para cima] ou [fecha para baixo] para
selecionar cada campo da tabela.
Quando uma tabela estiver selecionada, pressione a tecla [Home] ou [End] para selecionar o primeiro ou o último
campo da tabela.
Para selecionar vários objetos do mesmo tipo (tabelas, campos, relações):
Utilize Shift + clique para selecionar vários objetos adjacentes.
Utilize a combinação Ctrl + clique (Windows) ou Comando + clique (Mac OS) para selecionar vários objetos não
adjacentes.
Clique em uma área vazia e trace um retângulo ao redor dos objetos a serem selecionados (seleção de tabelas
unicamente).
Trabalhar com as imagens das tabelas
Pode redimensionar ou mover as imagens das tabelas na janela de estrutura de acordo com suas necessidades.
Movimentar-se pela lista de campos
Quando adiciona campos a uma tabela ou quando diminui o tamanho da tabela, pode haver mais campos na tabela do que
a imagem pode mostrar. Nesse caso, 4D mostra automaticamente um cursor que permite movimentar-se pela lista dos
campos visíveis:
Redimensionar a imagem de uma tabela
Você pode redimensionar a imagem de uma tabela de maneira a, por exemplo, mostrar mais campos ou para reorganizar a
sua tela. Há várias maneiras disponíveis:
Redimensionamento Manual: Clique e arraste o fundo da imagem da tabela ou o canto direito inferior.
Tamanho ótimo: Isso automaticamente redimensiona as tabelas selecionadas ao tamanho que corresponde ao
- 155 -
número exato de campos que contém (não se mostra linhas em branco).
Para apicar o comando Tamanho Ótimo a uma ou mais tabelas:
Selecione o comando Tamanho Ótimo no menu associado com o botão da barra de ferramentas do editor
(esse comando não é ativado se não houver uma tabela selecionada).
Selecione o comando Tamanho Ótimo no menu de edição contextual (clique numa tabela).
Shift+duplo-clique na região do título da tabela que deseja redimensionar. Se repetir essa combinação, a
seguinte sequência é usada: tamanho original -> tamanho ótimo - > contrair.
Contrair: Essa função contrai as tabelas selecionadas de modo a que apenas seus nomes ficam visíveis. Isso é útil
para estruturas muito grandes.
Para aplicar o comando Contrair a uma ou várias tabelas:
Selecione o comando Colapsar no menu de edição contextual (clique na região do título da tabela).
Shift+duplo-clique na região do nome da tabela para redimensionar. Se repetir esse atalho, a seguinte
sequência é utilizada: tamanho original -> tamanho ótimo - >contrair.
Notes:
Um duplo clique normal na região do nome da tabela abre o Inspetor.
Alt (Windows) ou Opção (Mac OS) + duplo clique abre o método trigger da tabela no Editor de Métodos
Ctrl (Windows) ou Comando (Mac OS) + duplo clique abre o Explorador na página de Formulários.
4D Server: Se você redimensionar a imagem da tabela usando o 4D Server, a tabela é redimensionada para todos os
usuários do modo Desenho.
Mover as imagens das Tabelas
Você pode mover as imagens das tabelas de maneira a reagrupá-las por função ou reorganizar a janela de estrutura.
Também pode alinhar as imagens para melhorar a legibilidade da estrutura. As possíveis relações são desenhadas
novamente para que correspondam às novas localizações.
Para mover manualmente a imagem de uma tabela:
1. Clique no nome de uma tabela e a arraste usando o cursor.
Arraste unicamente o nome da tabela. Clicar em outras áreas da imagem de uma tabela pode provocar efeitos
diferentes, como a criação involuntária de relações ou o redimensionamento da imagem de uma tabela.
4D Server: se mover a imagem de uma tabela, a tabela aparece em sua nova localização para todos os usuários do modo
Desenho.
Para alinhar duas ou mais tabelas:
1. Selecione as tabelas a alinhar e escolha uma opção de alinhamento no menu de ferramentas.
Estes comandos apenas estão ativos quando pelo menos duas tabelas estiverem selecionadas.
Funções de Movimento
As funções de movimento específicas facilitam a navegação nas estruturas de grande tamanho:
A roda do mouse permite movimentar-se verticalmente pelos conteúdos da janela do editor (esta ação provoca o
movimento dos campos de uma tabela quando o cursor está sobre a tabela).
A combinação Shift + Roda do mouse permite movimentar-se horizontalmente pelo conteúdo da janela.
- 156 -
Pressionar a tecla Shift ativa a ferramenta "mão" e permite arrastar o conteúdo da janela clicando nas áreas vazias.
Zoom
Pode modificar a escala de visualização da estrutura do banco com a ajuda da ferramenta Zoom da barra de ferramentas
do editor de estrutura. 100% é o valor do zoom logo que se abre o banco. Se existir uma seleção na janela, o zoom é
centrado nessa seleção.
A configuração do zoom é específica para cada usuário. Ela é memorizada quando a janela é fechada.
Nota: uma opção das Preferências permite configurar a renderização gráfica do editor de estrutura durante um zoom. Para
mais informação, consulte a seção Página Estrutura.
Exibir tipos de objetos
O botão Exibir na barra de ferramentas do editor de Estrutura tem um menu associado e permite que você escolha os
objetos a serem exibidos na estrutura de acordo com seu tipo:
Normalmente, todos os objetos são exibidos. Essa propriedade permite que várias representações ou visualizações, da
mais simples até a mais complexa, e oferece uma ferramenta de análise para a estrutura baseado no nível de informação
necessário. As opções são válidas para todas as tabelas e campos. Elas são guardadas quando a janela é fechada, e se
memoriza a opção do usuário. Esconder certos objetos não muda a posição das tabelas.
Quando muitos tipos de campos estão marcados, um operador lógico OU é usado para determinar os objetos a serem
exibidos. Por exemplo, se as opções Campos Invisíveis e Campos não indexados estiverem marcadas, todos os
campos não indexados (visíveis ou não) e todos os campos invisíveis (indexados ou não) serão exibidos.
Tabelas tem prioridade sobre campos: se uma tabela não for exibida, todos os seus campos ficam invisíveis.
Se você adicionar um objeto cujo tipo não está exibido (tabela, campo ou relação), o objeto é exibido no editor, e se
deseja escondê-lo deve novamente selecionar a opção correspondente no menu associado com o botão Exibir.
Ressaltar/Atenuar tabelas por pasta
Pode ocultar grupos de tabelas no editor de estrutura baseado nas pastas definidas em Página Início do Explorador.O
botão Pastas
na barra de ferramentas pode ser utilizado para configurar a visualização das tabelas.
O menu associado ao botão mostra os comandos de gestão de visualização assim como a lista das pastas definidas no
banco de dados. Aparece uma marca de seleção do lado de cada pasta mostrada. Pode modificar a visualização atual
selecionando ou desmarcando uma pasta nesse menu.
Os comandos Ressaltar todas as pastas/Atenuar todas as pastas permitem mostrar/ocultar todas as tabelas das pastas
do banco de dados.
Cada clique no botão
permite inverter a visualização das tabelas: as tabelas mostradas se ocultam e vice-versa.
Quando as tabelas são atenuadas, automaticamente aparecem somente seu contorno na janela de estrutura. Apenas as
tabelas que não estão atenuadas permanecem completamente visíveis.
- 157 -
Nota: Uma opção, acessível em Página Estrutura das Preferências, permite definir a aparência das tabelas atenuadas
(seleção por pasta) no editor de estrutura: atenuado ou invisível. É necessário fechar e voltar a abrir a janela do editor de
estrutura para que essa preferência comece a funcionar.
Personalizar a janela do Editor
A janela do editor de estrutura dispõe de propriedades específicas que podem ser configuradas através do Inspetor.
Para mostrar as propriedades da janela do editor de estrutura, pode:
duplo-clique (ou apenas clicar, se a paleta estiver exibida) em uma área vazia da janela.
clique direito em uma área vazia da janela e escolher o comando Propriedades da estrutura no menu contextual
A janela do Inspetor mostra as propriedades da estrutura:
As seguintes propriedades podem ser definidas:
- 158 -
Imagem de fundo: pode modificar a imagem utilizada no fundo da janela assim como seu formato de visualização.
Para mudar a imagem, clique no botão Abrir, ou dê um clique direito na área de pré-visualização e escolha Abrir... no
menu contextual; logo selecione o arquivo que contém a imagem a ser mostrada. Pode utilizar qualquer formato de
imagem. A imagem seleciona é mostrada imediatamente na área de visualização prévia e na janela do editor.
Para mudar o formato de visualização da imagem, escolha um valor no menu Formato imagem. Os formatos
propostos são os formatos de visualização de imagens padrão do 4D
Para apagar uma imagem personalizada, clique no botão Limpar ou dê um clique direito na área de visualização
prévia e escolha Limpar no menu contextual.
Cor de fundo: pode mudar a cor utilizada no fundo da janela do editor. Clique na área de seleção de cor e escolha
uma cor no menu de seleção.
Fonte padrão: para cambiar a fonte utilizada como padrão automático para a tabela e os nomes dos campos,
escolha uma fonte nesse menu. Pode utilizar o menu Tamanho para modificar o tamanho da fonte como padrão
automático.
Buscar na Estrutura
4D permite realizar pesquisas na janela do editor de estrutura. As buscas podem ser realizadas pelos elementos:
nomes das tabelas e/ou nomes dos campos
números de tabelas.
Para realizar uma busca, introduza a string ou o número de tabela a procurar na área de busca da barra de ferramentas.
Quando você entra qualquer valor nessa área, automaticamente aparece uma barra de opções, o que permite aumentar o
alcance e a precisão da busca:
O menu Buscar permite definir o alcance da pesquisa (tabelas e campos ou apenas tabelas).
O menu Opções permite definir o tipo de pesquisa:
Conteúdo (padrão automático): a pesquisa de “ta” encontrará “Tabela,” “Carta,” “Computador,” etc.
Começa com: a pesquisa de “pa” encontrará “papel”, “pago” mas não “reparação.”
Número: a pesquisa de “2” encontrará as tabelas número 2, 12, 20, 21, etc.
A pesquisa é realizada em tempo real, a medida que são introduzidos os valores. As tabelas e/ou campos encontrados pela
pesquisa são destacados. Se a procura não encontra nada, a área de busca fica vermelha. Para sair do modo "busca",
clique no botão
na barra de opções de busca ou apague todos os caracteres da área de busca.
- 159 -
Inspetor
As propriedades dos objetos do editor de estrutura (tabelas, campos e relações) podem ser visualizadas e modificadas
através da palheta do Inspetor:
Esta paleta aparece quando realiza um duplo clique sobre um objeto. Quando é mostrada, seu conteúdo se atualizada
dinamicamente em função dos objetos selecionados.
O inspetor mostra as propriedades globais da janela do editor de estrutura quando clica numa área vazia da janela (ver o
parágrafo "Personalizar o fundo da janela do editor" na seção Editor de estrutura).
As diferentes áreas da paleta podem ser expandidas ou contraídas com um clique sobre os ícones triangulares para mostrar
ou ocultar a informação correspondente:
- 160 -
Podem ser usados diversos atalhos de teclado:
Shift+clique no título de uma área contraída expande a área e contrai as outras áreas.
Alt (Windows) ou Opção (Mac OS) + clique no título de uma área contraída expande todas as áreas.
Alt (Windows) ou Opção (Mac OS) + clique no título de uma área expandida contrai todas as áreas.
Ao fechar a janela, 4D memoriza a posição da paleta e o estado expandido/contraído de suas áreas.
- 161 -
Criar e modificar Tabelas
Você pode criar tabelas a qualquer momento. 4D nomeia a primeira tabela de um novo banco [Tabela_1] e logo nomeia
seqüencialmente as tabelas adicionais, até [Tabela_32767]. É possível renomear as tabelas de acordo com suas
necessidades.
É possível excluir as tabelas obsoletas ou criadas por equivocação. Esta eliminação pode ser permanente ou não. Tenha cuidado, se a
eliminação é permanente, os dados armazenados na tabela também serão excluídos. Também é possível excluir uma tabela a partir dos editores
do modo Aplicação, tornando-a invisível.
Você pode definir triggers e atributos para cada tabela se necessário. Essas propriedades estão descritas em
Propriedades de Tabela.
Criar uma tabela
É possível criar uma nova tabela diretamente na janela de estrutura ou através de uma caixa de diálogo. A criação direta é muito mais rápida; mas a
criação utilizando a caixa de diálogo lhe permite especificar certos parâmetros da tabela e cancelar a operação quando seja necessário. Também é
possível criar tabelas utilizando copiar-colar.
Para criar uma nova tabela diretamente:
1. Clique direito na área vazia da janela do editor de estrutura, logo escolha Adicionar tabela... no menu contextual.
OU
No menu de adição de objetos da barra de ferramentas do editor de estrutura, escolha a opção Tabela:
4D cria diretamente a tabela no editor de estrutura. Logo é possível alterar seu nome, adicionar campos, etc.
Nota: Se você deseja colocar a tabela em uma pasta específica, deve utilizar Página Início do Explorador.
Para criar uma nova tabela utilizando a caixa de diálogo “Nova tabela”:
1. Selecione Novo > Tabela... no menu Arquivo (ou clique no botão Novo da barra de ferramentas de 4D).
OU
Em Página Tabelas do Explorador, clique no botão adicionar .
A caixa de diálogo "Nova Tabela" aparece:
2. (Opcional) Modifique o nome da tabela a ser criada.
Para maiores informações sobre as regras de nomes, consulte Regras para nomear tabelas e campos.
3. (Opcional) Especifique a pasta na qual você deseja colocar a nova tabela.
Automaticamente, a tabela está localizada no primeiro nível da hierarquia de pastas (“Nível superior”): Para maiores
informações sobre pastas de objetos, consulte o parágrafo Página Início.
4. Clique no botão OK.
Se quiser cancelar a operação, clique no botão Cancelar.
4D cria a imagem de uma nova tabela que se converte na imagem selecionada na janela do editor de estrutura.
Nota: a partir de 4D v14, toda nova tabela criada na base contém um campo chave primária por padrão. Para obter mais
informação ao respeito, consulte Default primary key field.
Parar criar uma nova tabela com copiar/colar
1. Selecione as tabelas a serem duplicadas e escolha o comando "copiar" (no menu 4D Editar, no menu do botão direito
do mouse ou usando o atalho Ctrl+C/Command+C no Mac).
2. Escolha o comando Colar no menu Editar, no menu do botão direito do mouse ou usando o atalho
- 162 -
Ctrl+V/Command+V (no Mac).
A tabela é colada com todos os seus campos. É renomeada automaticamente como “Copia(X)_de_NomeTabela,”
onde NomeTabela é o nome original da tabela e X ºe o número de cópias da tabela.
Renomear uma tabela
É possível renomear uma tabela a qualquer momento. Se você utilizou o nome anterior da tabela em um método, 4D efetua a alteração de
nome automaticamente sempre e quando o método estiver fechado. Se o método estiver aberto, você deverá realizar a alteração.
Cada nome de tabela deve ser único no banco.
É possível renomear uma tabela diretamente no editor de estrutura, no Explorador ou através do Inspetor.
Para renomear uma tabela diretamente (editor de estrutura ou página Tabelas do Explorador):
1. Clique duas vezes no nome da tabela (se a tabela já foi selecionada, clique apenas uma vez).
Passa ao modo edição:
2. Introduza o novo nome e clique fora da tabela.
Para renomear uma tabela utilizando Inspetor:
1. Duplo-clique no nome da tabela.
Ou
Clique direito na imagem da tabela, e depois selecione Propriedades da tabela... no menu contextual.
Ou
No Explorador, duplo-clique no nome da tabela na página Tabelas.
4D mostra o nome e as propriedades da tabela selecionada na palheta Inspetor. A palheta também indica o número
da tabela. Se o Inspetor já estiver aberto mas mostrar as propriedades de outra tabela ou objeto, selecione a imagem
da tabela que deseja mostrar e a palheta mostrará suas propriedades.
2. Introduza o novo nome na área “Nome”.
O novo nome se aplica de imediato.
Nota: para conhecer as regras para nomear tabelas, consulte Regras para nomear tabelas e campos.
Eliminar uma Tabela
Você pode excluir tabelas de seus bancos de dados.
Esta operação pode ser efetuada através do motor SQL de 4D ou através do editor de estrutura.
Para maiores informações sobre a utilização de instruções SQL em 4D, consulte o manual Guia de referência SQL 4D (MissingRef).
Existem duas formas de excluir uma tabela em 4D: exclusão definitiva (a tabela e seus dados são realmente excluído do banco) e exclusão não definitiva (a tabela é
colocada na Página Lixeira e pode ser recuperada posteriormente).
Eliminar permanentemente
Para excluir definitivamente uma ou mais tabelas do banco a partir do editor de estrutura:
1. Selecione a(s) tabela(s) a serem excluída(s) e logo escolha o comando Excluir no menu Edição de 4D.
OU
Escolha o comando Excluir no menu contextual (botão direito do mouse) da tabela. Uma caixa de diálogo de alerta lhe
pedirá para confirmar a operação:
Se você clica em OK, 4D realiza as seguintes operações:
A tabela ou campo é excluído definitivamente da estrutura. Todos os dados associados a tabela ou o campo são excluídos
definitivamente do arquivo de dados
- 163 -
Todo trigger associado à tabela é excluído
Os formulários tabela associados à tabela se transformam em formulários projeto e são localizados na Lixeira do
Explorador (consulte Página Lixeira).
Exclusão não permanente
A exclusão não definitiva de uma tabela consiste em colocá-la na Lixeira do banco ( a qual pode ser acessada através do Explorador), tal como os
mecanismos de excluir arquivos implementados por Windows e Mac OS.
A tabela não aparece mais nos editores 4D e seus conteúdos se tornam inacessíveis mas podem ser recuperados sempre e quando não se esvazie
a Lixeira.
Para colocar uma ou mais tabelas na Lixeira a partir do editor de estrutura:
1. Escolha o comando Enviar para a lixeira no menu contextual da tabela.
A tabela vai imediatamente para a Lixeira.
OU
Selecione a(s) tabela(s) a serem excluídas e logo pressione a tecla Del ou Backspace.
Em ambos os casos, aparece uma caixa de diálogo de confirmação.
2. Se clicar OK, a tabela vai para a Lixeira. Ela pode ser recuperada a qualquer momento de Página Lixeira.
Número de tabelas eliminadas
Quando se exclui uma tabela, as outras tabelas do banco não são renumeradas, para evitar comprometer a estabilidade do banco. Portanto é
possível ter, por exemplo, um banco com três tabelas numeradas 2, 4 e 5.
Note que os números das tabelas excluídas permanentemente são reutilizados ao criar novas tabelas posteriormente.
- 164 -
Propriedades de Tabela
É possível configurar várias propriedades para as tabelas utilizando Inspetor ou para algumas tabelas, usar o menu
contextual das tabelas (clique com o botão direito).
Triggers
Um trigger é um método que é executado automaticamente quando ocorrem certos eventos relacionados com a tabela.
Estes eventos são:
Ao guardar um registro novo,
Ao guardar um registro existente,
Ao excluir um registro,
Os eventos triggers podem ser configurados em Inspetor ou através do menu contextual associado com a tabela (clique
direito na área de título da tabela):
Marque cada evento para o qual deseja ativar o trigger.
É possível acessar diretamente ao trigger de uma tabela através da janela de estrutura clicando no botão Editar... do
Inspetor ou selecionando Editar método... no sub-menu contextual. Para maiores informações sobre triggers, consulte a
seção Tipos de métodos..
Notes:
também é possível criar e visualizar os triggers a partir de Página Métodos do Explorador.
A barra de informação de Editor de estrutura indica os triggers ativados para cada tabela.
O trigger que introduza no editor de métodos não se executará quando os eventos selecionados são detectados.
Atributos
É possível definir diferentes atributos para personalizar a aparência e o comportamento geral da tabela.
Invisível
Esta opção permite fazer uma tabela invisível no modo Aplicação e para os plug-ins. É possível ativar esta opção para as
tabelas utilitárias ou para as tabelas que não estão sendo utilizadas temporariamente.
Tornar uma tabela invisível lhe permite limitar as operações que um usuário pode realizar sobre a tabela e seus campos.
Uma vez uma tabela é invisível, não aparece mais nos editores nem na maioria de caixas de diálogo que aparecem no
ambiente Aplicação. Da mesma forma não podem ser utilizadas pelos plug-ins.
Os editores e caixas de diálogo no ambiente Aplicação incluem:
- 165 -
todos os editores de pesquisa (consultar Procurar registros),
Editor de ordenação,
Editor etiquetas,
Editor de relatórios rápidos,
caixas de diálogo Exportar e importar dados,
Editor de fórmulas.
Em cada um destes editores, o usuário não pode ver ou escolher a tabela ou um de seus campos. Por exemplo, o usuário não pode incluir
campos de uma tabela invisível em um relatório ou em uma etiqueta.
Nota:
Quando se utilizam estes editores, os usuários têm a opção de salvar no disco as características de pesquisas e
ordenações, previamente criadas. Neste caso, as tabelas ou campos especificados como invisíveis podem ser utilizados
posteriormente. Além do mais, os usuários podem escrever os nomes das tabelas e campos invisíveis na caixa de diálogo .
As tabelas invisíveis e seus campos são exibidos em itálico na janela do editor de estrutura.
Definir a cor da imagem de uma tabela
É possível atribuir uma cor a cada tabela. O uso de cores ajuda a organizar a estrutura de um banco com muitas tabelas. Por
exemplo, é possível utilizar uma cor para todas as tabelas relacionas com os clientes e outra cor para as tabelas
relacionadas com o inventário.
Nota: Também é possível atribuir uma cor a cada campo (ver ) e a cada relação (ver Definição).
Para definir a cor de uma ou várias tabelas, efetue suas seleções e escolha uma cor utilizando:
o botão Cor
na barra de ferramentas do editor,
o comando Cor no menu contextual das tabelas (botão direito do mouse),
a opção Cor em Inspetor.
A opção Automático pode ser usada para aplicar os padrões de cores automáticos a sua tabela.
Registros eliminados definitivamente
Esta opção permite otimizar a eliminação de uma seleção de registros realizada com a ajuda do comando DELETE
SELECTION.
Quando 4D elimina uma seleção, os marcadores dos registros também são apagados. Um marcador de registro é um
cabeçalho associado ao registro que contém a informação relativa a esse registro. A eliminação dos marcadores e dos
registros é mais lenta que a eliminação dos recursos. Em alguns casos, pode ser conveniente não eliminar automaticamente
os marcadores dos registros.
Esta opção permite definir o tipo de eliminação que deseja usar. Para acelerar a eliminação de uma grande seleção usando
o comando DELETE SELECTION, desmarque a opção Registros apagados definitivamente. Os marcadores de
registros não serão eliminados. Esta opção não pode ser definida por programação.
Ativar replicação
Quando esta opção está marcada, 4D gera, durante a utilização da tabela, a informação necessária para a replicação dos
registros da tabela (baseada particularmente na chave primária da tabela). A função de replicação dos registros permite
sincronizar os dados de dois bancos de dados 4D para maior segurança.
Logo que essa opção estiver ativa, os mecanismos de replicação devem ser implementados usando os comandos
específicos da linguagem SQL de 4D ou através do protocolo HTTP. Para mais informação sobre essa opção e sobre os
mecanismos de replicação dos registros através do SQL, consulte a seção Replicação via SQL.
Para mais informações sobre a replicação através do HTTP, consulte URL 4DSYNC/.
Como padrão, esta opção não está selecionada.Para que ela esteja disponível, é necessário especificar uma chave
primária para a tabela a ser replicada. Do contrário, a opção está em cinza. 4D permite definir a chave primária de uma
tabela no editor de estrutura (ver a seguir).
Expor com o serviço 4D Mobile
Esta opção controla se a tabela se encontra exposta no contexto das solicitações 4D Mobile enviadas a base 4D. Por
- 166 -
padrão, todas as tabelas se expõem em 4D Mobile.
Por razões de segurança, é possível que deseje somente expor certas tabelas de sua base as chamadas 4D Mobile. Por
exemplo, foi criada uma tabela [Usuários] que armazena os nomes de usuário e senhas, seria melhor não expor.
Se não deseja expor uma tabela (nem nenhum dos campos que contém), desative a opção Expor com o serviço 4D
Mobile para a tabela.
Nota: também pode estabelecer esta opção no nível de cada campo da tabela, ver Armazenado em registro, arquivo de
dados ou fora do arquivo de dados.
Esta opção pode ser utilizada no contexto da funcionalidade "4D Mobile". Para obter mais informação, consulte o manual
[#title id="3388"/].
Incluir no arquivo de histórico
Por defecto, esta opción está seleccionada para todas las nuevas tablas creadas en 4D v14 y para todas las tablas en
bases de datos convertidas.
Marque esta opción para que las operaciones realizadas en los datos de la tabla se incluyan en el archivo de registro de la
base de datos
Marque esta opción para que las operaciones realizadas en los datos de la tabla se incluyan en el archivo de registro de la
base de datos (cuando se genera). Esta opción generalmente debe ser seleccionada para la mayoría de las tablas. Sin
embargo, por razones de optimización, puede deseleccionarla, por ejemplo para tablas temporales o tablas utilizadas para
la importación de datos.
Nota: esta opción se pone gris cuando la tabla no tiene llave primaria.
Es importante tener en cuenta que esta opción sólo indica que los datos de la tabla deben registrarse en el historial si la
database usa un archivo de historial, no activa el procedimiento de historial a nivel de la base de datos (ver Gestão do
arquivo de histórico).
Mensagens de alerta
4D muestra un icono de advertencia a la derecha de la opción Incluir en archivo de historial cuando las condiciones
necesarias se cumplen.
Mientras este icono se muestre, el historial no se activa. Puede colocar el puntero del ratón sobre el icono para ver el motivo
de la alerta:
Pueden aparecer los siguientes mensajes:
Mensaje
Causa
Correción necesaria
Esperando para crear
una llave primaria
Imposible registrar operaciones en el
historial si la tabla no tiene una llave
primaria (nueva regla en 4D v14)
Crear una llave primaria en la tabla utilizando SQL
o el menú contextual de la tabla
Esperando que los
valores de la llave
primaria se fijen
Esperando para
activar la opción usar
archivo de historial
Los valores de la llave primaria han sido
verificados e incluyen anomalías
La opción global para activación del
historial no está seleccionada
Retire todo duplicado o valores nulos en los
registros para el campo (o utilice otra llave
primaria)
Compruebe la opción " Uso del archivo de historial'
en la página Backup/Configuración de la
configuración de la base de datos
Comentários
A área Comentários de Inspetor permite armazenar informação adicional sobre a tabela. Estes comentários estão
disponíveis para todos os desenvolvedores.
Note que cada campo e cada relação tem sua própria área de comentários.
SQL
A área SQL de Inspetor inclui o menu “Esquema” e uma área de informação.
O menu “Esquema” lista todos os esquemas SQL definidos no banco. Pode utilizar este menu para definir o esquema
ao qual pertence a tabela (também é possível modificar essa propriedade através dos comandos SQL). Cada banco
tem ao menos um esquema, chamado DEFAULT_SCHEMA. Como padrão, todas as tabelas pertencem a este
esquema. Para mais informação sobre os esquemas SQL, consulte Esquemas no Guia de referência SQL de 4D.
A área de informação indica se o nome da tabela respeita as regras de nomenclatura SQL (por exemplo, ao contrário
de 4D, SQL não permite que um nome de campo contenha espaços).
- 167 -
Definir ou eliminar uma chave primária
Em 4D, é possível administrar a chave primária de uma tabela diretamente no editor da estrutura.
Em SQL, uma chave primária identifica as colunas (ou campos) utilizados para especificar de forma única os registros
(linhas) de uma tabela.
A definição de uma chave primária é necessária para a função de replicação dos registros de uma tabela de 4D. Em SQL, a
chave primária é definida utilizando a cláusula PRIMARY KEY seguida da lista de colunas (ver Chave primária no Guia de
referência SQL de 4D).
É possível criar e eliminar as chaves primárias diretamente utilizando o menu contextual (botão direito do mouse) do editor
de estrutura.
Para criar uma chave primária:
1. Selecione o campo ou campos que compõe a chave primária da tabela.
2. Dê um clique direito e selecione Criar chave primária no menu contextual:
Os campos incluídos na chave primária aparecem subscritos no editor e sua descrição SQL mostra a palavra chave
PRIMARY KEY.
O campo ou os campos que pertencem à chave primária não podem conter valores duplicados. Se os valores duplicados já
existem nos registros da tabela, aparecerá uma caixa de diálogo de advertência para indicar que não é possível criar a
chave por isso.
Nota: as colunas que pertencem à chave primária não aceitam valores NULL.
Para apagar a chave primária de uma tabela.
Clique com o botão direito sobre a tabela que contém a chave primária e escolha Eliminar a chave primária no menu
contextual:
- 168 -
1.
Aparece uma caixa de diálogo de confirmação. Clique em Aceitar para eliminar a chave primária.
Default primary key field
Starting with 4D v14, every new table created in the database contains a primary key by default:
This field, named "ID" by default, is of the Longint type, and has, in particular, the following attributes:
Unique,
Reject NULL value input,
Autoincrement,
Automatic index
Note: On the Structure Page of the Preferences for the 4D application, you can modify the name and type of the primary
keys that are created by default.
You can use this field as is, or change its name and/or its properties if you want (for example, you may want to use an UUID
field). You can also delete it if you want to use another field (or fields) as primary key(s).
However, it is strongly recommended to keep at least one primary key in each 4D table.
Note: Default primary keys are not added to tables that are created using the SQL CREATE TABLE command, or tables
that are imported into the database.
Definir uma chave primária
Para crear una llave primaria desde el editor de estructura:
1. Seleccione el o los campo(s) que componen la llave primaria de la tabla.
2. Haga clic derecho y seleccione Crear la llave primaria en el menú contextual:
- 169 -
No puede tener más de una llave primaria para cada tabla. Si ya se ha especificado una llave primaria, aparecerá un
caja de diálogo de alerta indicando que se desactivará la llave primaria existente.
Se crea la llave principal de inmediato. Los campos incluidos en la clave principal se subrayan en el editor y su descripción
SQL muestra la palabra clave PRIMARY KEY.
El o los campo(s) que pertenece a la llave primaria no puede contener valores duplicados. Si ya existen valores duplicados
en los registros de la tabla, un caja de diálogo de alerta aparece para indicar que no es posible crear la llave debido a esto.
Nota: la o las columna(s) que pertenecen a la llave primaria no aceptan valores NULL.
Eliminar a chave primária
Para eliminar uma chave primária de uma tabela:
1. Faça clique direito sobre a tabela que contém a chave primária e selecione Suprimir chave primária no menu
contextual:
- 170 -
Aparecerá uma caixa de diálogo de confirmação. Faça clique em Aceitar para eliminar a chave primária.
- 171 -
Gestão de chaves primárias
O "Gestor de chaves primárias" é um assistente destinado a facilitar a solução de erros relacionados com a presença de
tabelas sem chaves primárias, em particular no contexto de uma base com histórico:
Pode utilizar este assistente para:
diagnosticar a compatibilidade de cada tabela da base com o mecanismo de histórico,
propor uma correção para cada tabela que se encontre que não seja compatível em particular mediante a criação de
uma chave primária.
Nota: O gestor de chaves primárias também se oferece como um recipiente da versão 13 que pode utilizar para preparar
bases de dados 4D v13 para a conversão a v14.
Acessar ao assistente
Há duas formas de mostrar a janela do Gestor de chaves primárias:
desde o Janela de erro de chaves primária: faça clique no botão Utilizar assistente para mostrar a janela de
assistente.
Nota: O assistente se mostra no modo Desenho. Se a base se inicia em Modo Aplicação, o assistente não aparece
imediatamente e deverá passar a modo Desenho.
desde o Editor de estrutura: faça clique no botão
na barra de ferramentas desta janela mostra o assistente.
Utilizando o assistente
A janela Gestor de chaves primárias mostra uma linha para cada tabela na base.
Nota: O assistente não leva em conta as tabelas na Caixa.
O ícone no cabeçalho de cada linha indica se a tabela requer a atenção do usuário:
- 172 -
Aceitar
Sem chave
primária,
campo(s)
escolhido(s)
Sem chave
primária, sem
campo(s)
escolhido(s)
Atenção
Uma chave primária válida se define para a tabela.
A tabela não tem uma chave primária, mas contém pelo
menos um campo que poderia ser convertido em chave
primária.
A tabela não tem uma chave primária, mas contém pelo
menos um campo que poderia ser convertido em chave
primária (será necessário criar um campo chave primária).
A tabela não tem uma chave primária e não se registra no
histórico (opção "Incluir em arquivo de histórico" desativada
para a tabela).
É possível ocultar as tabelas que tem
determinado intervalo desmarcando
a opção Mostrar advertências.
Para cada tabela registrada no histórico que não tenha uma chave primária, o assistente mostra um menu para configurar a
ação a realizar. Pode escolher das seguintes opções:
Ignorar: não modifica a tabela. Os erros não se corrigem e o estado da tabela não muda. Utilize esta opção se deseja
intervir posteriormente ou se quiser criar a chave primária fora do assistente.
Esta opção é necessária particularmente, quando você quer criar uma chave primária baseada em vários campos na
tabela.
Utilizar campo existente (só é mostrado para as tabelas com pelo menos um campo escolhido para ser uma chave
primária): designa um dos campos da tabela como chave primária. Quando se escolhe esta opção, o assistente
sugere o campo mais adequado de forma pré determinada.
Se deseja utilizar outro campo ou se o assistente não pode identificar um campo adequado (o assistente mostra "
Selecione um campo"), faça clique no segundo menu para ver a lista de campos escolhidos.
Criar um novo campo: cria um novo campo chave primária na tabela. Este campo terá os mesmos atributos como o
adicionado por padrão ao momento da criação de uma nova tabela (ver Default primary key field).
Por padrão, o assistente propõe a criação de um campo de tipo Inteiro longo, chamado "ID". Pode modificar o nome e
o tipo de padrão dos campos chave primária utilizando Página Estrutura nas Preferências da aplicação 4D. Pode
acessar a página de Preferências fazendo clique no botão
na janela do Gestor de chaves primárias.
Também pode mudar o nome e/ou o tipo de campo diretamente na janela do Gestor de chaves primárias.
Não registrar esta tabela: desmarca a opção "Incluir no arquivo de histórico" para a tabela. Pode escolher esta
opção no caso das tabelas temporais (ver Incluir no arquivo de histórico ). Depois de validar esta caixa de diálogo,
se atribui um estado “Advertência” a tabela.
Uma vez realizada a configuração, faça clique em Aplicar... para aplicar as mudanças a base de dados ou Fechar para
fechar o quadro de diálogo sem modificar a base.
Ao fazer clique em Aplicar... , aparece um diálogo de confirmação que lista as operações a realizar, e você pode Aplicar ou
Cancelar a operação:
Foi designado os campos existentes como chaves primárias, 4D verifica cada tabela para ter certeza de que seus dados
existentes respeitam as normas relativas a unicidade e os valores nulos para este tipo de campo. Se, por exemplo, um
campo contém valores duplicados ou valores nulos, é gerado um erro:
- 173 -
Terá que encontrar e eliminar estas anomalias antes de que possa habilitar o histórico de dados.
Nota: para facilitar a correção de erros relacionados com as chaves principais, os valores de chave principal se mostram no
Análise de atividade do Centro de Manutenção e Segurança.
- 174 -
Criar e modificar Campos
Para cada tabela, você deve criar os campos que vão acolher os dados que você deseja armazenar e administrar.
Quando você cria um campo, lhe atribui um tipo de campo que descreve a classe de informação que será armazenada no campo. 4D utiliza o tipo de
campo para realizar diferente operações de acordo ao tipo de dados. Por exemplo, se um campo contém uma data, você deverá criá-lo com o tipo
Data. Dessa maneira, 4D pode calcular valores de datas, tais como tempo de serviço ou datas de vencimento. Adicionalmente, 4D pode ordenar
os registros cronologicamente utilizando as datas neste campo. Os tipos de campo são descritos em Tipos de campos 4D.
Além do tipo de campo, cada campo em uma tabela pode ter outras propriedades. Estas propriedades determinam as condições para introduzir, ver
ou modificar dados nos campos. São descritos em Armazenado em registro, arquivo de dados ou fora do arquivo de dados.
Depois de criar um campo, você pode modificar o seu tipo ou propriedades ou inclusive excluí-lo.
Criar um campo
Você pode criar até 32767 campos em uma tabela. Você pode criar um novo campo através dos comandos padrões de
criação ou copiar-colar.
Para criar um campo:
1. Clique com o botão direito sobre uma tabela, logo selecione Adicionar campo ou Inserir campo no menu contextual.
OU
Faça um clique duplo em uma linha vazia, debaixo do último nome de campo da tabela.
OU
Selecione uma tabela, logo no menu de adição de objetos da barra de ferramentas do editor, escolha a opção
Campo:
2. (opcional) Para rapidamente criar campos adicionais, você pode apertar o ENTER quantas vezes quanto for
necessário.
Então os campos são adicionados a tabela e 4D os seleciona. Automaticamente, o campo se chama Campo_X onde X
corresponde ao numero atual do campo (se foram excluídos esses campos, este número pode não corresponder ao número
de campos da tabela, ver o parágrafo “Número de campos excluídos” abaixo).
Você também pode modificar seus nomes, definir suas propriedades, etc. (ver os próximos parágrafos).
Para criar um campo utilizando copiar-colar:
1. Selecione o(s) campo(s) a serem duplicados e escolha o comando padrão “copiar” (menu Editar de 4D, menu
contextual ou atalho Ctrl+C/Comando+C).
2. Selecione a tabela onde você deseja adicionar os novos campos e logo escolha o comando Colar no menu Editar, no menu contextual
ou utilizando o atalho Ctrl+V/Comando+V. .
O campo é duplicado conservando seu tipo e suas propriedades. Se existe um campo com o mesmo nome na tabela
de destino, é renomeado por padrão “Cópia_de_NomeCampo”, onde NomeCampo é o nome original do campo. Um
número adicional é adicionado se você fizer várias cópias do mesmo campo.
Nota: Propriedades de indexação não são mantidas quando campos são criados através de copiar/colar.
- 175 -
Renomear um Campo
É possível renomear os campos a qualquer momento; 4D atualizará os nomes dos campos em formulários, métodos e
arquivos. Atenção, se os métodos foram abertos no editor de métodos no momento da alteração do nome de um campo,
eles devem ser fechados e abertos novamente para que o nome do campo seja atualizado.
Cada nome de campo deve ser único em sua tabela.
É possível renomear um campo diretamente no editor de estrutura e no Explorador, ou utilizando a palheta do Inspetor.
Para renomear um campo diretamente (Editor de estrutura ou Página Tabelas do Explorador):
1. Clique duas vezes no nome do campo (se o campo já estiver selecionado, clique uma vez).
OU
(Editor de estrutura unicamente) Selecione o campo a ser renomeado e pressioneEnter.
Ele mudar para o modo de editar.
2. Entre o novo nome e clique fora do campo.
Para renomear um campo utilizando o Inspector de estrutura:
1. Faça duplo clique no campo.
OU
Clique com o botão direito no campo, logo selecione Propriedades do campo... no menu contextual.
OU
No Explorador, faça duplo clique no nome do campo na página Tabelas.
4D mostra o nome e as propriedades do campo selecionado em Inspetor. A palheta também indica o número da
tabela e do campo.
Se a palheta Inspetor já estiver aberta mas mostrando as propriedades de outro campo ou objeto, selecione o campo
desejado para que a palheta mostre suas propriedades.
2. Entre o novo nome na área "Nome".
O novo nome se aplica imediatamente.
Para maiores informações sobre as regras para nomear campos, consulte Regras para nomear tabelas e campos.
Reordenar os campos
4D permite modificar a ordem na qual aparecem os campos na tabelas no editor de estrutura. A modificação da ordem dos campos nas tabelas
pode, por exemplo, facilitar a análise da estrutura.
Note que a reorganização dos campos no editor de estrutura não influencia em sua visualização no outros editores da aplicação. Efetivamente, 4D sempre mostra
os campos na ordem de criação (inclusive quando se utiliza o comando Inserir campo) – exceto no caso do Explorador, onde os objetos são exibidos em ordem
alfabética.
Existem duas formas de modificar a ordem dos campos:
Reorganizar manualmente o conteúdo de uma tabela arrastando e soltando seus campos. Para fazer isto, simplesmente pressione a tecla Alt
(Windows) ou Opção (Mac OS) – o cursor se transforma em uma mão – e mova o campo para onde desejar:
A ordenação personalizada efetuada desta maneira é memorizada e pode ser aplicada novamente se for necessário utilizando o comando
Personalizado do menu Ordenar (ver a seguir).
Aplicar um critério de ordenação. Você dispõe de vários critérios de ordenação disponíveis utilizando o sub-menu Ordenar do botão de
ferramentas do editor:
- 176 -
Quando escolhe uma opção, o critério se aplica a todas as tabelas selecionadas na janela. Este menu está inativo quando nenhuma tabela
está selecionada.
Igualmente o menu indica o critério aplicado atualmente com uma marca de seleção. Várias marcas de seleção são exibidas quando se
utilizam diferentes critérios na seleção de tabelas.
É possível selecionar um critério de ordenação a seguir:
alfabético: os campos são ordenados alfabeticamente em ordem crescente
tipo: exibe os campos ordenados em função do tipo (tipos por ordem alfabética crescente).
campos indexados: exibe primeiro os campos indexados
campos relacionados: exibe primeiro as chaves primárias e logo as chaves estrangeiras.
Visibilidade: são exibidos primeiro os campos visíveis.
Criação: os campos são exibidos em função da ordem de criação (ordem padrão).
Personalizado: não se aplica nenhum critério de ordenação automática. Esta opção restaura a ordenação prévia efetuada
manualmente por arrastar e soltar. Se não foi efetuado arrastar e soltar antes, esta opção não terá efeito.
Eliminar um campo
Você pode eliminar campos das tabelas. Entretanto, isso não pode ser revertido.
Essa operação pode ser feita através da máquina SQL de 4D ou através do editor de Estrutura.
Para mais informações sobre o uso de SQL em 4D, consulte o manual de referência de SQL 4D
Para apagar um ou mais campos no banco de dados usando o editor de Estrutura
1. Selecione os campos a serem eliminados.
Pode selecionar simultaneamente os campos de várias tabelas diferentes.
2. Selecione o comando Apagar no menu Editar de 4D.
Ou
Selecione Apagar no menu contextual (botão direito do mouse) da tabela.
Ou
Pressione a tecla Delou Back.
Uma caixa de diálogo de alerta pede para confirmar a operação.
Se clicar no botão Aceitar, o campo se elimina da estrutura. Todos os dados asociados ao campo são borrados do
arquivo de dados.
Número dos campos eliminados
Quando se elimina um campo, os outros campos da tabela não são renumerados, para não comprometer a estabilidade do
banco. Portanto, é possível ter uma tabela com quatro campos numerados 1,4, 6 e 8.
Note que os números dos campos eliminados são reutilizados quando se criam novos campos posteriormente.
- 177 -
Tipos de campos 4D
É necessário especificar um tipo de campo para cada campo. Os tipos de campos afetam a maneira como 4D manipula e
armazena os dados nos campos e como os introduz e os exibe nos formulários. Como padrão, 4D atribui um tipo
Alfanumérico para cada novo campo.
Para modificar o tipo de um campo:
1. Clique no ícone do tipo de campo na imagem da tabela escolha o tipo que deseja no menu associado.
OU
Clique com o botão direito no campo cujo tipo você deseja alterar e escolha o novo tipo no sub-menu Tipo do menu
contextual.
OU
Selecione o campo cujo tipo deseja alterar e clique na área Tipo do Inspetor para mostrar o menu de tipos.
É possível alterar o tipo a qualquer momento, a menos que o campo tenha uma relação ou pertença à uma chave primária.
Neste caso, o menu para escolher um tipo de campo está desativado. Você deve eliminar a relação ou a chave primária
antes de alterar o tipo do campo.
Se você altera o tipo de campo antes de introduzir dados no campo, 4D altera simplesmente o tipo de campo. Se você
altera o tipo de campo depois de introduzir dados no campo, 4D converte, se for possível, os dados para que correspondam
ao novo tipo. Os dados de um campo Imagem convertido em outro tipo não são exibidos.
Quando se converte um tipo de campo, 4D conserva o valor original do campo até que você modifique o registro. Por
exemplo, se um campo de tipo texto contém o valor “maior que 10” e você alterar o tipo de campo a Inteiro, o campo
modificado exibe “10”. Se altera o campo novamente a Texto, 4D exibe novamente “maior que 10”.
Por padrão, 4D suporta os seguintes tipos de campos:
* Alfa: texto alfanumérico entre 1 e 255 caracteres.
* Texto: texto de até 2 GB.
* Data: datas entre o ano 100 e o ano 32 767.
* Hora: hora expressada em horas:minutos:segundos.
* Booleano: um campo que só pode conter os valores TRUE (verdadeiro) ou FALSE(falso).
* Inteiro: número inteiro entre -32 768 y 32 767.
* Inteiro longo: número uma faixa de mais ou menos 2 147 483 647.
* Inteiro 64 bits (1): número inteiro de 8 bytes incluídos entre +/- 2E64,
* Real: número real na faixa de ±1.7E±308 (com 13 cifras significativas).
* Flutuante(1): número de ponto flutuante,
* BLOB: todo objeto binário, como um gráfico, outra aplicação ou qualquer documento.
* Imagem: uma imagem em um dos formatos suportados por 4D (ver Formatos Nativos Compatíveis no Manual de
Referência de Linguagem 4D)
(1) Atenção, estes tipos de campos só são utilizados pelo motor SQL de 4D. Se estes campos são utilizados na linguagem
- 178 -
de 4D, seus valores se convertem internamente em números reais
Nota: O termo genérico "string" pode indicar um tipo Alfa ou Texto e "número" pode indicar um Inteiro, um Inteiro Longo,
Inteiro 64 bits, Real ou Flutuante.
Alfa
Um campo tipo Alfa contém caracteres alfanuméricos (letras e números), sinais de pontuação, e caracteres especiais como
o asterisco (*), o sinal de porcentagem (%), o hífen (-) e outros similares. Os campos alfa são utilizados para armazenar
informação que deva ser tratada como texto e não ultrapasse 255 caracteres de comprimento.
Um campo alfa pode estar associado a um índice padrão e/ou a um índice de palavras chaves. Para maiores informações
sobre indexação, consulte o parágrafo Criar e modificar Índices.
Alfa é o tipo de campo mais comum. Geralmente, se utiliza este campo para nomes, endereços, números telefônicos,
códigos postais e similares. Durante a entrada de dados, um campo Alfa permite qualquer caractere, número, símbolo de
pontuação ou caractere especial.
Códigos Postais (CEP) devem utilizar o tipo Alfa por duas razões: os campos numéricos não exibem zeros ao início e
alguns códigos postais contêm hífens. A regra geral que se aplica para escolher entre numérico e Alfa consiste em escolher
o campo Alfa a menos que o campo seja utilizado em cálculos numéricos ou pesquisas ou ordenações baseadas em
valores numéricos.
É possível definir o comprimento máximo de um campo Alfa entre 1 e 255 caracteres.
É possível concatenar dois ou mais campos Alfa. Por exemplo, é possível colocar o nome o sobrenome de uma pessoa em
uma mesma linha de uma etiqueta. É possível fazê-lo simplesmente utilizando a linha de código a seguir:
NomeCompleto:=[Empregados]Nome+" "+[Empregados]Sobrenome
A variável NomeCompleto pode ser exibida ou impressa. Você também pode extrair parte da informação para uso em outro
lugar (extrair uma substring). A substring pode então ser exibida ou impressa.
Texto
Um campo Texto é parecido a um campo Alfa, exceto por algumas diferenças.
Um campo Texto pode conter até 2Gb de caracteres alfanuméricos. Geralmente, os campos tipo texto são utilizados para
armazenar blocos de texto de tamanho grande, tais como comentários ou descrições.
Por razões de otimização, o conteúdo de um campo Texto é armazenado, por padrão, fora dos registros (ver o parágrafo
“Stored in the Record” Armazenado em registro, arquivo de dados ou fora do arquivo de dados). Neste caso, o
campo não pode ser associado a um índice padrão. Como os campos Alfa, um campo Texto pode ser associado a um
índice de palavras chaves. Para maiores informações sobre indexação, consulte o parágrafo “Management of Indexes” em
Criar e modificar Índices.
Em um formulário de entrada, um campo Texto pode ter barras de rolagem. Em um relatório impresso, o campo texto pode
se estender tanto quanto seja necessário para imprimir toda a informação, inclusive se for necessário estender por várias
páginas.
Durante a entrada de dados, os campos Texto oferecem as características básicas de edição de texto: rolagem, ajuste de
texto dentro da área definida para visualizar o campo, clique duplo para selecionar uma palavra, movimentar o cursor com a
ajuda das teclas direcionais, e operações padrões como cortar, copiar e colar. Se tiver a opção multi-linha, um campo de
tipo Texto aceita retornos de carro durante a entrada de dados para a criação de novos parágrafos (um campo tipo Alfa não
permite isso). Se tiver a opção multi-estilo, o campo pode conter texto com variações de estilo como subscrito, negrito ou
colorido.
É possível colar o texto nos campos tipo texto, incluindo texto de outros processadores de texto.
Nota: Outra forma de armazenar texto com um registro é utilizando o plug-in 4D Write. Com 4D Write, é possível utilizar
diferentes atributos de fonte, alinhamentos de parágrafo, e outras características próprias dos processadores de texto que
não estão disponíveis em campos Texto padrão. Como com todos os plug-ins 4D, a área 4D Write deve ser colocada em
um campo de tipo BLOB – e não de tipo Texto. Para maiores informações sobre o uso de 4D Write, consulte Introdução a
4D Write no Manual de referência de Linguagem 4D.
Data
- 179 -
Utilize um campo tipo Data para armazenar valores de datas como datas de início, datas de compra, aniversários, entre
outros. Um campo tipo Data pode armazenar qualquer valor de data (dia, mês, ano) respeitando o formato DD/MM/AAAA
entre o ano 100 e o ano 32767.
Nota: O formato de datas utilizado no Brasil, Grã-Bretanha, Espanha e América Latina é DD/MM/AAAA, nos Estados
Unidos é MM/DD/AAAA e na Suécia é AA/MM/DD. 4D armazena as datas de acordo com o formato selecionado no
sistema operacional de seu computador.
Hora
Utilize um campo tipo Hora para armazenar horas com a hora atual, a hora de uma reunião, a hora de faturamento, entre outros). Um campo tipo Hora pode
armazenar qualquer hora no formato HH:MM:SS.
Booleanos
Os campos Booleanos (algumas vezes chamados campos lógicos) contêm valores TRUE ou FALSE.
É possível definir o formato de um campo Booleano como uma caixa de seleção ou um par de botões de opção. Uma caixa
de seleção marcada é verdadeiro (TRUE); vazia é falso (FALSE). Selecionar o primeiro botão de opção equivale a
verdadeiro (TRUE) e selecionar o segundo botão equivale a falso (FALSE).
Nomeie os campos Booleanos de modo que seja possível perguntar “O campo nome é verdadeiro?”. Esta pergunta é útil ao
realizar pesquisas porque 4D revisa o valor TRUE e FALSE em um campo Booleano. Por exemplo, é possível nomear um
campo “Masculino” no lugar de “Sexo”. Seu critério de pesquisa pode então ser escrito como “Masculino é verdadeiro” no
lugar de “Sexo é verdadeiro”.
Inteiro
O tipo de campo Inteiro é utilizado para armazenar números inteiros, ou seja, números sem frações decimais. Os campos de
tipo Inteiro podem armazenar números inteiros entre -32.768 e 32.767.
Inteiro Longo
Utilize o campo Inteiro Longo para armazenar números inteiros muito grandes, que não podem ser armazenados no campo
de tipo Inteiro. Este tipo de campo pode armazenar números inteiros entre ±2.147.483.647.
Inteiro 64 bits
Este tipo de campo pode ser utilizado para armazenar números inteiros de 8 bytes permitindo manipular valores inteiros de
tamanho grande, entre +/- 2E64.
Nota: Atenção, este tipo de campo é utilizado somente pelo motor SQL de 4D. Se este campo é utilizado é utilizado na
linguagem de 4D, seu valor é convertido internamente em um número real.
Real
Os campos de tipo Real são utilizados para armazenar números reais, ou seja, números decimais (preço, salários, gastos,
etc.). Os campos reais podem armazenar qualquer número na faixa de ±1.7E±308.
Os formatos de saída numéricos são baseados automaticamente nos parâmetros regionais do sistema. 4D substitui os
caracteres “,” e “.” nos formatos de saída numéricos por, respectivamente, o separador de milhares definido no sistema
operacional.
Nota: no motor da base de dados 4D, as comparações de números reais se realizam sempre com um valor ípsilon de 10^-6
com a finalidade de obter um nível de precisão suficiente. Para garantir a coerência dos dados e dos cálculos, este valor
ípsilon não pode mudar. Particularmente, o motor de base de dados não leva em consideração o comando SET REAL
COMPARISON LEVEL, que só se aplica aos tratamentos estabelecidos na linguagem de 4D. Devido a imprecisão inerente
aos cálculos realizados nos números reais, não recomendamos o uso deste tipo de dados para armazenar valores precisos
como identificadores.
Flutuante
Este tipo de campo pode ser utilizado para armazenar os números de ponto flutuante. Estes tipos de números permitem armazenar os valores reais
sem perder precisão.
- 180 -
Nota: Atenção, este tipo de campo é utilizado unicamente pelo motor SQL de 4D. Se este campo é utilizado na linguagem 4D, seu valor se converte
internamente em um número real.
BLOB (Binary Large Object)
Os campos de tipo Blob (Binary Large Object) armazenam documentos binários de todo tipo. Por exemplo, pode armazenar
documentos criados por outras aplicações, imagens escaneadas ou outras aplicações. Um BLOB pode ser de até 2 Gb.
Quando se trabalha com um registro que contém um campo BLOB, todo o BLOB é carregado na memória. É possível utilizar
campos tipo BLOB para armazenar arquivos de desktop dentro do seu banco de dados. Também é possível escrever os
conteúdos de um campo tipo BLOB em um arquivo de desktop. Por exemplo, é possível utilizar um campo tipo BLOB em um
sistema de gestão de documentos que armazena documentos no banco de dados e os entrega aos usuários quando são
solicitados.
Você utiliza os comandos BLOB na linguagem 4D para manipular os campos tipo BLOB. Utilize os comandos DOCUMENT
TO BLOB e BLOB TO DOCUMENT para ler e escrever documentos a partir e em campos BLOB. Os comandos
COMPRESS BLOB, EXPAND BLOB, e BLOB PROPERTIES lhe permitem trabalhar com campos BLOBs comprimidos.
Para maiores informações sobre o uso de campos BLOBs, consulte a seção BLOBs no Manual de linguagem 4D. Por
razões de otimização, o conteúdo de um campo BLOB é armazenado fora dos registros. Os BLOBs só são carregados
quando é necessário, por exemplo, uma vez que o registro buscado é encontrado.
O conteúdo de um campo BLOB não é exibido na tela já que um BLOB pode representar qualquer tipo de dados.
Imagem
Os campos tipo Imagem são utilizados para armazenar fotografias digitalizadas, diagramas, mapas, e ilustrações criadas
utilizando aplicações gráficas. As imagens são conservadas em seu formato nativo.
Algumas aplicações gráficas armazenam informação adicional com as imagens, como por exemplo, instruções para
dispositivos de saída como uma impressora PostScript™ ou, a partir de 4D v12, metadados. Esta informação acompanha a
imagem quando se copia ou cola em um campo Imagem e é utilizada por 4D durante a impressão da imagem ou, no caso
dos metadados, através dos comandos GET PICTURE METADATA e SET PICTURE METADATA.
Por razões de otimização, o conteúdo de um campo imagem é armazenado fora dos registros. As imagens só são
carregadas quando for necessário, por exemplo, uma vez que o registro buscado é encontrado. A partir de 4D v13, também
pode eleger guardar imagens fora do arquivo de dados (ver a seção Armazenamento externo dos dados).
Nomes por padrão dos arquivos imagem
4D pode memorizar um nome por padrão para cada imagem armazenada em um campo. Isso significa que você pode
definir um nome de arquivo por padrão quando guarda o conteúdo de um campo imagem em um arquivo disco através de
uma exportação usuário ou utilizando o comando WRITE PICTURE FILE (quando passa uma cadeia vazia no parâmetro
nomArquivo). Se o conteúdo do campo é copiado em uma variável ou em outro campo, seu nome por padrão também é
copiado.
Pode associar um nome por padrão a uma imagem armazenada em um campo imagem de dois maneiras:
Por programação, usando o comando SET PICTURE FILE NAME. Pode utilizar este comando para associar um
nome de arquivo por padrão a imagem. Também pode utilizar o comando Get picture file name para averiguar o
nome por padrão de uma imagem.
Automaticamente, quando o conteúdo de um arquivo imagem se importa em um campo imagem utilizando o menu
contextual ou usando o comando READ PICTURE FILE: neste caso, 4D memoriza o nome do arquivo imagem
original.
Isto se ilustra na seguinte sequencia:
1. usuário importa o arquivo com o nome logo64.png em um campo imagem:
- 181 -
2. A continuação, o usuário guarda o conteúdo do campo imagem: o nome logo64.png se apresenta na caixa de diálogo
(tenha em conta que se trata de um nome por padrão e pode mudar)
Object
Os campos objetos armazenam pares de atributo/valor dos diferentes tipos, sem esquemas de dados predefinidos. A
estrutura de dados armazenada não é necessariamente a mesma entre os diferentes registos. Por exemplo, um objeto de
campo [Person]Address pode conter atributos diferentes, dependendo da cidade, do país, e assim por diante:
record1= {"street1":"Cotton Treasure Grounds", "street2":"Place Corners", "state":"MD",...} "></span></span><span
id="result_box" lang="pt"><span title="[#codeJS]record1= {"street1":"Cotton Treasure Grounds", "street2":"Place Corners",
"state":"MD",...} "></span></span>[#codeJS]record1= {"street1":"Cotton Treasure Grounds", "street2":"Place Corners",
"state":"MD",...} record2= {"street1":"Umber Road", "Number":"28", "state":"MO",...}
A estrutura dos objectos 4D baseia-se no princípio padrão de pares de "propriedade/valor". A sintaxe destes objetos
baseia-se na notação JSON, mas ainda não a segue completamente:
Um nome de atributo é sempre um texto, como "Nome".
Um valor de atributo pode ser um dos seguintes tipos:
número (Real, Integer, etc.)
texto
array (texto, real, inteiro longo, inteiro, booleano, objeto, apontador)
nulo
- 182 -
Boolean
ponteiro (armazenado como tal, avaliada utilizando o comando JSON Stringify ou cópia)
data (formato "AAAA-MM-DDTHH: mm: ssZ")
objeto (objetos podem ser aninhados em vários níveis)
Atenção: Por favor, note que os nomes dos atributos diferenciam entre maiúsculas e minúsculas.
Um campo objeto pode ser de até 2 GB. Ao trabalhar com um registro que contenha um campo objeto, todo o objeto é
carregado na memória. Como para os campos do tipo texto, imagem ou campo BLOB, os campos objeto podem ser
armazenados no arquivo de dados (com registros ou qualquer outro) ou fora do arquivo de dados; Esta opção está em
Armazenamento externo dos dados.
Use os comandos 4D Objetos (Linguagem) para gerenciar os campos objeto. Use os comandos OB Get e OB SET para
ler e gravar dados de e para campos objeto. Você também pode armazenar e ler arrays como atributos usando os
comandos OB SET ARRAY e OB GET ARRAY.
Você pode usar o comando QUERY BY ATTRIBUTE para buscar entre os campos objeto.
Como os campos de tipo de objeto são baseados em texto, seu conteúdo é exibido por padrão em um formulário 4D como
texto e formato JSON (ver seção abaixo).
Nota: Para trabalhar com objetos JSON, você pode usar os comandos encontrados no "JSON".
Por que usar campos Objeto?
O tipo objeto permite definir campos sem esquema dinâmico. Estes campos objeto podem ser considerados como campos
"definidos pelo usuário" ou "personalizados". Em 4D v15, agora tem que escolher entre os modelos de dados com ou sem
esquema. Em ambos os casos, você pode executar pesquisas indexadas rápidas.
Observe também que os campos objeto podem simplificar os modelos de dados padrão. Por exemplo, para uma
tabela "Contatos" convencional, apenas um campo de tipo objeto permite evitar a criação de dezenas de campos que
representam todos os valores possíveis, a maioria dos quais não são usados em 90% dos casos. O modelo de informação
em tempo real é criado somente se necessário.
Exibir e inserir campos Objetos em Formulários
Como padrão, os campos objeto são representados como áreas de texto nos formulários 4D. Dentro destas áreas, os
dados objeto deve ser undefined, ou devem ser formatados em texto JSON; caso contrário, um erro é retornado.
Por exemplo, se você definiu o campo [Rect]Desc como um campo objeto, você pode escrever:
CREATE RECORD([Rect])
<p>[Rect]Name:="Blue square"
OB SET([Rect]Desc;"x";"50";"y";"50";"color";"blue")
SAVE RECORD([Rect])
Quando o campo [Rect]Desc estiver incluído no seu formulário, os seguintes conteúdos são exibidos:
Você pode editar os valores que são exibidos diretamente no campo texto ou digitar dados objeto diretamente com a
notação padrão; será formatado em JSON automaticamente quando pulsar a tecla [Tab]:
No entanto, a edição direta deve ser feita com cautela, já que os espaços fora de lugar, ou símbolos, irá resultar em um erro
de análise JSON e não se salvam os dados editados:
- 183 -
Normalmente, ele é mais preciso para lidar com o conteúdo dos campos objeto através de comandosObjetos (Linguagem)
e JSON.
Obter e definir valores de Campos Objeto
Todos os comandos do Objetos (Linguagem) agora aceitam um campo objeto como o primeiro parâmetro (objeto).
Da mesma forma que objetos de linguagem padrão, os valores de campo objeto são manipulados pelos comandos do tema
Objetos (Linguagem). Por exemplo:
// Defina um valor
OB SET([Pessoas] Identity_OB;"Nome";$ firstName)
OB SET([Pessoas] Identity_OB,"Last Name",$ lastName)
// Obter um valor
$ FirstNameOB=Get([Pessoas] Identity_OB;"Nome")
$ ApelidoOB=Get([Pessoas] Identity_OB,"Last Name")
Os arrays também são suportados, por exemplo:
ARRAY TEXT($arrGirls;3)</p><p>$arrGirls{1}:="Emma"
$arrGirls{2}:="Susan"
$arrGirls{3}:="Jamie"
OB SET ARRAY([Persons]Children;"Girls";$arrGirls)
Formulas com Campos de Objeto
Os campos de objeto pode ser usado em fórmulas (usando o editor de fórmulas padrão ou o comando EXECUTE
FORMULA). No entanto, neste contexto, os campos de objectos podem ser manuseados apenas com os seguintes
comandos:
OB Get
OB Is empty
OB Is defined
OB Get type
Por exemplo, você pode executar a seguinte fórmula de pesquisa:
OB Get([Rect]Desc;"color")="blue"
Limitações atuais
- 184 -
A maioria das características padrão de 4D suportam campos de tipo objeto. Mas algumas partes avançadas do aplicativo
não está prontas para usar diretamente os campos objeto na versão atual. Estas peças são progressivamente atualizadas e
estarão disponíveis em versões futuras.
Compatibilidade parcial através de 4D formulas
As seguintes funções ou comandos suportam parcialmente campos objeto através de fórmulas 4D:
Função/Comando
Editor de pesquisas
Editor de ordenação
Editor de importação/exportação
4D Write
4D Write Pro
4D View
4D Tags
PROCESS 4D TAGS
Sem suporte
As seguintes funções e comandos 4D não admitem campos objeto:
Funções/Comandos
Editor de relatórios rápidos
Editor de etiquetas
SQL Data Definition Language (CREATE TABLE)
SQL Data Manipulation Language (SELECT, INSERT, UPDATE)
SQL EXPORT DATABASE e SQL EXPORT SELECTION
Gráficos
PHP
Plugin SDK
DISTINCT VALUES
RELATE ONE
RELATE MANY
ORDER BY
SCAN INDEX
- 185 -
Armazenado em registro, arquivo de dados ou fora do arquivo de dados
Além de seu nome e tipo (consulte a seção Tipos de campos 4D), as propriedades de um campo determinam sua
aparência, suas condições de entrada, visualização, edição e armazenamento dos dados. As propriedades de cada campo
de uma tabela podem ser definidas individualmente.
As propriedades dos campos podem ser especificadas em Inspetor ou em alguns casos, no menu contextual que aparece
com o clique direito em um campo.
Nota: Pode modificar as propriedades de um campo no que já foi introduzido dados na base de dados. Certas mudanças
levam em conta os dados existentes. Por exemplo, quando se escolhe o atributo único, 4D mostra uma caixa de diálogo de
advertência e não permite que este atributo se ative se os dados do campo contém valores duplicados. No entanto, se
modificar as propriedades de entrada de dados, isto não afeta aos dados existentes. Por exemplo, quando se escolhe o
atributo Obrigatório, apenas as entradas realizadas depois serão revisadas, os valores introduzidos antes da modificação
podem conter espaços em branco .
Definição
A área "definição" do Inspetor permite configurar as propriedades elementares do campo. Certas propriedades só estão
disponíveis em função do tipo de campo selecionado.
Cor
É possível atribuir uma cor a cada campo. As cores podem ser utilizadas para diferenciar os campos de acordo com sua
função ou seus atributos. Por exemplo, é possível utilizar uma cor para os campos únicos e outra cor para os campos
obrigatórios.
Também é possível atribuir individualmente uma cor a cada tabela (ver o parágrafo Definir a cor da imagem de uma
tabela)) e a cada relação (ver Definição).
Nota: A cor dos campos definido no editor de estrutura não tem incidência na cor dos campos mostrado nos formulários
(ver ) Cores de fundo e de traço).
A cor definida para um campo se aplica ao nome do campo.
Para definir a cor de um ou mais campos, efetue sua seleção e escolha uma cor utilizando:
o botão Cor
da barra de ferramentas do editor,
o comando Cor no menu contextual dos campos (botão direito do mouse),
a opção Cor de Inspetor
A opção Automática permite aplicar a cor padrão original do campo.
Invisível
É possível tornar um campo invisível no ambiente Aplicação selecionado a propriedade Invisível para o campo. O atributo
invisível oculta o campo do usuário. Um campo com este atributo não aparece em nenhum dos editores e caixas de diálogo
padrões de 4D que aparecem no ambiente Aplicação. Além disso, não é possível ser utilizado pelos plug-ins. Os seguintes
editores e caixas de diálogo são afetados no modo aplicação:
todos os editores de pesquisa (ver Procurar registros),
o Editor de ordenação,
o Editor etiquetas,
o Editor de relatórios rápidos,
as caixas de diálogo Exportar e importar dados,
o Editor de fórmulas.
Nestes editores e caixas de diálogo, o usuário não poderá ver ou selecionar o campo. Por exemplo, o usuário não pode
selecionar um campo invisível para um relatório criado com o editor de relatórios rápidos.
Nota: Ao usar os editores, os usuários têm a opção de salvar em disco as características da pesquisa ou da ordenação
criada por eles. Neste caso, qualquer campo declarado invisível posteriormente poderá ser utilizado. Adicionalmente, os
usuários podem introduzir manualmente os nomes dos campos invisíveis na caixa de diálogo de aplicação de fórmulas
(consultar Editor de fórmulas).
- 186 -
Os campos invisíveis aparecem em itálico na janela do editor de estrutura.
Único
A propriedade Único se utiliza quando quer que cada registro de uma tabela tenha um valor diferente (único). A propriedade
Único é bem útil para validar os campos que contém números de identificação, números de segurança social, números de
ordem de compra, etc.
A propriedade Único evita ter duplicados de valores vazios ou de valores introduzidos. Se um campo tem a propriedade
Único, só um registro poderá conter um valor vazio para esse campo.
A barra de informação do editor indica se a propriedade único está selecionada para um campo (ver a seção Editor de
estrutura).
Em 4D, os campos com o atributo Único devem ser indexados:
Um sinal visual indica que será criado um índice (se não existe) quando se seleciona o atributo Único para um campo:
O editor não lhe permite eliminar o índice de um campo único (a opção Nenhum ou eliminar comandos não estão
disponíveis para os índices quando se seleciona um campo deste tipo):
Se deseja eliminar o índice de um campo único, tem que eliminar o atributo Único de antemão.
Expor com o serviço 4D Mobile
Esta opção controla a exposição do campo no contexto de petições 4D Mobile enviadas a base 4D através de REST. Por
padrão, todas as tabelas e todos os campos estão expostos em 4D Mobile.
Por razões de segurança, é possível que deseje expor somente certos campos de sua base as chamadas 4D Mobile. Por
exemplo, se não deseja expor o campo [Empregados]Salário.
Se não quer expor um campo, não selecione a opção Expor com o serviço 4D Mobile para o campo.
Nota: também pode definir esta opção a nível da tabela, consulte Propriedades de Tabela.
Para que um campo seja acessível por meio de 4D Mobile, sua tabela pai também deve ser acessível. Se a tabela pai não
está exposta, nenhum de seus campos são acessíveis, independentemente de sua situação individual. Isto significa que
você pode ativar ou desativar a exposição de uma tabela em 4D Mobile temporalmente sem modificar o valor individual da
opção de exposição de cada campo.
Esta opção pode ser utilizada no contexto da funcionalidade "4D Mobile" functionality. Para obter mais informação, consulte
o manual 4D Mobile.
Rejeitar a escritura do valor NULL
A propriedade Rejeitar o valor NULL de entrada permite evitar o armazenamento de valores NULOS.
Quando este atributo está selecionado para um campo, não será possível armazenar o valor NULO neste campo. Se um
campo que tem esta propriedade recebe um valor NULL, um erro é gerado.
Esta propriedade de baixo nível corresponde precisamente ao atributo NOT NULL de SQL. Em geral, se deseja utilizar
valores NULOS em seu banco de dados 4D se recomenda utilizar exclusivamente a linguagem SQL de 4D.
Nota: Em 4D, os campos podem ter a propriedade “Obrigatório”. Os dois conceitos são similares, mas seu alcance é
diferente: o atributo “Obrigatório” é um controle de entrada de dados, enquanto que o atributo “Rejeitar valor NULO de
entrada” trabalha a um nível do motor do banco de dados.
Mapear valores NULOS a valores vazios
- 187 -
Esta propriedade permite tornar consistente o processamento de valores “vazios” e de valores NULOS para o campo
através da linguagem de 4D. Por razões de compatibilidade, os valores NULOS armazenados nos campos dos bancos de
dados 4D se convertem automaticamente em valores de padrões quando são manipulados através da linguagem de 4D.
Por exemplo, no caso da seguinte instrução:
minhaVarAlfa:=[minhaTabela]MeuCampoAlfa
...se o campo MeuCampoAlfa contém um valor NULO, a variável minhaVarAlfa conterá “” (string vazia).
Os valores padrões dependem do tipo de dados:
para os tipos Alfa e Texto: “”
para os tipos numéricos (Real, Inteiro e etc.): 0
para o tipo Data: “00/00/00”
para o tipo Hora: “00:00:00”
para o tipo Booleano: False
para o tipo Imagem: imagem vazia
para o tipo Blob: BLOB vazio
Por outra lado, este mecanismo em princípio não se aplica aos processos efetuados em nível do motor do banco de dados
4D, tal como as pesquisas. De fato, a pesquisa de um valor “vazio” (por exemplo, meuvalor=0) não encontrará registros que
armazenem o valor NULL e vice-versa. Quando ambos os tipos de valores (valores padrões e NULL) estão presentes nos
registros para um mesmo campo, certos processos podem ser alterados ou necessitar código adicional. Para evitar estes
inconvenientes, a opção Mapear valores NULOS a valores vazios permite padronizar todos os processos na linguagem
de 4D. Esta propriedade permite estender o princípio de uso dos valores padrões a todos os processos. Os campos que
contém valores NULOS serão considerados automaticamente como que contém os valores padrões.
Esta propriedade se leva em consideração a um nível muito baixo do motor do banco de dados. Atua particularmente no
comando Is field value Null.
Note: Os campos Alpha no formato UUID que não são gerados não são considerados como NULL, veja [#title id="649"
anchor="106190"/]formato UUID ).
Incrementação automática
A propriedade "Auto incrementar" permite gerar os identificadores únicos para os registros. Pode ser utilizado com os
Tipos de campos 4D Inteiro, Inteiro Longo e Inteiro Longo 64 bits (ver a seção REGISTER CLIENT).
Um campo com esta propriedade é incrementado automaticamente a cada novo registro na tabela. O número atribuido ao
campo corresponde ao "contador interno" da tabela, mantido por 4D. Esse contador interno também pode ser acessado
através dos comandos 4D Sequence number e Get database parameter e utilizando o marcador #N (ver Valores
padrão).
Os números atribuídos são permanentes e nunca podem ser reutilizados, mesmo quando são os registros são apagados ou
compactados. Os números gerados durante uma transação anulada nunca são "perdidos". Entretanto, é possível reiniciar o
contador interno de uma tabela usando o comando SET DATABASE PARAMETER.
A propriedade "Autoincrementar" corresponde ao atributo SQL AUTO_INCREMENT e pode ser especificada usando esta
linguagem (ver exemplo). A etiqueta AUTO INCREMENT também aparece na área de informação SQL do Inspetor para os
campos que têm essa propriedade.
O seguinte código permite gerar um campo "id" de tipo inteiro na tabela "animais":
ARRAY TEXT($nomes;6)
$nomes{1}:="cachorro"
$nomes{2}:="gato"
$nomes{3}:="golfinho"
$nomes{4}:="cobra"
$nomes{5}:="borboleta"
$nomes{6}:="avestruz"
Begin SQL
CREATE TABLE animais(
id INT NOT NULL AUTO_INCREMENT ,
name VARCHAR(30)NOT NULL,
PRIMARY KEY(id));
INSERT INTO animais(nome)VALUES(:$nomes);
End SQL
O seguinte código:
- 188 -
SELECT * FROM animais;
... devolve estes valores:
id nome
1
2
3
4
5
6
cachorro
gato
golfinho
cobra
borboleta
avestruz
Armazenado no registro
Este menu de opções está disponível para os campos de tipo Texto, BLOB e Imagem unicamente. Permite definir o lugar de
armazenamento dos dados do campo. As seguintes opções estão disponíveis:
No registro: os dados são guardados com cada registro. Geralmente, não deve eleger esta opção para campos que
contenham dados de grande tamanho. No entanto, está selecionada por padrão para os campos de tipo Texto porque
este tipo de armazenamento é necessário se você quer utilizar os índices "estandarte" de tipo B-Tree. O menu de
seleção dos índices está oculto quando os dados texto se guardam fora dos registros.
No arquivo de dados: os dados se armazenam no arquivo de dados, mas fora de cada registro. Esta aplicação está
selecionada por padrão para los campos BLOBE imagem O armazenamento de texto, imagens e blobs fora dos
registros permite otimizar o funcionamento das bases quando se trabalha com grandes volumes de dados.
Fora do arquivo de dados: os dados se armazenam em arquivos separados, fora do arquivo .4D. Esta opção se
descreve na seção Armazenamento externo dos dados.
Nota de compatibilidade: esta opção somente é tida em conta para os novos registros criados posteriormente na
tabela. Quando se define esta opção para uma tabela na qual os registros já foram intriduzidos, não se modificam e
a tabela funcionará em modo de armazenamento mixto interno/externo. Caso deseje ampliar este modo aos
registros existentes, deve compactar os dados utilizando a opção Forçar a atualização dos registros (ver
Compactar).
Tamanho máximo de armazenamento
Como se descreveu na seção anterior, por razões de otimização, os dados de los campos de tipo BLOB, Imagem e Texto
são armazenados fora dos registros ou fora do arquivo de dados.
Nesta configuração, pode ser interessante, por razões de rendimento, "forçar" o armazenamento dos dados nos registros
quando seu tamanho é limitado. Este funcionamento é particularmente otimizado se sua aplicação maneja dados BLOB,
Imagem ou Texto de tamanhos não homogêneos.
Este parâmetro é acessível através da opção Tamanho máximo de armazenamento. O valor introduzido nessa área
representa o tamanho máximo em bytes para que os dados do campo sejam armazenados nos registros. Por exemplo, se
introduzir 30.000 em um campo imagem, uma imagem de 20 Kb seria armazenada dentro do registro e uma de 40 Kb seria
armazenada fora do registro. Como padrão, o valor é 0: todos os dados serão armazenados fora dos registros.
formato UUID
Esta propriedade está disponível para os campos do tipo Alfa. Indica que o campo é utilizado para armazenar os
identificadores UUID. Os dados armazenadas devem ser ajustados ao formato UUID (combinação de 32 letras (AF, af) e
números (0-9)). Para fazer isto, pode utilizar a propriedade Auto UUID, o comando Generate UUID ou qualquer algoritmo
personalizado.
Se tentar armazenar neste campo uma string que não cumpra com o formato de UUID, 4D a converterá automaticamente. A
mesma operação também se aplica aos valores dos campos existentes não alfa que sejam transformados em campos
UUID: ao carregar os registros, os valores são reformatados e depois são novamente guardados.
Os campos com a propriedade Formato UUID podem ser mostrados nos formulários e continuar sendo editáveis. Seu
conteúdo é mostrado em caracteres em maiúsculas. Deve passar seu conteúdo através de uma variável se deseja ver os
caracteres em minúsculas.
Notas:
Os campos com o formato UUID não podem ser associados aos índices de palavras-chave, nem às listas de opções.
É possível criar uma relação entre dois campos com o formato UUID mas não é possível relacionar um campo Alfa
padrão a um campo que tenha o formato UUID.
Auto UUID
Esta opção somente está ativa quando a propriedade Formato UUID estiver selecionada.
- 189 -
Pode utilizar a propriedade Auto UUID para gerar automaticamente um número UUID no campo cada vez que um registro
for criado.
O número é calculado automaticamente nos seguintes contextos:
quando um registro for criado,
quando um registro for carregado cujo campo UUID contém um valor Null. Isso ocorre mais particularmente por
registros criados e guardados antes do campo UUID é adicionado na tabela, quando a opção Map NULL values to
blank values não for marcada.
Naturalmente, em todos os casos, o registro deve ser guardado para que a UUID automaticamente gerada deve ser
guardada no campo.
Nota: quando dados são importados, mesmo que essa propriedade esteja selecionada, 4D não gera um número novo, e
sim utiliza os valores importados (e os transforma quando seja necessário, caso o formato não seja válido). Entretanto, se o
valor do campo importado está vazio, um UUID é automaticamente gerado).
Compressão QuickTime
Nota de compatibilidade: esta opção se conserva por razões de compatibilidadee não tem nenhum efeito por padrão.
Para poder utilizar esta opção, deve habilitar QuickTime em sua aplicação (ver Introdução a Imagens).
Pesquisas e ordenações em texto sem etiquetas
Esta propriedade está disponível para os campos Texto e Alfa. Quando selecionar essa opção, as pesquisas e ordenações
realizadas nos dados armazenados no campo não consideram nenhum tipo de etiqueta de estilo (style tag).
Esta opção está relacionada com a possibilidade em 4D de se aplicar diferentes estilos dentro de uma mesma área de
texto (texto enriquecido) em um formulário. Para obter mais informação sobre essa função, consulte a seção Multiestilo
(área Rich text).
A definição de estilos é feita inserindo etiquetas HTML no texto. Essas etiquetas são interpretadas no momento da
visualização da área de texto.
As etiquetas de estilo são armazenadas com os dados. Por exemplo, se escrever "fim de semana" em um campo de texto,
4D guardará "fim de <SPAN STYLE = "color:
#D81E05">semana</SPAN>". Esta operação é transparente para o usuário a nível de formulário. Entretanto, para as
buscas e as ordenações, uma configuração específica é necessária para que 4D ignore as etiquetas de estilo. Para "fim de
semana", a busca somente a encontrará se tiver selecionado a opção Ignorar estilo ao buscar e ordenar para o campo
no editor de estrutura.
Nota: com esta opção, uma busca de ovalor entre os dados de ocampo é o mesmo que a execução dessa instrução dentro
de 4D:
QUERY BY FORMULA(OBJECT Get plain text(ocampo)="ovalor")
Indexação
A propriedade Indexação está disponível para todos os tipos de campos exceto para BLOBs e imagens. A propriedade
índice de palavras chaves está disponível para campos de tipo Alfa, Texto e imagem.
O uso de índices permite acelerar os processos e as pesquisas entre os dados.
A gestão de índices é detalhada no parágrafo Criar e modificar Índices.
.
Controles de entrada
Pode estabelecer controles de entrada de dados para campos e objetos editáveis ao nível dos formulários. Os controles de
entrada restringem o que o usuário pode introduzir no campo ou objeto editável em um formulário em particular.
Obrigatório
Quando o atributo Obrigatório é selecionado para um campo, o usuário deve obrigatoriamente introduzir um valor no campo
durante a entrada de dados. 4D não aceita um registro com campos obrigatórios vazios. Você deve definir como
obrigatórios aqueles campos cuja informação seja essencial para o seu banco. O campo que identifica como único a cada
registro em uma tabela é um bom candidato a ser Obrigatório. Campos que devem ser obrigatórios para proteger a
integridade dos registros são os que contêm dados como os números de CPF, números de fatura, certas datas ou códigos
de empregados.
Também é possível definir o atributo Obrigatório para um campo em um formulário particular. Se você selecionar este
atributo no editor de Estrutura, não pode desabilitá-lo em uns formulários particular. Mesmo assim, pode aplicar o atributo
- 190 -
Obrigatório em um formulário para um campo que não tenha este atributo no editor de Estrutura. Para maiores informações
sobre como definir o atributo Obrigatório para um campo em um formulário, consulte a seção Atributos Editável e
Obrigatório e propriedades de campos.
Nota: em 4D, campos também podem ter a propriedade "Rejeitar valor NULO como entrada" (ver acima). Os dois
conceitos são similares, mas seu alcance é diferente: o atributo "Obrigatório" é um controle de entrada de dados, onde
"Rejeitar valor NULO como entrada" trabalha ao nível da máquina do banco de dados.
Não modificável
Se o atributo Não modificável é selecionado para um campo, 4D valida o valor inicial introduzido no campo, mas não
permite que o usuário modifique o valor depois que se guarde o registro. O usuário só pode modificar este valor durante a
criação do registro, antes que o registro seja aceito. Uma vez que o usuário salva o registro, o valor deste campo não é
modificável. Este valor pode ser modificado por um método ou retornando ao ambiente Desenho e desativando este
atributo.
Utilize o atributo Não modificável para campos que devem oferecer informação de rastreamento (auditorias) tais como data
de recebimento, data de pagamento, etc. O atributo Não modificável é atribuído freqüentemente ao campo que identifica
cada registro como único na tabela.
Nota: Este atributo só funciona com campos mostrados em um formulário de entrada. Em outros casos (entrada em lista,
entrada em sub-formulário e em modo de listagem), o valor do campo poderá ainda ser modificado.
Não editável
O usuário não pode introduzir valores a partir do teclado em um campo que tenha o atributo Não editável. Ele deve utilizar
um valor padrão para este campo ou escrever um método que insira um valor no campo. Um campo com atributo não
editável é útil para mostrar os valores que você não deseja que os usuários do banco modifiquem, tais como totais ou um
número de série atribuído por um método.
Também é possível definir esta propriedade para um campo em um formulário em particular. Para maiores informações,
consulte a seção Atributos Editável e Obrigatório e propriedades de campos.
Multilinha
Esta opção só está disponível para os campos de tipo Texto. Quando está selecionada, o campo Texto é configurado
automaticamente, nos formulários criados posteriormente, de maneira que possam ter várias linhas de texto. Suas
características padrões são as seguintes:
altura correspondente a várias linhas,
barra de rolagem horizontal,
em execução, um retorno de carro provoca uma nova linha.
Quando esta opção não estiver selecionada, a aparência padrão do campo texto nos formulários é idêntica a dos campos
de tipo Alfa: somente uma linha de altura sem barra de rolagem; um retorno de carro o passa ao seguinte campo do
formulário.
É possível alterar a aparência padrão do campo a qualquer momento através do editor de formulários.
Permitir Lista
Utilize Permitir lista se deseja mostrar uma lista de seleção para a entrada de informação no campo. Para utilizar este
atributo, primeiro você deve criar a lista com ajuda do editor de listas (consultar Listas).
Utilize este atributo quando deseja padronizar as entradas no campo e evitar erros de digitação. Esta propriedade é útil para
os campos que tem um número limitado de possíveis valores ou entradas usuais. Utilizar uma lista de valores não
necessariamente evita que o usuário escreva valores diferentes aos da lista.
Também é possível atribuir uma lista de seleção em um formulário particular. Mesmo assim, quando atribui uma lista de
seleção somente em um formulário, a lista não é exibida nos outros editores ou caixas de diálogo, tal como o editor de
pesquisas. Para maiores informações sobre o uso de listas de valores em formulários, consulte a seção Controles de
entrada de dados e ajuda de entrada
Nota: Também é possível definir em nível dos formulários as listas de valores obrigatórios e de valores excluídos.
Quando se seleciona a opção Permitir lista, o menu suspenso associado é ativado. É possível então selecionar uma lista
existente que deseja atribuir ao campo ou pode clicar em [...] para acessar diretamente ao editor de listas (consultar Listas).
Mensagens de ajuda
É possível dar aos usuários informação adicional sobre um campo adicionando uma mensagem de ajuda. Se você escrever
uma mensagem de ajuda nesta área, será exibida debaixo do campo quando o usuário coloque o cursor no campo. Uma
mensagem de ajuda é exibida em todas as plataformas.
- 191 -
Quando o usuário colocar o ponteiro do mouse debaixo de um campo, aparece a mensagem em uma mensagens de ajuda,
como se mostra a seguir.
Também é possível utilizar uma mensagem de ajuda para um campo em um formulário particular. Se você atribuir uma
mensagem de ajuda somente a alguns formulários, não aparecerá nos demais formulários. Para maiores informações em
como usar as mensagens de ajuda com formulários, consulte Mensagens de ajuda.
Comentários
A área Comentários do Inspector permite armazenar informação adicional sobre o campo. Estes comentários estão
disponíveis para todos os desenvolvedores.
Note que cada tabela e cada relação dispõem de sua própria área de comentários.
SQL
A área SQL do Inspector oferece informação útil sobre o campo a partir da perspectiva de seu uso através da linguagem
SQL:
Esta área indica particularmente se o nome do campo não respeita as regras da nomenclatura SQL (por exemplo, diferente
de 4D, SQL não permite que um nome de campo contenha espaços).
Para cada campo, a área de informação SQL indica seus atributos SQL (tipo e propriedades).
- 192 -
Armazenamento externo dos dados
Pode escolher onde guardar os dados de cada campo de tipo BLOB, Imagem e Texto. Além das opções de
armazenamento internas (no registro ou no arquivo de dados), pode optar por armazenar estes campos fora do arquivo de
dados. Neste caso, seus dados são guardados como arquivos externos que são gerenciados por 4D e podem ser
gerenciados pelas aplicações de terceiros, sempre e quando você tenha a precaução de conservar a integridade dos
dados.
Este princípio é transparente para o usuário: o acesso aos dados é o mesmo, independentemente de sua localização.
O armazenamento externo dos dados permite otimizar o funcionamento da aplicação, permitindo por exemplo transportar
grandes volumes de dados ou acessar desde o sistema operativo aos textos ou as imagens contidas na base, inclusive
quando não está aberta.
Modo automático ou modo personalizado
O suporte para o armazenamento externo de dados pode ser realizado de duas maneira:
Modo automático: neste modo, 4D cria e gerencia uma pasta por padrão, estruturada em uma forma específica e
que contém todos os dados de armazenamento externo. Neste caso, estes dados se administram de maneira
transparente e têm as mesmas funções e o funcionamento automático que para os campos armazenados
internamente.
Para ativar este modo automático, você pode:
Configurar o armazenamento externo no editor de estrutura (parâmetros guardados com a estrutura da base).
Esta opção se descreve no Stored in the record.
Utilizar o comando SET EXTERNAL DATA PATH com uma cadeia vazia no parâmetro rota (configuração
válida para a sessão).
Modo personalizado: neste modo, você decide livremente o lugar onde se armazenam os arquivos externos para
cada campo e cada registro. Neste caso, 4D conserva unicamente a relação entre o campo e seus dados e alguns
dos mecanismos de base de dados já não estão disponíveis.
O modo personalizado se ativa utilizando o comando SET EXTERNAL DATA PATH e indicando uma pasta (diferente
a pasta por padrão) no parâmetro rota.
A seguinte tabela compara as funções e automatizações disponíveis nos modos automático e personalizado:
Configuração da pasta de
armazenamento
Criação, carga e registro dos
arquivos externos
Supressão do arquivo externo se o
registro é eliminado
Supressão do arquivo externo se o
valor nulo for atribuído ao campo
Integração automática quando é
guardada a base
Suporte automático durante a
integração do arquivo de histórico
Suporte dos índices padrões (campos
texto)
Suporte dos índices de palavras
chave (campos texto e imagem)
Suporte das transações
Modo automático
Modo personalizado
Nome e lugar definidos por 4D, só uma
pasta por padrão para toda a base
Nome e localização livres, pode ser
diferente para cada campo
Automático
Automático
Sim
Não
Sim
Não
Sim
Sim (rota externa)
Sim
Sim (rota externa)
Não
Não
Sim
Não
Sim
Não
Localização dos dados externos
Os dados armazenados fora do arquivo de dados são organizados de acordo com os seguintes princípios:
Para cada registro, os dados são armazenados em um arquivo externo chamado xxx.txt (campo de texto), xxx.blob
- 193 -
(campos BLOB e objeto) ou xxx.jpg, xxx.tiff ... (campo de imagem, a extensão depende do tipo Imagem), onde xxx for
um identificador exclusivo (UUID) gerido por 4D.
No modo automático, todos os dados externo são colocados em uma pasta chamada <NomDoBanco>. ExternalData
onde <NomDoBanco> for substituído pelo nome da estrutura de banco de dados de arquivo. Esta pasta está
localizada ao lado do arquivo de dados do banco (arquivo .4 DD).
Dentro dessa pasta, 4D cria uma pasta para cada tabela que possui dados externos (chamado "Tabela + número da
tabela"), então uma subpasta para cada campo externo (chamado "Campo + número do campo"). Os primeiros 100
elementos de campo são armazenados no primeiro nível desta pasta, os seguintes são armazenadas em subpastas
numeradas a partir de "2", com cada subpasta contendo 100 itens. Por exemplo, se o campo No. 5 da tabela No.3 do
banco de dados "Contabilidade" for armazenadado fora do arquivo de dados, a seguinte estrutura árvore for criada
por 4D:
Contabilidade.4DD
[Contabilidad.ExternalData]
Tabela3
Campo5
Data_1B7F3A 56F6544B45951EFA60426D5ABC.txt
Data_1B7F3A 56F6544B45951EFA60426D5CCC.txt
...
2
Data_2ADBFBA478AAE4409DA9C2D13C90A53B.txt
Data_32F8A30B87EE7E4BBC802468D553DC43.txt
...
Em modo personalizado, o nome e a localidade da pasta puder ter sido configurada livremente e se puder ter sido
especificada separadamente para cada campo que for armazenado de forma externa vía o comando SET
EXTERNAL DATA PATH. Esta configuração não for guardada na estrutura do banco de dados.
Criar e atualizar arquivos
No modo automático, a escrita de campo em um arquivo externo é feita no momento do registro no disco (após a validação
da transação se necessário):
Se o arquivo externo não existir: no modo automático, ele é criado; em modo personalizado, é devolvido um erro;
Se um arquivo externo já existir, 4D vai substitui-lo por um novo.
Se você deseja manter o arquivo , você pode especificar um caminho diferente (usando o SET EXTERNAL DATA
PATH), ou utilizando o comando RELOAD EXTERNAL DATA para carregar na memória o conteúdo do campo de
seu arquivo externo antes de salvá-lo em disco novamente. Essa opção é útil quando o arquivo tenha sido modificado
por outro aplicativo depois de carregar o registro.
Sincronização e replicação
O armazenamento de dados é um parâmetro local, em cada banco de dados. Durante a sincronização ou replicação (ver
Replicação via SQL, estes parâmetros podem variar entre o banco de dados local e o banco de dados remoto Neste caso,
o armazenamento está em conformidade com os parâmetros de cada banco de dados;. a sincronização ou replicação não
as modifica.
Por exemplo, se um campo imagem do banco de dados remoto é salvo normalmente fora do arquivo de dados e este
mesmo campo no banco de dados local é armazenado no arquivo de dados, quando ocorre a replicação, quaisquer dados
adicionados a este campo no banco de dados local (no arquivo de dados) são armazenados fora do arquivo de dados no
banco de dados remoto.
Acesso externo a arquivos
Arquivos de armazenamento externos são acessíveis em modo de leitura / escrita em outros aplicativos diferentes de 4D
(sistemas operacionais, editores de texto ou gráficos, etc.). No entanto, isto deve ser feito com cuidado, já que eles podem
alterar o funcionamento da aplicação:
Se um armazenamento externo arquivo é excluído, renomeado ou movido pelo sistema operacional ou uma aplicação
de terceiros, 4D considera que o campo tem o valor nulo e no modo automático, o arquivo será criado de novo (se não
for nulo) quando o registro for salvo. Em modo personalizado, um erro é gerado quando o comando SET EXTERNAL
DATA PATH for executado.
Se você usar índices e se os arquivos de armazenamento forem modificados por um aplicativo de terceiros, sem que
os registros pai sejam reescritos no disco, os índices não são atualizados.
Nota: Os arquivos de texto externos são salvos no formato UTF-8 sem BOM. Se eles são abertos por um aplicativo de
terceiros e, em seguida, salvos com BOM, ainda podem ser reaberto por 4D, mas serão salvos sem BOM.
- 194 -
Note-se que o carregamento de um registro em modo "read-only" não bloqueia os arquivos externos dos campos deste
registro. Esses arquivos ainda podem ser modificados no disco por 4D ou aplicativos de terceiros, embora o seu conteúdo
tenha sido carregado na memória para 4D.
- 195 -
Regras para nomear tabelas e campos
Os nomes de tabelas e campos devem respeitar as seguintes regras:
O nome pode ter até 31 caracteres.
Deve começar por uma letra do alfabeto.
Pode conter combinações de letras, números, espaços e subscritos.
Os caracteres seguintes não são permitidos em nomes de tabelas (geram erro no editor de Estrutura): ( ) + - / * " ; = & |
# > < ^ ' { } % DIAMOND (0x00D7), CUBE (0x00B3), SQUARE (0x00B2), PLUS-MINUS (0x00B1)
Em geral, deve evitar caracteres que possam causar que o nome seja mal interpretado em 4D ou em linguagens
externas, por exemplo sinais de pontuação (vírgulas, pontos, etc.)
4D trunca os nomes das tabelas que superam os 31 caracteres e exclui os espaços ao principio e ao final do nome.
Não utilize o mesmo nome para dois objetos visíveis. Se você utiliza o mesmo nome duas vezes, uma caixa de diálogo
de alerta lhe indicará que outro objeto visível já tem este nome e, portanto a entrada não é possível..
Não utilize os nomes reservados para tabelas ou campos. Os nomes reservados incluem os nomes de comandos
(Data, Hora, etc.), palavras chaves (If, For, etc.) e constantes.
Recomendação: Ainda que seja possível inserir espaços nos nomes dos objetos, introduzir um nome sem espaços lhe
permitirá, no editor de métodos, selecionar o objeto fazendo duplo clique diretamente nele. Portanto se recomenda utilizar
um underscore no lugar de um espaço.
Notas:
Devem ser respeitadas regras adicionais quando os objetos devem ser manipulados através do SQL: só se aceitam
os caracteres _0123456789abcdefghijklmnopqrstuvwxyz, e o nome não deve incluir palavras reservadas SQL
(command, attribute, etc.). A área “SQL” do Inspetor lhe avisará se o nome não respeita uma regra SQL (ver o
parágrafo UNREGISTER CLIENT).
Também deve ter certeza de utilizar caracteres que sejam compatíveis com JavaScript se deseja acessar a suas
tabelas e campos desde uma aplicação Wakanda por meio de um link 4D Mobile (Programming and Writing
Conventions na documentação Wakanda).
- 196 -
Criar e modificar Índices
É possível associar índices aos campos que são utilizados freqüentemente para efetuar as pesquisas e ordenações. Por
exemplo, é possível indexar um campo que armazene os sobrenomes, empresas, ou nomes de produtos se você planeja
efetuar pesquisas de registros particulares ou ordenar os registros com ajuda destes campos. Também é possível utilizar
estas propriedades para os campos que estabelecem relações entre as tabelas. Para maiores informações, consulte a
seção Criar e modificar Relações.
Quando um índice é associado a um campo, 4D cria uma tabela de índices para o campo. Esta tabela permite a 4D realizar
rapidamente pesquisas e ordenações no campo. Quando se realiza pesquisas ou ordenações em um campo não indexado,
4D explora seqüencialmente os dados e examina cada registro. A indexação permite a 4D evitar buscar em todos os
registros.
É possível indexar os campos de tipo Alfa, Texto, Data, Hora, Booleano, Inteiro, Inteiro longo, Inteiro 64 bits, Real, Flotante e
Imagem . Quando se adiciona e exclui registros, 4D atualiza automaticamente sua tabela de índices. Se você criar um índice
para um campo que já existe, 4D indexa automaticamente os dados existentes. É possível definir tantos campos indexados
quanto desejar. Os índices também são recreados durante operações específicas como a conversão de bases antigas ou a
compactação de dados.
Não indexe todos os campos. Um índice aumenta o tamanho do banco, utilizando mais espaço em disco. Utilizar muitos
índices também aumenta o tempo necessário para salvar um registro já que 4D atualiza as tabelas de índices com cada
validação de registros.
Os campos indexados são exibidos em caracteres em negrito no editor de estrutura.
Tipos de Índices
4D propõe diferentes tipos de índices. A escolha de um tipo de índice é efetuada em função do resultado esperado e o tipo
de dado presente no campo. A escolha de um tipo de índice é efetuada em função do resultado esperado e do tipo de dado
presente no campo. Existem três tipos principais de índices:
Índices padrões: este índice mono-campo permite acelerar as operações habituais do banco de dados (pesquisa e
ordenações). 4D lhe permite escolher a arquitetura interna deste tipo de índice: Árvore-B ou Árvore-B agrupada.
Índices compostos: este índice armazena valores combinados de dois ou mais campos que com freqüência se
buscam juntos, por exemplo Sobrenome+Nome.
Índices de palavras chaves: estes índices estão disponíveis unicamente para os campos de tipo Alfa, Texto e
Imagem. Estão desenhados para facilitar as pesquisas rápidas em textos ou no caso das imagens, entre as palavraschave associadas as imagens.
Índices Padrão
Um índice padrão está desenhado para acelerar as operações do banco de dados (um índice padrão faz referência a um
índice genérico, contrário a um índice de palavras chaves ou a um índice composto). 4D oferece dois tipos de arquiteturas
para os índices padrões: Árvore-B e Árvore-B agrupada.
Árvore-B: índice de tipo B-Tree clássico. Este tipo de índice multi-propósito responde a maioria das necessidades de
indexação.
Árvore-B agrupada: índice de tipo B-Tree utilizando os clusters. Esta arquitetura é mais eficiente quando o índice não
contém um grande número de chaves, ou seja, quando os mesmos valores ocorrem freqüentemente nos dados.
Nota: um índice Árvore-B associado com um campo do tipo Texto armazena os primeiros 1024 caracteres do campo
(Máximo). Portanto, nesse contexto, buscas por strings contendo mais que 1024 caracteres não funcionarão.
Quando se escolhe a arquitetura do índice, 4D também propõe a opção Automática. Neste caso, 4D seleciona a
arquitetura em função da natureza dos dados. A opção Automática é a única opção disponível para Objetos campos. Na
verdade, nesse caso, todos os caminhos de atributo são automaticamente indexados.
Índices compostos
Os índices compostos armazenam o valor conjunto de dois ou mais campos para cada entrada. O exemplo clássico é um
índice composto baseado nos campos Nome+Sobrenome. A pesquisa de “Pedro Silva” será otimizada em comparação
com uma pesquisa padrão (pesquisa de “Silva” e logo pesquisa de “Pedro”).
4D leva vantagem automaticamente dos índices compostos durante as pesquisas e ordenações. Por exemplo, se existe um
- 197 -
índice composto “Cidade+Código Postal”, será utilizado em caso de uma pesquisa do tipo sobrenome=Abreu e cidade=Rio
de Janeiro e CódigoPostal=22121.
No editor de estrutura, a criação dos índices compostos se realiza sob a caixa de diálogo de criação de índices. Para uma
descrição detalhada desta caixa de diálogo, consulte o parágrafo “Criar um Índice” abaixo.
Índice de palabras-chaves
Os campos Alfa, Texto e Imagem podem ter um tipo de índice específico: palavras chaves. Quando se associa este tipo de
índice com um campo Alfa ou Texto, os textos armazenados no campo serão indexados palavra por palavra. Todas as
palavras se indexarão inclusive se tiverem 1 ou 2 caracteres. Este tipo de índice permite acelerar drásticamente as
pesquisas posteriores por palavras chaves em campos de tipo texto
É possível associar de uma vez um índice padrão e um índice de palavras chaves aos campos Alfa e aos campos
Texto (quando se armazena com os registros). 4D utilizará o índice apropriado em função do contexto.
Quando associado este tipo de índice a um campo Imagem, as pesquisas entre as palavras chaves associadas as
imagens (meta dados) se aceleram de maneira significativa. Atenção: os índices de palavras chaves de imagens são
baseadas exclusivamente nos meta dados de tipo IPTC/Keywords. Estes tipos de meta dados estão suportados em
particular pelos formatos TIFF e JPEG (note que BMP, PNG e GIF não os suporta). Outros tipos de meta dados não
são suportados pela indexação.
A atualização dos índices de palavras de imagens é efetuada automaticamente por 4D cada vez que se guarda o
campo Imagem (criação ou modificação do registro, importação de dados, etc.). Os meta dados de tipo
IPTC/Keywords são indexados automaticamente por 4D quando estão presentes na imagem (não é necessário
chamar ao comando SET PICTURE METADATA para incluir-lo no índice do campo imagem).
Pode utilizar o comando DISTINCT VALUES para obter a lista de palavras chaves contidas em um índice de palavras
chaves.
Utilize os índices de palavras chaves texto ou imagem com ajuda do operador % : este operador deve localizar-se nas
fórmulas de pesquisa ou de ordenação para utilizar especificamente um valor de índice. Por exemplo:
QUERY([IMAGENS];[IMAGENS]Fotos%"gatos")
// busca as fotos associadas a palavra chave gatos
Isto funciona da mesma forma para todos os comandos de pesquisa e ordenação: QUERY BY FORMULA, QUERY
SELECTION, ORDER BY, etc.
Para maior informação sobre o operador % e as pesquisas por palavras chaves, consulte a seção Operadores de
Comparação no manual Linguagem de 4D.
Lista de Índices
O botão
da barra de ferramentas do editor de estrutura mostra a janela da Lista de Índices. Essa janela mostra a lista
e propriedades de todos os índices de estrutura, sem importar o tipo:
A lista de índices permite visualizar as principais propriedades dos índices:
Tipo: tipo de índice. Cada tipo de índice (Árvore-B, Árvore-B agrupada, palavras chaves) é representado com um
ícone diferente.tipo de índice. É possível modificar o tipo de índice clicando no triângulo invertido e selecionando um
valor diferente no menu pop-up.
Descrição: tabela e campos do índice. Para um índice composto, esta lista contém todos os campos do índice..
- 198 -
Nome: nome do índice. Esta propriedade é utilizada particularmente nos comandos de linguagem. Você pode alterar
ou adicionar um nome de índice fazendo duplo clique nesta área.
O botão
mostra a caixa de diálogo de configuração do índice.
O botão
exclui o índice selecionado (aparece uma caixa de diálogo de confirmação). Este botão pode ser utilizado
particularmente para excluir os índices compostos.
Dois comandos adicionais são acessíveis através do menu associado ao botão de ferramentas (disponível quando um
índice é selecionado):
Modificar: exibe as propriedades do índice selecionado na caixa de diálogo de configuração do índice (ver o próximo
parágrafo). Este comando tem o mesmo efeito que um clique duplo em uma linha da lista (exceto para a área do
nome).
Reconstruir: permite excluir e reconstruir o índice selecionado. Ao selecionar este comando aparece uma caixa de
diálogo de confirmação.
Criar um índice
A maneira de criar um índice depende de seu tipo. Adicionalmente, você pode escolher criar um índice diretamente ou por
meio da caixa de diálogo de criação de índices.
Para criar diretamente um índice padrão:
1. Selecione um campo, logo selecione um valor no menu “Índice” da palheta do Inspector.
OU
Clique com botão direito no campo logo selecione um valor no sub-menu Índice>do menu contextual.
Você dispõe de quatro opções:
Árvore-B: cria um índice de tipo árvore-B clássico..
Árvore-B agrupada: cria um índice de tipo árvore-B utilizando clusters.
Automático: 4D seleciona a arquitetura em função dos dados.
Nenhum: nenhum índice ou eliminação do índice existente..
Para criar diretamente um índice de palavras chaves:
- 199 -
1. Selecione um campo Alfa, Texto ou Imagem, logo selecione a opção “Índice de palavras chaves” no Inspetor de
campo.
OU
Clique com o botão direito em um campo, logo selecione Palavras chaves no sub-menu índice> do menu contextual.
Para criar um índice composto ou todo tipo de índice utilizando a caixa de diálogo de criação de índices::
1. Selecione a opção Novo índice no menu contextual da tabela ou Índice no menu de adição de objetos da barra de
ferramentas do editor.
Ou
Selecione vários campos enquanto pressiona o botão Ctrl (Windows) ou Command (OS X) logo faça clique direito
em um dos campos e selecione Novo índice no menu contextual.
A caixa de diálogo de configuração de índice aparece. Ela contém os seguintes elementos:
Tabela: pronta todas as tabelas do banco. Escolha neste menu a tabela a qual pertencerá o índice.
Nome: área de entrada do nome do índice. Este nome é utilizado pelos comandos de linguagem de 4D.
Tipo: menu de seleção do tipo de índice a ser criado. Se você conservar a opção “Automática”, 4D escolherá
automaticamente o tipo de índice em função do conteúdo do campo.
Lista de campos: esta área é utilizada para especificar o(s) campo(s) associados ao índice. Pode conter um
campo padrão dependendo da seleção atual no editor.
Para adicionar um campo ao índice, clique no botão
que se possa indicar o campo a adicionar ao índice.
. A lista de campos da tabela selecionada é exibida de maneira
Se deseja criar um campo composto, adicione cada campo a ser incluído no índice. Uma vez que a lista esteja
completa, é possível reorganizar os campos utilizando as setas ou utilizando arrastar e soltar.
Se criar um índice composto baseado nos campos da chave primária, tenha certeza de colocar os campos no mesmo
ordem na chave primária e no índice.
Se você escolheu o tipo “Índice de palavras chaves”, somente os campos Alfa ou Texto podem ser selecionados.
Neste caso, você não pode incluir somente um campo no índice.
Para excluir um campo do índice, selecione-o e clique no botão .
Uma vez configurado o índice, clique em Aceitar para gerar o índice.
Eliminar um índice no editor de estrutura
Você pode excluir a qualquer momento um índice que já não seja útil. Esta operação pode ser efetuada diretamente no
editor de estrutura ou utilizando a janela Lista de índices. Para maiores informações sobre a janela Lista de índices, consulte
o parágrafo “listar índices”
Para excluir um índice padrão:
1. Selecione o campo associado ao índice a ser excluído, logo escolha a opção Nenhum no menu Índice do Inspector..
OU
2. Clique com o botão direito no campo associado com o índice, logo escolha a opção Nenhum no sub-menu Índice do
menu contextual.
- 200 -
Para excluir um índice de palavras chaves::
1. Selecione o campo associado ao índice que deseja excluir, logo deselecione a opção “Palavras chaves” no Inspector.
OU
2. Clique com o botão direito no campo associado ao índice, logo deselecione a opção Palavras chaves no sub-menu
índice> do menu contextual.
A eliminação (e visualização) de um índice composto só pode ser efetuada a partir da janela Lista de índices (utilizando o
botão ).
Reindexar um campo
Você pode reindexar um campo a qualquer momento, ou seja, reconstruir as tabelas de índices associadas a ele, de acordo
com os dados presentes. Isto pode ser útil na manutenção de aplicações.
A reindexação pode ser efetuada através do comando Reconstruir da lista de índices (botão de ferramentas, ver acima).
Lembre que modificar a linguagem dos dados (consultar Comparação de texto) ou operações de manutenção como
compactar (ver Compactar) também causarão reindexação.
- 201 -
Criar e modificar Relações
Pode criar ou excluir relações através do editor de estrutura ou através dos comandos SQL de 4D. Esta seção trata da
criação de relações no ambiente Desenho. Para maior informação sobre o uso de instruções SQL em 4D, consulte o
Manual de referência SQL de 4D.
Criar uma relação
Para criar uma relação entre duas tabelas trace manualmente uma linha entre dois campos ou utilizando o menu de
adicionar objetos da barra de ferramentas.
Para criar uma relação entre duas tabelas utilizando a janela do editor de estrutura:
1. Na janela de Estrutura, mova o mouse sobre o campo chave "estrangeiro" para a relação.
2. Mantenha pressionado o botão do mouse e arraste até a tabela com que será relacionado.
A medida que move o mouse, 4D seleciona o campo e cria a relação, como mostrado abaixo:
3. Arraste ao campo chave primária na tabela Um e solte o botão do mouse.
Para criar uma relação desde o menu de adição de objetos:
1. Selecione dois campos do mesmo tipo que pertençam a duas tabelas diferentes.
2. A ordem de seleção determinará a direção da relação. O primeiro campo selecionada é considerado como o campo
chave estrangeira (campo Muitos) e o segundo como o campo Chave Primária (campo Um).
3. No menu de adição de objetos da barra de ferramentas do editor, selecione a opção Relação.
4D mostra a relação como uma flecha entre duas tabelas no editor de estrutura. A forma do conector de origem e fim, assim
como os caracteres N e 1, indica a direção da relação:
Inspetor mostra as propriedades da relação (ver a seção Propriedades de Relações).
- 202 -
Relações criadas com SQL
A aparência das relações é diferente quando são geradas com SQL (conectores de quadrados):
Eliminar uma relação
4D permite excluir uma relação a qualquer momento:
1. Selecione a relação a ser excluída.
Quando se seleciona uma relação, seu contorno se torna azul.
2. Clique com o botão direito na relação e escolha o comando Excluir do menu contextual.
OU
Pressione Delete ou Backspace.
Em ambos os casos, aparece uma caixa de diálogo de alerta que permite confirmar ou anular esta ação. Se você confirmála, 4D elimina a seta e as tabelas já não estarão relacionadas. Os possíveis índices dos campos Muitos e Um não são
excluídos.
Redefinir uma relação
É possível redefinir uma relação a qualquer momento. Por exemplo, se por algum erro, você desenhar a relação entre
campos equivocados ou se deseja alterar uma propriedade da relação, 4D permite redefinir uma relação simplesmente
redesenhando a relação novamente.
No caso de estruturas complexas, é possível selecionar os campos nas tabelas fonte e de destino de uma relação com
ajuda dos comandos Selecionar campo fonte e Selecionar campo de destino, localizados no menu contextual da
relação.
Para redefinir uma relação utilizando os mesmos campos, faça duplo clique na relação no editor de estrutura. 4D mostra as
propriedades da relação no Inspector para que se possa efetuar todas as alterações necessárias.
Para redefinir uma relação utilizando um campo diferente da tabela Um, desenhe novamente a relação a partir do campo
Muitos.
Para redefinir uma relação utilizando um campo diferente na tabela Muitos, primeiro elimine a relação equivocada antes de
desenhar a relação completa.
- 203 -
Tipos de relações
O tipo de relação mais comumente usado é a relação entre uma tabela Muitos e uma tabela Um, chamada relação Muitos
para Um. Entretanto, também pode criar relações Muitos a Muitos e Um a Um. Todas as relações podem ser manuais ou
automáticas.
Relações manuais e automáticas
As relações podem ser automáticas ou manuais.
Em uma relação automática, quando um registro em uma tabela relacionada se converte no registro atual, 4D seleciona o(s)
registro(s) correspondentes. Estes registros especificados podem ser visualizados, impressos, modificados, ou utilizados
para realizar pesquisas e ordenações. Não é necessário utilizar programação.
Em uma relação manual, você pode exercer controle sobre a carga em memória dos registros correspondentes por parte de
4D. Para exercer este controle é necessário utilizar métodos. Para maiores informações sobre a criação de métodos que
controlem tabelas relacionadas, consulte o Manual de Linguagem 4D.
É possível utilizar uma relação manual se você deseja otimizar o rendimento de aplicações especificas que não necessitem
carregar todos os registros correspondentes de uma vez. Por exemplo, se sua estrutura relaciona 3 ou mais tabelas, você
poderia querer controlar quando carregar os registros relacionados em memória. É possível utilizar uma relação manual se
você deseja relacionar duas tabelas com duas relações diferentes. Só pode existir uma relação automática entre duas
tabelas, enquanto que o número de relações manuais entre duas tabelas não tem limite.
Relações Muitos a Um
Ao criar uma relação entre duas tabelas, a tabela que contém a chave primária na relação é chamada de tabela Um e a
tabela contendo a chave estrangeira na relação é chamada de tabela Muitos. As tabelas se denominam Um e Muitos porque
em um registro da tabela Um está relacionado com muitos registros da tabela Muitos e muitos registros da tabela Muitos
estão relacionados com um registro da tabela Um. Este tipo de relação é denominado relação Muitos para Um.
Em uma relação entre empregados e empresas, a tabela [EMPRESAS] é a tabela Um e a tabela [EMPREGADOS] é a
tabela Muitos. O registro de uma empresa está relacionado com vários empregados (todos os empregados desta empresa)
e vários empregados estão relacionados com uma empresa (a empresa para qual trabalham). Por exemplo, pode haver um
registro correspondente a empresa Acme na tabela [EMPRESAS] e vários registros de pessoas empregadas por Acme na
tabela [EMPREGADOS].
Quando um registro da tabela [EMPREGADOS] se converte no registro atual, 4D carrega o registro correspondente da
tabela [EMPRESAS]. Se alguns campos foram incluídos a partir da tabela [EMPRESAS], os valores destes campos são
publicados automaticamente.
A imagem a seguir mostra como o nome da empresa em um registro da tabela [EMPREGADOS] especifica um registro da
tabela [EMPRESAS] de maneira que o registro da tabela [EMPREGADOS] pode exibir o endereço e o número telefônico da
empresa.
- 204 -
Por outro lado, quando um registro da tabela [EMPRESAS] se converte no registro atual, 4D cria uma seleção de registros
da tabela [EMPREGADOS] e os exibe no formulário. Como a relação especifica diversos registros na outra tabela, os
nomes e cargos de muitos empregados podem ser exibidos. Somente registros atualmente exibidos no formulário estão
carregados na memória.
A imagem a seguir mostra como o nome de uma empresa em um registro da tabela [EMPRESAS] especifica vários
registros da tabela [EMPREGADOS] de maneira que o registro da tabela [EMPRESAS] possa mostrar uma lista de
pessoas empregadas por esta empresa.
A diferença entre a tabela Um e a tabela Muitos é própria de cada relação. Uma tabela pode ser a tabela Um em uma
relação e pode ser a tabela Muitos em outra relação. Uma tabela em uma relação só necessita ter uma chave primária, mas
pode ter várias chaves estrangeiras.
Por exemplo, suponha que você decide enviar um pacote de mercadoria de amostra para todas as pessoas da tabela
[EMPREGADOS]. Você adiciona uma tabela [Tarifa_Postal] que contém os códigos postais e a tarifa postal para cada
código postal. O uso desta estrutura lhe permite imprimir as etiquetas para cada pessoa, incluindo o valor para enviar o
pacote. A imagem abaixo mostra a tabela [Tarifa_Postal] adicionada à estrutura do banco de dados.
- 205 -
O campo Código_Postal da tabela [CODIGOS_POSTAIS] é a chave primária, assim que nesta relação, a tabela
[Tarifa_Postal] é a tabela Um. O campo CodigoPostal na tabela [EMPRESAS] é a chave estrangeira para esta relação:
neste caso, podem ter valores duplicados para empresas que estão em uma mesma área. A tabela [EMPRESAS] é então a
tabela Muitos para a relação com a tabela [CODIGOS_POSTAIS].
Uma tabela é uma tabela Um ou Muitos dependendo da relação com a outra tabela. A tabela [EMPRESAS] é a tabela
Muitos na relação com a tabela [CODIGOS_POSTAIS] e é a tabela Um na relação com a tabela [EMPREGADOS].
Relações Um a Um
As relações Um a Um são utilizadas apenas em casos especiais, já que as tabelas relacionadas por esse tipo poderiam ter
sido combinadas em uma só tabela.
Algumas das razões para utilizar relações Um a Um são:
Seu banco tem dados de tipo Texto, Imagem ou BLOB muito grandes. Estes campos poderiam fazer com que o banco
de dados fique lento se são carregados na memória quando um registro é convertido no registro atual. Ao colocar os
textos, imagens, ou BLOBS em outra tabela, pode carregar na memória apenas os dados de que necessita, e dessa
forma otimizar o funcionamento do banco.
Seu banco contém um número muito grande de campos e necessita dividir os campos em grupos lógicos. As tabelas
separadas podem tornar o banco de dados mais rápido e fácil de usar.
Para limitar o acesso a certos campos. Utilizando tabelas separadas, pode atribuir diferentes privilégios de acesso
para cada tabela.
Relações Muitos a Muitos
Algumas vezes, é necessário relacionar muitos registros em uma tabela com muitos registros em outra tabela. Este tipo de
relação é conhecida como relação Muitos para Muitos.
Um exemplo de uma relação Muitos para Muitos é um banco de dados que faz o acompanhamento das matrículas de
estudantes. Imagine que este banco tem duas tabelas: [Estudantes] e [Matérias]. Um estudante pode se inscrever em várias
matérias e uma matéria pode ter vários estudantes. Você deseja ver as matérias em que o estudante se matriculou e todos
os estudantes matriculados em uma matéria.
Outros exemplos de relações Muitos para Muitos são:
[Fornecedores] e [Produtos]: cada fornecedor fornece diferentes produtos e cada produto pode ser fornecido por
diferentes fornecedores.
[Empregados] e [Contas]: cada empregado trabalha em diferentes contas e cada conta pode ser utilizada por
diferentes empregados.
[Filmes] e [Atores]: cada filme reúne diferentes atores e cada ator pode participar de diferentes filmes.
É possível utilizar 4D para criar automaticamente relações Muitos para Muitos. A chave é criar uma tabela intermediária
relacionada a outras tabelas utilizando relações Muitos para Um. Logo é possível criar os formulários de entrada e saída
para controlar o acompanhamento e visualização de dados.
Esta seção descreve o uso das relações automáticas para administrar uma relação Muitos para Muitos.
A imagem a seguir mostra o banco de dados de inscrições com três tabelas, [ESTUDANTES], [MATERIAS] e
[MATRÍCULAS]. Esta seção utiliza a estrutura deste banco de dados para explicar como funcionam as relações Muitos para
Muitos.
- 206 -
A tabela [ESTUDANTES] é uma tabela Um. Contém um registro por cada estudante, incluindo seu nome, sobrenome e
média escolar. Seu Código de Estudante o o identifica de maneira única.
A tabela [MATÉRIAS] também é uma tabela Um. Contém um registro para cada matéria, incluindo o nome da matéria e o
professor. O campo Código da Matéria identifica cada matéria de maneira única.
Uma tabela intermediária, a tabela [MATRÍCULA], é a tabela Muitos para as outras duas tabelas. Contém registros de vários
estudantes e matérias. Os formulários desta tabela são utilizados para entrada e exibição de dados de outras duas tabelas.
O uso de três tabelas assegura que os dados sejam armazenados eficientemente. O registro completo de um estudante só
é armazenado uma vez. Os registros que relacionam os estudantes e as classes são armazenados uma vez por cada
inscrição. Toda a informação está disponível em qualquer combinação.
Entrar dados com relações Muitos a Muitos
É utilizada uma tabela intermediária, neste exemplo a tabela [MATRICULAS], para introduzir e mostrar informação das
outras duas tabelas. Cada registro introduzido na tabela [ESTUDANTE_MATERIA] está relacionado com as outras tabelas
(ESTUDANTES e MATERIAS). Os registros da tabela [MATRICULAS] só contém as duas partes de informação que
estabelece a relação: a identificação do estudante e o nome da matéria.
Este é um exemplo de um registro que está sendo introduzido na tabela [MATRICULAS]:
Este registro indica que o estudante José da Silva está inscrito na classe de programação avançada. Este registro combina
informação da outras duas tabelas.
Um registro similar existe por cada matéria na qual o estudante haja feito inscrição. Na tabela [MATRICULAS] só estão
armazenados os campos de identificação do estudante e o nome da matéria. Cada registro indica a inscrição de um
estudante em particular a uma matéria específica.
Nota: Quando um registro da tabela [MATRICULAS] é carregado (como durante sua criação), é criado automaticamente
uma seleção de registros nas tabelas relacionadas. A seleção está composta pelos registros de estudantes e matérias
correspondentes. Ao abrir cada uma das outras tabelas, você constatará que só se mostra um registro. Para mostrar todos
os registros, selecione Exibir todos no menu Pesquisas.
O formulário de entrada para este registro é mostrado a seguir. Note que contém campos das tabelas [ESTUDANTES] e
[MATERIAS].
- 207 -
Os dados são introduzidos unicamente nos campos de identificação do estudante e da matéria. Quando se introduz a
identificação de um estudante, 4D busca a informação do estudante na tabela relacionada [ESTUDANTES] e a exibe nos
campos Sobrenome e Nome. Igualmente, quando se introduz a identificação da matéria, 4D busca a informação na tabela
relacionada [MATERIAS] e a exibe no formulário de entrada.
Exibir informação usando um sub-formulário
É possível exibir informação destas três tabelas utilizando sub-formulários. No registro do estudante, é possível exibir todas
as matérias nas quais está inscrito. É possível exibir todos os estudantes inscritos em uma classe particular a partir do
registro da classe..
Para mostrar a lista de matérias no registro de um estudante, utilize um sub-formulário. Para maiores informações sobre a
criação de sub-formulários, consulte a seção Criar e definir um subformulário.
O registro da imagem anterior está na tabela [ESTUDANTES]. É exibida a informação do estudante na parte superior, e o
sub-formulário na parte inferior mostra a informação das matérias inscritas, trazida da tabela [MATRICULAS].
Note que o sub-formulário corresponde à tabela [MATRICULAS], não à tabela [MATERIAS]. A tabela [MATRICULAS] contém
os registros que conectam os dados do estudante com os dados das matérias. Os sub-formulários contém o campo Nome
da matéria [MATERIAS]. Devido à relação entre as tabelas [MATRICULAS] e [MATERIAS], 4D pode mostrar o nome da
matéria automaticamente.
Este é um exemplo de um registro que exibe a lista de estudantes matriculados em uma classe:
- 208 -
Este é um registro da tabela [MATERIAS]. Exibe informação da matéria e a lista de estudantes inscritos. A informação dos
estudantes também é trazida da tabela [MATRICULAS], que contém os registros que relacionam as classes com os
estudantes inscritos nelas.
Nos exemplos anteriores de sub-formulários, você pode introduzir dados em todos os campos exibidos. Por exemplo, para
introduzir o registro de um novo estudante, coloque o cursor no último registro do sub-formulário e pressione as teclas Ctrl +
Shift + /: (Windows) ou Comando+ Shift + / (Mac OS) para criar um novo registro (você pode mudar o atalho em
Propriedades do Banco de dados, consulte ). Quando introduzir o nome da matéria, o resto da informação é introduzido
automaticamente no registro.
Análise das relações do banco de dados
As relações estabelecidas em um banco de dados têm um papel muito importante no funcionamento do banco controlando o
fluxo de dados entre as tabelas.
Se um registro com uma relação automática é carregado em um formulário de entrada, os registros da tabela relacionada
correspondente serão selecionados. Se a relação seleciona somente um registro em uma tabela relacionada, esse registro
será carregado a partir do disco. Se a relação faz referência a vários registros, uma nova seleção atual de registros será
criada para esta tabela e será carregado o primeiro registro dessa seleção. O registro que é carregado se chama registro
atual da tabela.
Nos exemplos deste capítulo, foram definidas relações entre não mais que três tabelas. Em realidade, com freqüência se
definem relações entre várias tabelas e se ativa uma relação, 4D cria uma seleção de registro na tabela relacionada e
carrega um registro. O registro carregado é convertido no registro atual para a tabela e se a tabela tem uma relação
automática, 4D cria uma nova seleção na tabela seguinte da cadeia, e assim por diante.
Se as relações das tabelas não foram definidas cuidadosamente, o fluxo de informação entre as tabelas pode chegar a ser
desordenado ou incorreto. Os casos a seguir ilustram estruturas relacionais as quais é necessário prestar muita atenção.
Relações circulares
Uma relação circular é um conjunto de relações definidas de maneira que a transferência de dados forme um loop
indefinidamente. A imagem a seguir lhe mostra uma relação circular na qual a tabela [EMPREGADOS] está relacionada a
tabela [EMPRESAS], que por sua vez está relacionada a tabela [SEGURADORA], que volta a se relacionar com a tabela
[EMPREGADOS].
- 209 -
Quando um registro da tabela [EMPREGADOS] é carregado, 4D carrega o registro correspondente da tabela
[EMPRESAS]. Este registro é convertido no registro atual da tabela [EMPRESAS], o que implica a carga do registro
relacionado da tabela [SEGURADORA].
Se as relações tivessem permissão para continuar, os registros relacionados com esta seguradora (todas as pessoas
asseguradas pela empresa) seriam selecionadas na tabela [EMPREGADOS] e o primeiro registro dessa seleção se
converteria no registro atual. Observe que este registro atual pode ser diferente ao registro atual que tinha inicialmente
quando se iniciou a progressão. Neste caso, 4D não tem como saber qual o verdadeiro registro atual.
Quando 4D encontra este tipo de relações circulares, as relações entre as tabelas são detidas na última tabela na última
tabela na cadeia. Neste caso, a relação entre as tabelas [SEGURADORA] e [EMPREGADOS] não é realizada.
Relações múltiplas para a mesma tabela
Um conflito similar entre registros atuais ocorre se existe mais de um link a mesma tabela.
Como não é possível ter mais de um registro atual por vez, não é possível controlar uma relação automática na qual duas ou
mais tabelas estão relacionadas com a mesma tabela.
A imagem a seguir mostra uma estrutura de banco de dados na qual uma tabela e sua sub-tabela estão relacionadas com a
mesma tabela.
Quando um usuário está trabalhando com um registro da tabela [EMPREGADOS], o registro relacionado da tabela
[SEGURO] é carregado e se converte no registro atual para esta tabela.
Entretanto, também existe uma relação entre a sub-tabela [BENEFICIARIOS] e a tabela [SEGURO]. Isto significa que outro
- 210 -
registro relacionado é carregado na tabela [SEGURO] de acordo com o sub-registro atual da tabela [BENEFICIARIOS] (o
primeiro registro da seleção atual). Se a empresa asseguradora dos beneficiários é diferente a de seus pais, esta estrutura
relacional causará problemas. Neste caso, 4D não detém a execução das relações. Ambas as relações são executadas,
mas não ao mesmo tempo.
Se você deseja utilizar uma estrutura deste tipo, deve utilizar relações manuais e controlar as relações utilizando os
comandos descritos no Manual de linguagem de 4D.
Outro exemplo de uma estrutura relacional que não pode ser controlada com relações automáticas é a de uma estrutura na
qual uma tabela tem mais de uma relação com outra tabela. Cada vez que um usuário modifique um dos campos
relacionados na tabela 1, o registro atual da outra tabela Muitos vai ser alterado. Neste caso, você não pode saber que
relação esta sendo ativada.
Relações de múltiplos registros
Como existe um registro atual em cada tabela, as relações não estão estabelecidas para todos os registros de uma
seleção. Observemos por exemplo o banco de faturamento que é exibido a seguir:
Quando um registro da tabela [FATURAS] é utilizado, é criada uma seleção de registros na tabela [LINHA_FATURA] que
contém todas as linhas para esta fatura. Só é carregado o registro da tabela [ITENS] correspondente ao primeiro registro da
tabela [LINHA_FATURA]. A seleção atual da tabela [ITENS] não contém informação sobre todos os objetos da fatura, só
sobre o primeiro objeto da fatura.
Entretanto, se você coloca a tabela [LINHA_FATURA] em um sub-formulário na tabela [FATURAS], 4D chama cada uma das
linhas de faturamento e ativa a relação para cada uma delas.
- 211 -
Propriedades de Relações
Sempre se desenha uma relação da tabela Muitos a tabela Um.
Os campos relacionados devem ser do mesmo tipo. É possível utilizar estes tipos de campos para os campos chave
primária e chave estrangeira:
string (Alfa e Texto)
numérico (Real, Inteiro, Inteiro longo, Inteiro 64 bits e Float),
Hora
Booleano
Data
Os campos chave primária em geral estão indexados (não obrigatório). As propriedades da relação podem ser
configuradas usando Inspetor ou, em certos casos, usando o menu contextual que aparece quando você clica numa
relação com o botão direito.
Definição
A área de definição identifica os campos chaves estrangeira e primária.
De: O campo “De” é o campo chave estrangeira da tabela Muitos para esta relação. No menu contextual, este campo
se chama “campo fonte.”
Até: O campo “Até” é o campo chave primária da tabela Um. No menu contextual, este campo se chama “campo
destino”. Você traça a relação do campo chave estrangeira da tabela Muitos até o campo chave primária na tabela
Um.
Cor: Este menu pop up permite definir a cor de uma relação tal como será exibida no editor de estrutura. A cor de uma
- 212 -
relação não está associada as suas propriedades.
A cor de uma relação também pode ser definida utilizando o menu contextual das relações.
Opções de Muitos a Um
As opções Muitos para Um permitem definir o funcionamento da relação quando se abre um registro da tabela Muitos.
Nome: Área de entrada do nome da relação Muito para Um (opcional).
Nota: como parte de um link 4D Mobile, este nome se utiliza para criar um atributo relacional correspondente no
modelo junto Wakanda (ver Uso de relações no manual 4D Mobile). Neste caso, deve utilizar um nome que é
compatível com as regras JavaScript.
Manual/Automática: Este menu permite definir o modo de funcionamento da relação que associa a tabela Muitos a
tabela Um. Ao selecionar a opção Automática, as funções de automatização serão ativadas. Por exemplo, quando um
registro da tabela [EMPREGADOS] é aberto no ambiente Aplicação, o registro da empresa correspondente é
selecionado na tabela [Empresas]. Isto permite a 4D mostrar a informação sobre a empresa para a qual trabalha o
empregado.
Por padrão, é selecionada a opção Manual. Neste caso, você deve administrar a carga e descarga do registro
relacionado da tabela Um utilizando as rotinas da linguagem.
Para maiores informações, consulte o parágrafo Relações manuais e automáticas.
A propriedade Relação automática Um também pode ser definida através do menu contextual das relações.
Lista de registros relacionados: Esta opção tem o efeito de inserir, automaticamente e de maneira invisível, o
caractere (@) a todo valor introduzido na tabela Muitos quando o usuário pressiona a tecla Tab ou clica fora do campo.
Se o usuário introduz um valor parcial, 4D busca um valor correspondente no campo relacionado da tabela Um. Se o
programa encontra somente um valor possível, completa a entrada. Se for encontrado mais de um valor possível, dá ao
usuário a lista de valores possíveis.
Advertir se registro Um não existe: Se esta opção estiver selecionada, 4D mostra uma caixa de diálogo que
permite ao usuário criar o registro Um relacionado se não existir. Por padrão, quando você introduzir um valor em um
campo relacionado da tabela Muitos, 4D verifica se existe um registro correspondente na tabela Um relacionada. Se
4D não o encontra, aparece a caixa de diálogo a seguir:
Esta caixa de diálogo permite criar um registro correspondente na tabela Um enquanto introduz um registro na tabela
Muitos. Por exemplo, imagine que seu banco contém uma tabela [Faturas] e uma tabela [Clientes]. Se você introduzir
uma fatura na tabela [Faturas] e o cliente a quem está destinada a fatura não tem um registro correspondente na tabela
[Clientes] quando valide o registro da tabela [Faturas].
É possível eliminar esta caixa de diálogo deselecionando a opção Advertir se registro Um não existe. Eliminar esta
caixa de diálogo é útil quando se deseja controlar a criação do registro Um relacionado utilizando um método.
Campo discriminante
A lista de campos discriminantes permite selecionar um campo adicional para mostrar na lista de valores (que
aparece quando usuário escreve o caractere curinga (@) no campo relacionado durante a entrada de dados).
Geralmente, é melhor selecionar o campo que melhor identifique ao registro.
Assim é como funciona esta opção durante a entrada de dados: 4D permite ao usuário consultar os valores da tabela
Um enquanto introduz dados no campo chave estrangeira na tabela Muitos. O usuário simplesmente usa o caractere
curinga (@) padrão no campo relacionado. Ao fazê-lo, 4D busca a entrada correspondente na tabela Um relacionada.
O caractere curinga pode ser utilizado de duas formas: para completar uma entrada parcial ou para mostrar a lista de
valores válidos. Quando se mostra uma lista, o usuário pode selecionar o valor da lista. Um campo adicional, o campo
discriminante, pode ser mostrado junto ao campo relacionado.
Por exemplo, imagine que o usuário está criado um registro na tabela [Empregados]. Em vez de escrever Acme no
campo Empresa, o usuário pode escrever Ac@ e logo pressionar a tecla Tab para passar ao próximo campo. Como
@ é o caractere curinga de 4D, esta entrada significa que “o valor começa por “Ac” e está seguido por outros
caracteres”. 4D busca na tabela relacionada o registro que corresponda a este critério. Se só encontra um registro,
completa a entrada automaticamente e passa o próximo campo na ordem de entrada do formulário.
A imagem a seguir mostra este tipo de uso dos caracteres curinga.
- 213 -
Se 4D encontra mais de um valor que corresponda ao critério, mostra uma lista de valores para que o usuário possa
selecionar o valor apropriado. A imagem a seguir mostra a lista:
É possível especificar um segundo campo que será mostrada na lista para ajudar ao usuário a decidir que empresa
selecionar. O segundo campo é o campo discriminante que você selecionou na caixa de diálogo de definição do tipo
de relação.
A imagem a seguir mostra a lista de empresas junto com sua cidade. Este campo discriminante ajuda ao usuário a
selecionar a entrada correta se não se lembra o nome da empresa, mas se lembra a cidade em que está localizada.
Para ver uma listagem completa de todas as empresas na tabela [Empresas], o usuário digita apenas @. 4D exibe
uma lista de todas as companhias para que o usuário escolha a correta. A figura abaixo mostra uma lista de
companhias sendo exibida:
- 214 -
A janela de seleção de registros pode ser redimensionadas.
Para ver uma lista de todas as empresas na tabela [Empresas], o usuário deve escrever @ unicamente. 4D mostra
uma lista de todas as empresas para que o usuário selecione a correta.
Opções Um para Muitos
As opções Um para Muitos controlam as relações automáticas em sentido contrário.
Nome: Área de entrada do nome da relação Um para Muitos (opcional).
Nota: como parte de um link 4D Mobile, este nome se utiliza para criar um atributo relacional correspondente no
modelo junto Wakanda (ver Uso de relações no manual 4D Mobile). Neste caso, deve utilizar um nome que é
compatível com as regras JavaScript.
Manual/Automática: Este menu permite definir o modo de funcionamento da relação que une a tabela Um a tabela
Muitos. Se você selecionar a opção Automática, as funções automáticas serão ativadas. Por exemplo, quando um
registro da tabela [Empresas] se abre em modo Aplicação, os registros relacionados na tabela [Empregados] são
carregados. Isto permite a 4D mostrar os registros dos empregados que trabalham para a empresa em um subformulário.Por padrão, a opção Manual é selecionada (não as funções automáticas). Para maiores informações,
consulte o parágrafo Relações manuais e automáticas. A propriedade Relação automática Um para Muitos também
pode ser definida através do menu contextual das relações.
Autoatribuir valor no subformulário: Esta opção é utilizada para atribuir automaticamente o valor do campo chave
primária na tabela Um ao campo chave estrangeira na tabela Muitos durante a entrada de dados. Esta opção só
aparece disponível se a opção Automática tiver sido selecionada.
Esta opção afeta a entrada de dados quando um formulário de entrada de uma tabela Um tem um sub-formulário de
uma tabela Muitos relacionada (para maiores informações sobre sub-formulários, consulte a seção Subformulários e
widgets). Se a opçãoAutoatribuir valor no subformulário estiver selecionada, um usuário pode adicionar registros
ao sub-formulário (ou seja, a tabela Muitos relacionada) e ter o valor relacionado automaticamente atribuído aos
campos da tabela relacionada.
Na relação entre a tabela [Empresas] e a tabela [Empregados], a tabela [Empresas] é uma tabela Um e a tabela
[Empregados] é a tabela Muitos relacionada. Cada empresa tem um registro na tabela [Empresas] e vários registros
na tabela [Empregados]. Quando o campo chave estrangeira da tabela Muitos é exibido no sub-formulário, você pode
ver o efeito desta opção: o valor do campo é copiado automaticamente no sub-formulário cada vez que se adiciona um
sub-registro.
- 215 -
Esta opção também funciona quando o campo chave estrangeira da tabela Muitos não se apresenta no sub-formulário:
o valor do campo chave primária é copiado automaticamente “internamente” no campo chave estrangeira. É possível
verificá-lo passando ao modo página.
Quando a opção Autoatribuir valor no subformulário não estiver selecionada, os sub-registros criados não são
relacionados automaticamente ao registro apropriado da tabela Muitos. Neste caso, você deve associar o subregistro:
seja manualmente, se mostra o campo chave: no exemplo anterior, foi suficiente introduzir “Telcon” no campo
empresa de cada sub-registro,
ou por programação: só é necessário executar uma linha de código do tipo
TableN]Field1:=[Table1]Field1
durante a criação de sub-registros.
Nota: Ao modificar o valor do campo relacionado na tabela Um depois de criar registros na tabela Muitos, a opção
Designação automática do valor relacionado com subformulários não tem efeito e você deverá atribuir o valor
do campo relacionado manualmente ou utilizando a linguagem.
Integridade Referencial
As opções de Integridade referencial controlam a eliminação de registros na tabela Muitos ao excluir um registro na tabela
Um. Normalmente, o usuário não pode eliminar registros em uma tabela a menos que seja a tabela atual. Isto significa, por
exemplo, que para excluir registros na tabela [Empregados], primeiro você deve convertê-la na tabela atual. Para transformar
uma tabela na tabela atual, selecione-a na caixa de diálogo Lista de tabelas no ambiente Desenho.
Deixar registros selecionados intactos: Selecionar este botão opção permite ao usuário excluir um registro da
tabela Um, deixando intactos os registros correspondentes da tabela Muitos. Isto deixa registros da tabela Muitos sem
correspondência com um registro relacionado da tabela Um. O único efeito é fazer com que a informação da tabela
Um não esteja disponível. Nenhum registro da tabela Um é carregado quando um registro correspondente aos
registros eliminados é carregado na tabela Muitos.
Eliminar registros relacionados: Selecionar este botão lhe indica a 4D que deve excluir automaticamente todos os
registros relacionados na tabela Muitos quando um usuário elimine um registro da tabela Um. Esta opção assegura
que os registros Muitos relacionados não sejam convertidos em “órfãos” quando se elimine o registro Um
correspondente..
Não eliminar se há registros relacionados: Selecionar este botão radio impede que o usuário elimine um registro
da tabela Um se existirem registros relacionados na tabela Muitos. Esta opção permite assegurar que os registros não
sejam eliminados por equivocação. Note que é possível excluir registros livremente da tabela Muitos, sem importar a
opção selecionada.
Os botões de opção Eliminar registros relacionados e Não eliminar se há registros relacionados reforçam o que é
conhecido como integridade referencial na teoria dos bancos de dados. Quando o controle de integridade referencial está
vigente, 4D se assegura que cada registro da tabela Muitos esteja associado a um registro único da tabela Um.
Se existirem várias tabelas relacionadas, o controle de integridade referencial é ativado para cada relação como uma
cadeia. Por exemplo, imagine que você tenha a estrutura a seguir. Se você eliminar um registro da tabela
[CODIGOS_POSTAIS] (tabela Um) e a opção Excluir registros relacionados tiver sido selecionada para cada relação, 4D
primeiro elimina os registros correspondentes da tabela [EMPRESAS] e logo elimina os registros de todos os empregados
que trabalham para essas empresas na tabela [EMPREGADOS].
- 216 -
Quando há uma configuração contraditória de controle de integridade referencial, 4D não permite a eliminação de registros.
Por exemplo, se você tiver selecionada a opção Eliminar registros relacionados para a relação entre as tabelas
[EMPRESA] e [CODIGOS_POSTAIS], mas tem selecionada a opção Não eliminar se há registros relacionados para a
relação entre as tabelas [EMPREGADOS] e [EMPRESAS], não será efetuado nenhuma eliminação e os registros das
tabelas [EMPRESAS] e [EMPREGADOS] permanecerão intactos.
SQL
A área SQL do Inspector oferece informação útil para trabalhar com a estrutura através da linguagem SQL.
Para as relações, a área indica as propriedades FOREIGN KEY e REFERENCES.
- 217 -
Exportar e importar definições de estrutura
4D permite exportar a definição da estrutura do banco de dados como arquivo XML ou HTML. Do lado contrário, é possível
utilizar uma definição de estrutura guardada em formato XML para gerar rapidamente um novo banco de dados 4D. Estas
novas possibilidades respondem a diferentes necessidades:
permitir representar estruturas em formatos personalizados (relatórios, tabelas, etc.) ou para serem analisadas em
outros ambientes,
permitir gerar bancos de dados a partir de arquivos de descrição.
Formato de uma definição de estrutura 4D
As definições de estrutura 4D estão baseadas no formato XML. É possível visualizar uma definição de estrutura com a ajuda
de um simples editor de texto. O formato XML permite igualmente prever todo tipo de uso em particular através das
transformações XSL. Além disso, 4D utiliza um arquivo .XSL para exportar a definição de estrutura em formato HTML.
Uma definição de estrutura inclui tabelas, campos, índices e relações, junto com seus atributos e as diferentes
características necessárias para uma descrição completa da estrutura. A “gramática interna” das definições de estrutura 4D
está documentada por intermédio de arquivos DTD, também utilizados para a validação de arquivos XML. Os arquivos DTD
utilizados por 4D são agrupados na pasta DTD localizada junto a aplicação 4D. Os arquivos banco_core.dtd e
common.dtd são utilizados para a definição da estrutura. Para maiores informações sobre as definições de estrutura 4D,
consulte estes arquivos, como também os comentários que eles contêm.
Exportar uma definição de estrutura
4D permite exportar uma estrutura em formato XML ou HTML. Escolha o formato que mais se ajuste a suas necessidades:
Formato XML: uma estrutura em formato XML pode ser visualizada em um simples editor de texto ou utilizada de
várias formas (transformação XSL personalizada, importação e análises em outro software, etc.). Escolha este formato
quando desejar utilizar a definição de estrutura para criar novos bancos.
Formato HTML: este formato lhe permite a representação da estrutura em forma de relatório, visualizável e imprimível
através de um navegador.
Para exportar uma definição de estrutura em XML:
1. Selecione o comando Exportar > Definição de estrutura a um arquivo XML... no menu Arquivo de 4D.
Aparece uma caixa de diálogo padrão de registro, de modo que é possível especificar o nome e a localização, como
também o tipo do arquivo a ser exportado.
2. Especificar o nome e a localização da exportação e logo validar a caixa de diálogo.
Para exportar uma definição de estrutura em HTML:
1. Selecione o comando Exportar > Definição de estrutura a um arquivo HTML… no menu Arquivo de 4D.
Aparece uma caixa de diálogo de seleção de pastas de modo que é possível escolher a localização onde serão
armazenados os arquivos HTML.
2. Clique no botão Criar uma nova pasta ou especifique uma pasta existente.
4D cria automaticamente, na localização especificada, uma pasta chamada “Mystructure.4db Structure Export” ) que
contém os elementos exportados (Mystructure.4db é o nome do arquivo de estrutura do banco).
Uma caixa de diálogo permite visualizar diretamente o resultado da exportação no navegador padrão. As definições
de estrutura em formato HTML são vistas dessa forma:
- 218 -
Personalizar a transformação XSL
Para gerar as páginas HTML de definição de estrutura, 4D efetua as transformações XSL padrões utilizando o arquivo
“Structure_to_html.xsl” localizado na sub-pasta /Resource/language.lproj da aplicação.
Nota: Se este arquivo não estiver presente, a exportação em HTML não estará disponível na caixa de diálogo de
exportação.
É possível personalizar estas transformações como desejar utilizando um arquivo de folhas de estilo XSL personalizado.
Para fazer isto, simplesmente crie um arquivo chamado “Structure_to_html.xsl” (você pode duplicar o arquivo padrão) e
colocá-lo no mesmo nível do arquivo .4db. 4D utilizará então este arquivo para gerar a definição de estrutura em formato
HTML.
Criar um banco de dados de uma definição de estrutura
As definições de estruturas exportadas em formato XML podem ser utilizadas para criar rapidamente novos bancos de
dados idênticos. Neste caso, a definição de estrutura pode ser considerada como um modelo de estrutura, que é possível
duplicar.
Uma definição de estrutura XML pode ser utilizada como tal ou ser modificada antes através de um editor XML. Isso permite
o uso de todo tipo de mecanismo usado para gerar estruturas por programação. Além disso, como o formato interno da
definição de estrutura de arquivos XML 4D é público (ver a seção “Format of a 4D Structure Definition”), é possível criar este
tipo de arquivo a partir de outros ambientes de bancos de dados ou a partir de qualquer aplicação para gerar
automaticamente bancos de dados 4D.
Para criar um banco de dados a partir de uma definição de estrutura:
1. Selecione o comando Novo > Banco de dados a partir de uma definição de estrutura... no menu Arquivo de 4D.
Aparece uma caixa de diálogo padrão de abertura de documentos de maneira que é possível especificar o arquivo de
descrição a ser aberto. Você deve selecionar um arquivo em formato XML que respeite a gramática das descrições
de estrutura de 4D (o programa valida o arquivo através da DTD).
2. Selecione um arquivo XML de descrição de estrutura e logo clique em Aceitar.
4D exibe uma caixa de diálogo que lhe permite escolher o nome e a localização do banco de dados a ser criado.
3. Escolha o nome e a localização do banco a ser criado e logo clique em Salvar
Se o arquivo XML é válido, 4D fecha o banco atual (se aplica) e cria uma nova estrutura baseada na definição de
estrutura e mostra janela do Explorador. Também é criado um arquivo padrão de dados vazio.
- 219 -
Gerenciar Formulários
Visão Geral
Criar um formulário com o assistente de formulário
Criar um formulário em branco
Editar um formulário
Renomear um formulário
Definir formulários de entrada e saída
Eliminar um formulário
Imprimir um formulário
Salvar formulários
- 220 -
Visão Geral
Os formulários constituem a interface através da qual a informação pode ser introduzida, consultada, modificada e impressa.
Um usuário interage com os dados de um banco e imprime relatórios utilizando formulários. Em aplicações personalizadas,
você pode usar formulários para criar palhetas e caixas de diálogo específicas.
Cada tabela em seu banco de dados tem, em geral, ao menos dois formulários. Um para mostrar uma lista de registros na
tela e outro para mostrar um registro de cada vez, também utilizado para introduzir e modificar dados. O formulário que lista
os registros se chama formulário de saída ou formulário listado e o formulário que mostra um registro de cada vez se chama
formulário de entrada ou formulário detalhado. Quando se visualiza os registros utilizando o formulário listado, você pode
fazer um clique duplo sobre um registro para vê-lo no formulário detalhado atual.
Conteúdos de formulários
Nas aplicações personalizadas, é possível usar a linguagem para definir qual formulário utilizar. Por exemplo, seria possível
querer passar de um formulário a outro segundo o tipo de tela que utilize o usuário. Também poderia utilizar a linguagem
para utilizar diferentes conjuntos de formulários para os usuários de 4D Client ou de um navegador web. Quando cria uma
aplicação personalizada, pode criar formulários para serem utilizados como caixas de diálogo personalizadas ou palhetas
flutuantes. Nas aplicações personalizadas, pode utilizar vários processos para permitir aos usuários trabalhar
simultaneamente com vários formulários.
Um formulário pode mostrar os campos de várias tabelas. Pode pôr os campos de uma tabela relacionada Um em um
formulário e dessa forma permitir aos usuários introduzir valores diretamente na tabela Um relacionada. Também pode
incluir um sub-formulário que mostre uma lista de registros de uma tabela Muitos relacionada. Um sub-formulário mostra uma
lista de registros de outra tabela ou subtabela na tabela master. Com um sub-formulário, o usuário pode ver, introduzir e
modificar os registros de outra tabela. Por exemplo, uma aplicação de faturação e cobrança pode utilizar um sub-formulário
de faturação que permita ao usuário introduzir elementos para a fatura. Mesmo que as linhas da fatura apareçam na tela de
faturação, elas são armazenadas em uma tabela Muitos relacionada.
Um formulário que é utilizado para a entrada de dados pode ter mais que um sub-formulário. Por exemplo, um banco de
dados que administre os contatos pode utilizar um sub-formulário para os números de telefone, outro para as ações a
realizar e outro para os contatos anteriores com essa pessoa. Cada sub-formulário mostra os registros de uma tabela
relacionada "Muitos" diferente.
Um formulário particular pode utilizar alguns ou todos os campos de uma tabela. Por exemplo, você poderia ter dois
formulários de entrada, um para operários e outro para supervisores, e nenhum dos dois formulários utilizar todos os
campos. Poderia usar outro grupo de campos para mostrar em tela e outros para imprimir relatórios. Os formulários podem
ser modificados a qualquer momento, sem importar se têm ou não dados no banco de dados. As mudanças nos formulários
não afetam de nenhuma forma os dados armazenados em disco.
Cada formulário tem um ou mais páginas onde aparecem os campos e objetos editáveis. Se seus campos não cabem em
uma página, pode criar páginas adicionais.
Quando criar um formulário multipáginas, pode adicionar abas ou botões para permitir aos usuários passar de uma página a
outra.
Cada formulário tem uma página de fundo (página zero) na qual você coloca os objetos que aparecem em todas as páginas.
Use essa página para colocar elementos gráficos de fundo, botões, abas e outros elementos gráficos que definam a
"aparência" da página, tais como etiquetas e retângulos.
Nota: quando um formulário de tabela multipáginas é utilizado como formulário de saída (por exemplo, para impressões),
apenas aparece a primeira página.
Criar formulários
4D permite criar rapidamente formulários padrões. Também lhe proporciona poderosas ferramentas que lhe permite criar
formulários para interfaces sofisticadas. Seus formulários podem oferecer exatamente o que seu banco de dados necessite.
Somente com operações básicas, é possível criar um formulário básico, com campos, botões, variáveis, etc.
4D tem duas ferramentas para a criação e modificação de formulários: o assistente de criação de formulários e o editor
de formulários.
Assistente de formulário
O Assistente de formulários é o ponto de partida para a criação de qualquer tipo de formulário. Com o assistente, é possível
criar um novo formulário selecionando os campos que você deseja de uma lista e escolhendo um modelo de formulário no
menu suspenso. Os modelos de formulários controlam a aparência dos formulários; Um modelo especifica características
- 221 -
como o tamanho do formulário, a interface da plataforma, os atributos das fontes e botões. Para mais informações, consulte
Criar um formulário com o assistente de formulário.
Editor de formulário
O editor de formulários é um ambiente gráfico orientado a objetos que permite personalizar seus formulários manipulando
diretamente os objetos no formulário. Por exemplo, é possível reposicionar os objetos, adicionar objetos não suportados
pelo assistente, criar formulários multi-páginas com guias, reforçar a segurança do banco especificando controles de
entrada, definir os privilégios de acesso para um formulário, associar uma barra de menu personalizada a um formulário, e
escrever métodos de formulário e objetos que são executados automáticamente quando o formulário é utilizado. Para mais
informação veja Editar um formulário.
Formulários de tabela e de projeto
4D permite criar duas categorias de formulários: formulários de tabela e formulário de projeto. Basicamente, os
formulários de tabela estão associados a tabelas e se beneficiam das funções automáticas úteis para o desenvolvimento de
aplicações baseadas no banco de dados. Os formulários de projeto são formulários independentes, não associados a
tabelas. Estão desenhados particularmente para criar caixas de diálogo de interface como também para a criação de
componentes.
Os formulários de projeto permitem criar facilmente interfaces que cumpram as normas dos sistemas operacionais. Em
particular, a chamada através do comando DIALOG de formulários de projeto que mostra as seleções de registros nos subformulários é recomendada por 4D para a visualização de registros em lista. Com um pouco de programação adicional,
esta combinação substitui vantajosamente os comandos MODIFY SELECTION e DISPLAY SELECTION.
Os formulários de tabela e os formulários de projeto estão agrupados separadamente na página Página Formulários do
Explorador:
Características de formulários de tabela
Cada formulário está associado a uma tabela. Cada tabela deve ter pelo menos um formulário para permitir a entrada e
visualização dos dados. Em geral, uma tabela tem formulários de entrada e saída separados. O formulário de entrada é o
que é utilizado para a entrada de dados. É exibido um registro por tela e existem botões que permitem salvar ou cancelar as
modificações efetuadas a um registro e navegar entre os registros (ex: Primeiro registro, Último registro, Registro anterior,
Próximo registro). O formulário de saída exibe uma lista de registros, com uma linha por registro. O resultado das pesquisas
é exibido no formulário de saída e o usuário pode fazer clique duplo em uma linha para abrir os formulários de entrada desse
registro.
Os próximos exemplos mostram um formulário de entrada e um formulário de saída típicos:
Se você tentar exibir os registros de uma tabela antes de criar um formulário para a tabela, 4D lhe propõe automaticamente
os formulários de entrada e saída padrões.
- 222 -
Nota: Com a opção Criação automática de formulários nas Preferências, é possível fazer com que 4D crie
automaticamente os formulários padrões sem exibir a caixa de diálogo. Para maiores informações, consulte o parágrafo
Página Geral .
Clique em Sim (ou Sim para todos) para criar os formulários padrões. Logo é possível retornar ao ambiente Desenho para
modificá-los ou substituí-los com formulários mais sofisticados. Sem fazer nenhuma modificação, é possível começar a usar
os formulários padrões criados para a entrada e visualização de dados em seu banco. Também é possível clicar em Não se
você não deseja associar um formulário à tabela. A entrada e/ou visualização de dados pode ser realizada utilizando
formulários projeto. Seu banco de dados pode utilizar até 32.000 formulários por tabela, que realizem operações
específicas.
Características de formulários de projeto
Os formulários projeto se diferenciam dos formulários tabela das seguintes maneiras:
os formulários projeto podem ser unicamente de tipo detalhado (página). Os mecanismos dos formulários de saída
(listagem) não são compatíveis com os formulários de projeto.
Os formulários de projeto não aparecem na lista de tabelas e não podem ser atribuídos como formulários de entrada
ou saída atuais. Não podem ser utilizados no Editor etiquetas nem no editor de importação/exportação de 4D (ver
Exportar e importar dados).
Os formulários projeto só podem ser exibidos utilizando o comando DIALOG ou como formulários herdados (ver
Formulários Herdados).
Os formulários de projeto podem conter os mesmos tipos de objetos que os formulários tabela, incluindo campos.
Quando são utilizados os campos, o formulário de projeto armazena o número da tabela e do campo. Em caso de
cópia do formulário de um banco a outro ou dentro de um componente, as referências também são copiadas. A tabela
e o campo utilizados são as do banco objetivo. No caso de incompatibilidade (tabela não existente, tipo de campo
incorreto, etc.), o formulário não funcionará corretamente.
Como os formulários de projeto estão desenhados principalmente para serem utilizados no contexto do comando
DIALOG, as ações padrões relativas à gestão de registros (Próximo registro, Excluir registro, etc.) não aparecem por
padrão no editor nem o assistente de criação de formulários. Você deve administrar a visualização e modificação de
registros utilizando os comandos na linguagem de programação.
Por outro lado, quando os formulários de projeto são utilizados como formulários herdados pelos formulários tabela, é
possível o uso de mecanismos automáticos de gestão de registros.
Os formulários de projeto podem ter um método de formulário, como os formulários tabela, acessível a partir de
Current form table do Explorador.
Transformar um formulário de tabela em de projeto (e vice-versa)
É possível transformar um formulário de tabela em formulário de projeto ou efetuar a operação reversa a qualquer momento.
Atenção, no caso da transformação de formulários tabela em formulários projeto, os possíveis funcionamentos automáticos
relativos à gestão de dados presentes no formulário de tabela não funcionarão mais, uma vez se transforme em formulário.
Da mesma forma, um formulário de tipo “lista para a tela” ou “lista para impressão” se transformará em formulário de projeto
de tipo “página”.
A alteração de tipo de um formulário pode ser realizada arrastando e soltando ou copiando e colando em Página
Formulários do Explorador. É possível efetuar esta operação no mesmo banco ou entre dois bancos diferentes.
Para transformar um formulário de projeto em formulário de tabela ou vice-versa::
1. Na página Formulários do Explorador, clique no formulário que você deseja transformar e solte-o no elemento de
destino.
Ao transformar um formulário de projeto em um formulário de tabela, você deve soltar o formulário no nome da tabela a
qual será associada..
Por padrão, o formulário se move quando a operação arrastar e soltar é efetuada dentro do mesmo banco de dados.
Se você deseja copiar o formulário, mantenha pressionada a tecla Alt (Windows) ou Opção (Mac OS) durante a
operação de arrastar e soltar. Se o arrastar e soltar é entre dois bancos diferentes, só é possível a cópia do formulário.
Também é possível utilizar os comandos padrões Copiar/Colar do menu contextual do Explorador.
- 223 -
Criar um formulário com o assistente de formulário
Com o assistente de criação de formulários, é possível criar rapidamente novos formulários. É possível utilizar um novo
formulário imediatamente depois de sua criação ou editá-lo usando o editor de formulários.
O assistente de criação de formulários tem duas telas. A tela básica permite criar novos formulários em poucos passos. A
tela Avançada permite a personalização do formulário antes de criá-lo.
Passos para criar um novo formulário
Para criar um novo formulário usando o Assistente de Formulário:
1. Selecione Novo > Formulário... no menu Arquivo ou usando o botão Novo na barra de ferramentas.
OU
Em Página Formulários do Explorador, clique no menu de opções e selecione Novo formulário com assistente.
4D exibe a tela básica do assistente de formulário.
2. Para criar um formulário de tabela, selecione a tabela no menu "Tabelas".
Os campos da tabela são listados alfabeticamente na área "Campos disponíveis" quando a opção Tabela principal
está selecionada na lista expandível.
OU
Para criar um formulário de projeto, escolha Nenhum (Formulário de projeto) do menu "Tabelas".
A lista de campos de todas as tabelas serão exibidas na área "Campos disponíveis". Os formulários listados e os
formulários listados para impressão são removidos da lista de tipos de formulários disponíveis.
3. Nomeio o formulário usando o campo Nome do formulário.
Você pode referenciar esse formulário por nome usando a linguagem de programação. Assegure-se de usar um nome
que esteja de acordo com as regras específicas de 4D (ver Convenções no 4D Language Reference).
4. Selecione um tipo de formulário da lista de tipos.
- 224 -
Suas opções são:
Formulário detalhado: um formulário para entrar e modificar dados,
Formulário listado (apenas para formulários tabela): Um formulário para listar na tela os registros,
Formulário de Impressão detalhado: um relatório impresso com uma página por registro, como no exemplo
de uma fatura,
Formulário de Impressão listado (apenas formulários de tabela): um relatório impresso que faz uma lista dos
registros.
5. Escolha um modelo para o formulário.
O modelo controla diversos aspectos da aparência do formulário, incluindo fonte, etiquetas, o design do retângulos
decorativos que contornam os campos, e a interface da plataforma. 4D tem diversos modelos de formulário e você
pode usar o Assistente de Formulário para adicionar modelos personalizados à lista. Para mais informações sobre
como adicionar modelos personalizados, veja “Criar um formulário modelo” abaixo.
6. (Opcional) Selecione uma pasta para armazenar o formulário.
Se você selecinar uma pasta a partir da lista, o formulário será gravado nessa pasta. Pastas podem ser usadas para
organizar os objetos das suas aplicações e são gerenciados em Página Início do Explorador. O padrão é que o
formulário seja criado no Nível superior, isso é, em nenhuma pasta.
7. Selecione os campos que você deseja no formulário a partir da área "Campos disponíveis".
Você pode dar um duplo-clique nos campos, usar arrastar e soltar ou usar os botões no painel central:
Você pode selecionar qualquer campo de qualquer tipo, exceto BLOB. Você pode criar formulários que incluam
campos:
tabela principal (no caso de formulários tabela),
tabelas relacionadas,
todas as tabelas.
A página Subformulário na tela de opções avançadas permite que você crie subformulários que exibem campos de
muitas tabelas assim como tabelas que não estão relacionadas.
Se você selecionar campos de uma tabela que não é a tabela principal ou uma tabela Um automaticamente
relacionada, você necessita usar a linguagem de programação para gerenciar a entrada e exibição dos dados
selecionados.
Quando você adicionar campos ou mudar o tipo ou modelo do formulário, suas mudanças são exibidas na área de
visualização do lado direito do assistente. Após colocar campos no formulário, você pode mudar sua ordem usando
arrastar e soltar:
- 225 -
Nota: Se sua tela é muito pequena para criar um formulário de tamanho suficiente para conter todos os campos
selecionados, o assistente cria um formulário multipáginas, e coloca todos os botões e objetos estáticos na página 0.
Quando editar esse tipo de formulário, primeiro exiba a página 0 para poder editar esses objetos.
8. Se necessário, crie uma ou mais caixas de grupo na lista de Campos Selecionados.
Nota: Essa função não está disponível para os formulários listados.
Uma caixa de grpo tem sua própria etiqueta e conjunto de campos, e tem a seguinte aparência:
Para criar uma caixa de grupo, clique no botão caixa de grupo
. Um item é adicionado na lista Campos
Selecionados. Seu nome padrão é "Grupo", que pode ser renomeado.
Nota: O nome da caixa grupo é um texto estático; você pode usar a referência "localizável"como com qualquer outra
etiqueta 4D (ver Usar referências em texto estático e MissingRef).
Você pode adicionar campos à caixa de grupo arrastando eles da lista de Campos Disponíveis e sos soltando no
novo item.
A lista de Campos Selecionados tem a forma de uma lista hierárquica. À medida em que os campos são adicionados
à caixa de grupo, eles aparecem abaixo do nome da caixa de grupo.
- 226 -
Nota: Quando um ítem caixa de grupo é expandido, você pode adicionar campos que já estão na lista Campos
selecionados, usando arrastar e soltar.
9. Se você quer editar o novo formulário no editor de Formulários, clique Editar.
OU
Se você quer testar o formulário, clique Usar (formulários de tabela somente).
OU
Se vocè quer personalizar o novo formulário com as opções avançadas do assistente de formulários, clique
Avançado...
Opções Avançadas
Para mostrar as opções avançadas do assistente de formulários, clique no botão Avançado... na tela básica do assistente.
Se desejar voltar à primeira tela do assistente de criação de formulários, clique no botão < Anterior.
A tela de opções avançadas também permite criar novos formulários em poucos cliques, além disso, oferece uma ampla
variedade de opções de personalização.
As opções de personalização dependem do tipo de formulário selecionado na tela básica do assistente de criação de
formulários. O assistente de criação de formulário aceita os seguintes tipos de formulários::
Formulários detalhados,
Formulários listados (somente formulários de tabela),
Formulários de impressão detalhados,
Formulários de impressão listados (somente formulários de tabela).
Além disso, o assistente de formulários permite salvar suas opções de personalização como um modelo. Seus modelos são
adicionados a lista suspensa Modelos que aparece na tela básica do assistente de formulários. Com seus próprios modelos
é possível criar rapidamente formulários altamente personalizados desde a primeira página do assistente de criação de
formulários, simplesmente selecionando os campos e seu modelo personalizado.
Página Campos
A página Campos é similar a tela básica do assistente de criação de formulários. A página campos é utilizada para
adicionar campos ao formulário da mesma forma que na tela básica do assistente de formulários. Esta funcionalidade está
duplicada para aqueles usuários que querem ir diretamente à janela de opções avançadas. Para maiores informações
sobre o processo de adição de campos ao formulário, consulte a seção acima.
Campos relacionados acessíveis
A página Campos oferece uma opção adicional: Campos relacionados acessíveis. Esta opção permite escolher ou não a
propriedade “Editável” para os campos das tabelas relacionadas. Esta opção está selecionada por padrão (os campos são
editáveis). Pode ser útil desmarcar esta opção quando você quer evitar que os usuários possam modificar os valores dos
campos relacionados quando a opção “Atribuição automática de valores em sub-formulários” estiver selecionada para uma
relação (para maiores informações a respeito, consulte o parágrafo Propriedades de Relações).
Para maiores informações sobre a propriedade “Editável”, consulte Atributos Editável e Obrigatório e propriedades de
campos.
Página Opções
- 227 -
A página Opções é utilizada para definir diferentes opções relativas às dimensões, etiquetas e visualização do formulário
Tamanho de formulário
Esta área permite definir o tamanho do formulário. É possível ajustar o tamanho do formulário de acordo com seu conteúdo
ou definir um tamanho fixo indicando a largura e altura máxima ou selecionando um tamanho de tela. Também é possível
combinar os dois parâmetros.
A lista suspensa Monitor lhe dá as seguintes opções:
automático (o tamanho do formulário se adapta ao tamanho do monitor atual)
baixa resolução 640x480
resolução média 800x600
padrão1024x768
alta resolução 1280x1024
Tela larga 1600x1200.
Os valores correspondem à relação largura x altura, expressada em pixels
Quando se introduz um tamanho de tela ou se seleciona um tamanho da lista suspensa, a área de visualização é alterada
para refletir sua seleção. O assistente de criação de formulários tratará de ajustar os campos e a localização dos objetos no
formulário de forma que se ajustem o tamanho de tela selecionado. Se a opção Criar várias páginas se for necessário
estiver selecionada e 4D não conseguir ajustar todos os objetos em uma página, serão geradas várias páginas de
visualização para ajustar todos os campos ao formulário. Se o assistente de criação de formulários gera múltiplas páginas,
são colocados botões, o título do formulário e os retângulos decorativos na página de fundo (página 0).
Ajustar tamanho segundo os campos: ao selecionar esta opção, o assistente de criação de formulários reduz os
espaços vazios no formulário, com a finalidade de ajustar o tamanho do formulário e seu conteúdo.
Para formulários de impressão (Formulários de Impressão Listado and Formulário de Impressão Detalhado):
A área "Tamanho de formulário" inclui um botão Ajustar Página que exibe a caixa de diálogo da configuração
atual de impressão, onde você pode escolher o tamanho de papel para imprimir o relatório. 4D ajusta o tamanho
do formulário e a área de pré-visualização ao formato de página que for escolhido.
Na área "Opções de visualização", você pode selecionar variáveis para inserir nos seus relatórios de maneira a
mostrar o título do formulário, número de página, data, e hora em que o documento foi impresso.
Para o tipo Formulário Listado: A área "Tamanho de formulário" inclui uma opção Largura desejada.
Se você não marcar essa opção, a largura do formulário de saída é calculada automaticamente relativa ao do tamanho
dos campos. Entretanto, se você marcar essa opção, e determinar uma largura em pixels, o assistente tentará reduzir
o tamanho dos campos para que eles se "ajustem" à largura definida. Se você também marcar a opção "Truncar se
necessário", o assistente então remove um ou mais campos de maneira que a largura do formulário seja menor que a
especificada. Mas se você marcar essa segunda opção, a largura do formulário pode ser ligeiramente maior que a
especificada pela opção Largura desejada.
Posição etiquetas
A área Posição etiquetas da página Opções lhe permite definir a posição das etiquetas com respeito aos campos. É
possível especificar que as etiquetas estejam localizadas na frente ou em cima dos campos. Da mesma forma, é possível
não exibir as etiquetas.
Opções de visualização
A área Opções de visualização da página Opções lhe permite adicionar vários elementos opcionais ao formulário e definir
diversas opções. As opções disponíveis são as seguintes:
Título do formulário: adiciona o nome da tabela como título do formulário acima dos campos. Esta opção não está
disponível para os formulários de projeto.
Um campo por linha: selecione esta caixa de seleção para organizar os campos verticalmente. Se esta opção não
estiver selecionada, o assistente organiza os campos em filas.
Criar várias páginas se for necessário: se esta opção estiver selecionada, o assistente de formulários criará várias
páginas automaticamente se os campos não se ajustam a somente uma página. Se você utilizar esta opção, o
assistente de formulários localiza na página de fundo os objetos apropriados.
Nomes de campos dinâmicos: quando esta opção está selecionada, os nomes de campos e tabelas são inseridos
no formulário como referências dinâmicas. Isto assegura que os campos e etiquetas de tabelas reflitam qualquer
alteração no nome do campo ou da tabela. Os nomes dos campos ou das tabelas podem ser modificados no editor de
estrutura ou utilizando os comandos SET FIELD TITLES ou SET TABLE TITLES. Para mais informações, veja Usar
referências em texto estático.
Barra de menus associada: selecione esta opção e selecione o número da barra de menu que você deseja associar
ao formulário. Para maiores informações, consulte Atribuir uma barra de menu a um formulário.
Número de registro/Total de registros: adiciona ao formulário uma variável 4D (chamada por padrão vRecNum) que
exibe o número do registro atual e o número total de registros. Esta opção não está disponível para os formulários de
projeto.
Página botões
- 228 -
A página Botões permite personalizar os botões utilizados no formulário.
Nota: Esta página não está disponível para "Formulário de Impressão Listado" e "Formulário de Impressão Detalhado".
Os formulários detalhados e listados (os de não impressão) utilizam botões que permitem ao usuário salvar e cancelar as
alterações feitas a um registro e passar de uma página a outra em um formulário multi-páginas. Além disso, os formulários
de tabela podem ter botões que permitem navegar entre os registros (primeiro registro, último registro, registro anterior,
próximo registro), adicionar ou eliminar registros em um sub-formulário ou eliminar o registro atual.
Na página Botões, é possível selecionar o estilo, as ações, a localização e etiquetas dos botões no formulário.
Nota: No editor de formulários, também é possível adicionar, eliminar, mover botões e associar um método a um botão para
especificar a ação que deve ser realizada.
Família de botões e localização
As áreas Família de botões e Localização permitem escolher o aspecto visual e a localização dos botões.
É possível clicar nos botões > o < para visualizar os diferentes botões da família selecionada.
Ações automáticas de botões
4D oferece um conjunto de ações predeterminadas para os botões. Quando você atribui uma destas ações a um botão, não
é necessário escrever um método para especificar o que deve acontecer quando o usuário clique sobre o botão.
O número de ações pré-definidas propostas depende da categoria do formulário (tabela ou projeto). Por exemplo, as ações
para se mover entre registros em uma tabela não podem ser utilizadas com os formulários de projeto.
Para os formulários detalhados, as ações predefinidas acessíveis através do assistente de criação de formulários são as
seguintes:
OK: salva um novo registro ou salva as alterações realizadas a um registro existente,
Cancelar: anula o novo registro ou anula as alterações feitas a um registro existente,
Próxima página, página anterior, primeira página, última página: exibe a página solicitada em um formulário
multi-páginas.
As ações a seguir só estão disponíveis para os formulários de tabela:
Próximo registro, Registro anterior, Primeiro registro, Último registro: salva o registro atual e exibe o registro
solicitado.
Excluir registro: exclui o registro atual do banco (aparece uma caixa de diálogo de confirmação).
Nota: Quando se insere um sub-formulário, 4D insere automaticamente dois botões adicionais se a opção Botões de
adição e exclusão da página Sub-formulário estiver selecionada. Os botões do sub-formulário são: Adicionar (adiciona um
novo registro a uma tabela Muitos ou uma sub-tabela) e Excluir (elimina o registro atual do sub-formulário).
4D propõe outras ações pré-determinadas. Estas ações estão disponíveis quando se cria um formulário utilizando o
assistente de criação de formulários ou quando se modifica um formulário utilizando o editor de formulários. Para mais
informação, consulte Ações padrões.
Os botões padrões estão listados na área Ações da página:
- 229 -
É possível selecionar e desmarcar a seleção dos botões de ação automática da mesma forma que se seleciona ou elimina
os campos na página Campos. Os botões localizados na área Ações selecionadas aparecerão no formulário.
Nota: Ainda que os botões de gestão de páginas (Página anterior, Próxima página, etc.) estejam selecionados na área
“Ações selecionadas”, só serão incluídas no formulário se for necessário criar um formulário multi-páginas.
Se você deseja modificar a etiqueta padrão de um botão (o modelo selecionado deve incluir etiquetas), selecione o botão
na lista de ações selecionadas e escreva o novo texto na área Etiqueta. If you want to modify the default label of a button (the
template chosen must include labels), highlight the button in the Selected Actions list and enter a new label in the Label area.
Depois de escrever o texto da etiqueta, pressione a tecla Tab ou clique em outro botão da lista Ações selecionadas para
que a área de visualização mostre a nova etiqueta.
Notas:
As etiquetas dos botões podem ser introduzidas como referências para a tradução do banco (ver Apêndice C:
arquitetura XLIFF).
As mensagens de ajuda são independentes das etiquetas. Se você deseja associar uma mensagem de ajuda a um
botão, utilize a palheta de propriedades dos objetos do editor de formulários. Para maiores informações consulte
Mensagens de ajuda.
Página subformulários
A página sub-formulário permite adicionar um sub-formulário ao formulário. Este sub-formulário deve vir de uma tabela
Muitos relacionada se você deseja se beneficiar dos mecanismos automáticos de atualização dos sub-formulários.
Quando você quiser utilizar os campos de uma tabela Muitos relacionada, adicione um sub-formulário ao formulário. O subformulário lista vários registros por vez.
A utilização de um sub-formulário lhe permite visualizar os registros relacionados ou os de outra tabela. Também é possível
introduzir dados nos registros que são exibidos no sub-formulário.
É possível exibir em um sub-formulário campos de uma tabela Muitos relacionada ou de uma tabela que não esteja
relacionada. Se você incluir campos de uma tabela Muitos relacionada, a relação determina quais registros são exibidos.
Se você incluir campos de uma tabela não relacionada ou de uma tabela com uma relação manual, por padrão, é exibida a
seleção atual dessa tabela. Também é possível controlar a seleção de registros utilizando um método.
A página sub-formulário da tela de opções avançadas permite utilizar um formulário como sub-formulário, especificar suas
opções e
definir botões que permitam aos usuários trabalhar com o sub-formulário.
Para adicionar um subformulário ao formulário, marque a opção Incluir um subformulário. Selecione a tabela para o
subformulário na lista "Tabela" e selecione o subformulário a ser usado na lista de formulários. Você tamb~em pode usar a
lista "formulário detalhado" para determinar uma página de formulário a ser exibida quando o usuário clicar no subformulário.
Esse subformulário aparece na área de pré-visualização como fazendo parte do formulário atual.
A área de visualização mostra o sub-formulário integrado ao formulário atual.
- 230 -
É possível definir as seguintes opções para o sub-formulário:
Seleção múltipla: o usuário pode desmarcar a seleção de vários sub-registros simultaneamente utilizando as teclas
Shift e Ctrl (Windows) ou Comando (Mac OS).
Digitação em lista: o usuário pode modificar os valores dos sub-registros diretamente no sub-formulário.
Botões de adição e exclusão: o assistente insere automaticamente dois botões no formulário (correspondente a
família de botões definida para o formulário), associados às ações padrões Adicionar sub-registro e Excluir subregistro:
Para maiores informações sobre estas opções, consulte o parágrafo Subformulário lista.
Gerar o formulário avançado
Quando você tiver terminado de definir todas as propriedades avançadas do novo formulário, clique em OK em qualquer
página para criar o novo formulário. Ao clicar no botão OK, aparece a caixa de diálogo a seguir:
Para criar o novo formulário, clique no botão Utilizar para passar a testar o formulário (formulários de tabela somente) ou
Modificar para abrir o novo formulário no editor de formulários
Criar um modelo de formulário
A caixa de diálogo de geração do formulário permite criar um novo modelo de formulário que poderá utilizar por padrão os
parâmetros atuais de opções avançadas (botões opções, etc.). Se você criar um modelo de formulário, seu nome será
adicionado à lista suspensa de modelos disponíveis no assistente. O modelo de formulário é guardado independentemente
do formulário.
Parar criar um modelo de formulário, clique no botão OK e entre o nome na área de nome do modelo.
- 231 -
Criar um formulário em branco
É possível criar diretamente um formulário vazio diretamente de Explorador sem utilizar o assistente de criação de
formulário. Neste caso, o formulário é criado sem campo, botões ou variáveis e é aberto no editor de formulário onde é
possível construí-lo totalmente. Criar formulário vazios é útil para gerar caixas de diálogo que só contenham variáveis ou
áreas de plug-in.
Para criar um formulário vazio:
1. Abra Página Formulários do Explorador.
2. Selecione o elemento correspondente a categoria do formulário que você deseja criar:
Formulário de projeto: selecione “Formulários de projeto” ou um formulário de projeto existente,
Formulário de tabela: selecione o nome da tabela.
3. Clique no botão adicionar
do Explorador. Aparece a caixa de diálogo a seguir:
Formulário de projeto:
Formulário de tabela:
4. Introduza o nome do formulário na área de entrada correspondente.
Este nome servirá para se referir ao formulário no momento da programação.
5. (Opcional) Selecione uma pasta de armazenamento para o formulário..
Se você selecionar um nome de pasta, o formulário será localizado nesta pasta. As pastas permitem organizar os
objetos de suas aplicações e são administrados através da página Página Início do Explorador. Por padrão, é criado
o formulário em nível superior, ou seja, fora das pastas.
6. Clique no botão Modificar.
O formulário vazio é aberto em uma nova janela do Editor de formulários.
- 232 -
Editar um formulário
Para abrir un formulário no editor de formulários:
1. Selecione Abrir > Formulário... no menu Arquivo.
Ou
No editor de estrutura, pressione Ctrl+Shift e um duplo clique no nome da tabela do formulário-tabela que deseja abrir.
Ou
No editor de estrutura, clique direito no nome da tabela, logo selecione Mostrar os formulários no menu contextual.
4D mostra a Página Formulários do Explorador. Pode expandir o tema "Formulários projeto" ou os nomes das
tabelas para ver os formulários associados a elas. Se fez duplo clique em um nome de tabela, ou se selecionou um
nome de tabela com o menu contextual do editor de estrutura, a tabela já estará selecionada.
2. Se for necessário, expanda a tabela que contém o formulário a ser modificado.
3. Clique direito no nome do formulário a ser modifiado, logo selecione Modificar formulário no menu contextual.
Ou
Selecione o formulário e depois Modificar formulário... no menu de opções do Explorador.
Ou
Faça um duplo clique no nome do formulário ou na área de pré-visualização.
4D mostra o formulário na janela do editor de formulários.
Nota: estas ações também estão disponíveis na Página Início do Explorador.
4D Server: quando dois ou mais usuários tentam modificar um mesmo formulário simultaneamente, o objeto é
bloqueado. Se um usuário está modificando um formulário no ambiente Desenho, o formulário é bloqueado. Os outros
usuários não podem modificar o mesmo formulário até que o primeiro usuário o libere, ao fechá-lo.
- 233 -
Renomear um formulário
Pode renomear um formulário na lista de propriedades ou em Página Formulários do Explorador ou na Lista de
propriedades.
Os nomes dos formulários são utilizados quando se seleciona os formulários de entrada e saída padrão para uma tabela e
em comandos que aceitam um nome de formulário como parâmetro, tais como INPUT FORM e OUTPUT FORM.
Não é possível utilizar o mesmo nome para vários formulários de uma mesma tabela. Se o fizer, 4D não saberá a qual dos
formulários se refere cada vez que utilizar esse nome. Entretanto, pode sim utilizar o mesmo nome de formulário em tabelas
diferentes. Por exemplo, pode chamar a todos seus formulários de entrada “Entrada” e a todos seus formulários de saída
“Saída”.
Atenção: se renomear um formulário referenciado em outras partes do banco de dados (por exemplo, em métodos),
atualize as referências ao formulário. Para fazer isso, pode usar a função de buscar e substituir no ambiente Desenho (ver
Renomear).
Para renomear um formulário utilizando o Explorador:
1. Mostre a Página Formulários do Explorador.
Aparece a lista hierárquica de tabelas e formulários.
2. Mantenha pressionada a tecla Alt (Windows) ou Opção (Mac OS) e clique no nome do formulário a ser renomeado.
Ou
Clique duas vezes no nome do formulário que deseja mudar.
O nome do formulário agora pode ser editado.
3. Introduza o novo nome.
4. Pressione a tecla Tab ou clique fora da área de edição para guardar o novo nome.
Para renomear um formulário utilizando a Lista de propriedades do editor de formulários (ver Lista de propriedades):
1. Mostre as propriedades do formulário na Lista de propriedades.
2. Escreva um nome na área Nome do formulário.
Também pode renomear um formulário utilizando a janela de propriedades do formulário através do Explorador (ver a seção
Propriedades de formulário (Explorador)).
- 234 -
Definir formulários de entrada e saída
Cada tabela possui um formulário atual de entrada e um formulário atual de saída. O formulário de entrada é utilizado para
introduzir e modificar os registros, e o formulário de saída é utilizado para mostrar os registros na lista. Geralmente se utiliza
um formulário detalhado como formulário de entrada, e um formulário listado como formulário de saída.
É possível mudar de formulário de entrada ou saída a qualquer momento. Essa mudança pode ser feita em Janela Lista de
tabelas ou com a ajuda dos comandos INPUT FORM e OUTPUT FORM. Nesse caso, as modificações são aplicadas
unicamente à sessão de trabalho atual.
Igualmente pode especificar os formulários de entrada e saída padrão no ambiente Desenho. Nesse caso, as mudanças
serão guardadas com o banco de dados.
Para mudar os formulários de entrada e saída de uma tabela:
1. Vá à Página Formulários do Explorador.
2. Expanda a tabela para a qual deseja modificar o formulário de entrada ou saída padrão.
A letra E é mostrada junto ao nome do formulário de entrada atual e a letra S é mostrada junto ao formulário de saída
atual.
3. Clique com o botão direito no nome do formulário a atribuir e selecione o comando Formulário de entrada ou
Formulário de saída no menu contextual:
Ou
Escolha o comando Formulário de saída ou Formulário de entrada no menu de opções do Explorador.
Nota: apenas os formulários de tabela podem ser designados como formulários de entrada ou de saída.
Também pode designar um mesmo formulário como formulário de entrada e saída. Neste caso, junto ao nome do formulário
aparece a letra A (de Ambos).
- 235 -
Eliminar um formulário
É possível excluir qualquer formulário de projeto ou de tabela que não esteja designado como formulário de entrada ou saída
atual (ou ambos). O botão Excluir estará desabilitado quando se selecione um formulário de entrada ou de saída.
Para excluir um formulário::
1. Vá a Página Formulários do Explorador.
2. Exiba o tema “Formulários de projeto” ou a tabela que contém o formulário que você deseja excluir.
3. Selecione o formulário a ser excluído e clique no botão excluir
do Explorador.
OU
Use o comando Excluir Formulário no menu contextual do Explorer (clique com o botão direito no nome do
formulário).
4D pede para confirmar a eliminação.
4. Clique em OK.
4D elimina o formulário. O formulário é enviado para a Lixeira e pode ser recuperado enquanto a Lixeira não for
esvaziada (ver Página Lixeira).
Nota: Também é possível eliminar um formulário em Página Início do Explorador (usando o mesmo procedimento).
- 236 -
Imprimir um formulário
Cada formulário tem uma área máxima de aproximadamente 115 metros quadrados. O acesso às partes ocultas do
formulário é obtido com a barra de rolagem. Para visualização em tela, toda essa área pode ser utilizada. Pode visualizar
todos os elementos do formulário por navegação.
Para a impressão, os elementos do formulário deven encaixar dentro da largura de uma página, do tamanho do papel, e das
especificações na janela Ajustar página. 4D mostra os limites da página no editor de formulários na forma de linhas. Estas
linhas de limites da página, respondem aos ajustes de página realizados. As especificações de configuração da página são
guardadas com o formulário ao fechá-lo. Os limites do formulário podem ser mostrados ou ocultados usando oc omando
Papel no submenu Mostrar do editor de formulários (ver Mostrar/ocultar elementos no editor de formulários).
A seguinte imagem mostra as linhas de limite de página:
Configuração de impressão de formulários
Você pode definir uma configuração de impressão para cada formulário. Estas configurações são consideradas quando o
formulário está sendo impresso no modo Aplicação.
Clique no botão Configurações/Editar.... na lista de propriedades do formulário, tema "Imprimir" (ver Configuração de
impressão de formulários).
- 237 -
Uma caixa de diálogo de Configuração de impressão aparece, permitindo que você modifique as configurações de
impressão específicas do formulário: formato do papel, orientação, etc. As opções disponíveis nesta caixa de diálogo
padrão dependem de sua configuração sistema.
Para maior informação sobre a impressão de registros em modo Aplicação, consulte a seção Imprimir registros.
- 238 -
Salvar formulários
É importante guardar qualquer mudança feita no formulário, especialmente quando usar o 4D Server com múltiplos usuários.
O formulário pode ser guardado ao ser fechado. Você pode fechar um formulário ao clicar no botão fechar da janela ou
selecionando Fechar Formulário do Arquivo. Para guardar um formulário sem fechá-lo, selecione Salvar Formulário no
menu Arquivo.
Uma vez que o formulário estiver guardado, você pode continuar a trabalhar nele. Se você cometer um erro ou não gostar
das alterações, pode voltar à última versão guardada. Isso faz com que o formulário apareça exatamente como estava na
última vez em que foi guardado. Par fazer isso, escolha Restaurar.. do menu Arquivo.
4D Server: Quando um formulário é guardado no ambiente Desenho, usuários podem ver as mudanças na próxima vez que
abrirem o formulário.
- 239 -
Criar formulários
Editor de formulários
Propriedades de formulário
Propriedades de formulário (Explorador)
Criar um formulário multi-página
Formulários Herdados
Modificar a ordem de entrada dos dados
Inserir e organizar objetos de formulário
Definir as propriedades de visualização dos objetos
Rotação de texto
Usar imagens estáticas
Usar referências em texto estático
Duplicar em uma matriz
Incrementar um conjunto de variáveis
Redimensionar um formulário
Usar métodos de objetos
Modos de exibição de objetos
Usar as Marcas
Usar a biblioteca pré-configurada
Criar e usar objetos de biblioteca personalizados
Exibir informação sobre objetos em formulários sendo executados
- 240 -
Editor de formulários
Quando criar um novo formulário com o assistente de criação de formulários, pode escolher várias opções de
personalização. Utilizando modelos, pode controlar o tipo de fonte, tamanho, estilo de texto, controlar a aparência dos
campos e etiquetas, e adicionar um conjunto de botões automáticos.
Além disso, 4D oferece um editor de formulários muito completo que permite modificar seu formulário até atingir os
resultados esperados. Com o editor de formulários pode criar e eliminar objetos, manipulá-los diretamente e definir as
propriedades de formulários e de objetos.
O editor de formulários mostra cada formulário em sua própria janela, a qual tem uma barra de ferramentas e uma barra de
objetos. É possível ter vários formulários abertos ao mesmo tempo. As réguas da margem direita e inferior ajudam a
localizar os objetos no formulário. Pode mudar a unidade de medida das réguas para que meçam em polegadas,
centímetros ou pixels.
Esta seção cobre os elementos básicos do editor de formulários. A seção Trabalhar com objetos ativos descreve
detalhadamente os campos e outros objetos ativos.
Mostrar/ocultar elementos no editor de formulários
Pode mostrar ou ocultar os elementos de interface do editor de formulários. Esta característica permite mostrar somente os
elementos necessários para criar ou visualizar o formulário ou as ferramentas que deseja usar. Esta opção é sempre
aplicada à janela atual do editor de formulários. Por exemplo, é útil mostrar os marcadores enquanto trabalha em um
formulário de saída.
Para mostrar ou ocultar um elemento no editor de formulários:
1. Selecione Exibir no menu Formulário.
Ou
Utilize o comando Exibir do menu contextual do editor (faça um clique com o botão direito na região fora do objeto.
Aparece um submenu hierárquico com a lista de todos os elementos que pode mostrar ou ocultar:
- 241 -
Ao lado de cada elemento visível aparece uma marca de seleção. Para ocultar um elemento. selecione e sua marca
desaparecerá.
2. Selecione o elemento que deseja exibir ou ocultar.
Esta é a descrição dos comandos deste menu:
Formulário herdado: exibe ou oculta os objetos do formulário herdado (se houver um) na página atual do
formulário. Para mais informação, consulte Formulários Herdados.
Página 0: exibe ou oculta os objetos da página 0 na página atual do formulário. Esta opção permite diferenciar
entre os objetos da página atual do formulário e dos da página 0. Para mais informações, consulte Criar um
formulário multi-página.
Papel: exibe ou oculta as margens da página de impressão, com linhas de cor cinza. Esta opção pode não ter
efeito quando está selecionada a opção Limites (ver abaixo). Se o tamanho do formulário é menor que o
tamanho da página de impressão, as margens da página aparecem fora do formulário. Consulte a seção
Imprimir um formulário.
Réguas: exibe ou oculta as réguas da janela do editor de formulários.
Marcadores: exibe ou oculta os marcadores que mostram os limites das diferentes áreas do formulário.
Etiquetas de marcadores: exibe ou oculta as etiquetas dos marcadores, disponíveis apenas quando os
marcadores estão visíveis. Para mais informação, consulte a seção Mover as linhas de controle de saída.
Limites: exibe ou oculta os limites do formulário. Quando esta opção está selecionada, pode ver o formulário do
jeito que aparece no modo Aplicação. Dessa forma pode ajustar seu formulário sem ter que mudar a modo
Aplicação para ver o resultado.
Nota: as opções Tamanho baseado em, Margem horizontal e Margem vertical, das propriedades do formulário
modificam os limites do formulário. Quando utiliza estas propriedades, os limites se baseiam nos objetos no
formulário. Quando muda o tamanho de um objeto localizado perto da margem do formulário, a margem é modificada
para refletir essa mudança. Para mais informação sobre as propriedades do formulário, consulte a seção
Propriedades de formulário.
Zoom
É possível fazer um zoom no formulário atual. Pode passar ao modo "zoom" clicando na lupa
correspondente à escala desejada
, ou diretamente na barra
. As porcentagens de visualização são 50%, 100%, 200%, 400% e 800%.
Ao clicar na lupa, o cursor se transforma numa lupa. Para aumentar a porcentagem de visualização, clique no
formulário. Para diminui a porcentagem de visualização, mantenha pressionada a tecla Shift e clique no formulário.
Ao clicar em uma das barras de porcentagem, a visualização se modifica imediatamente.
No modo Zoom, todas as funções do editor de formulários permanecem disponíveis.
Barra de ferramentas
A barra de ferramentas do Editor de formulários oferece um conjunto de ferramentas que podem ser usadas para manipular
e modificar o formulário. Cada janela do editor tem sua própria barra de ferramentas.
A barra de ferramentas contém os seguintes elementos:
Executar o formulário: permite provar a execução do formulário. Ao clicar nesse botão, 4D abre uma nova
janela e mostra o formulário em seu contexto (lista os registros para um formulário listado e mostra o registro atual para
um formulário detalhado). O formulário é executado no processo principal.
- 242 -
Flecha de seleção: permite selecionar, mover e redimensionar os objetos d formulário. Para mais informação,
consulte Selecionar objetos.
Nota: quando um objeto de tipo Texto ou Área de grupo é selecionado, pressionar a tecla Enter permite passar ao
modo edição.
Ordem de entrada: passa ao modo “Ordem de entrada”, no qual se pode visualizar e modificar a ordem de
entrada atual do formulário. Para mais informação, consulte Ordem de entrada dos dados. Note que agora as
marcas permitem visualizar a ordem de entrada atual, enquanto trabalha no formulário (consulte a seção Usar as
Marcas).
Mover: passa a modo “Mover”, no qual é possível alcançar rapidamente a qualquer parte do formulário utilizando
arrastar e soltar na janela. O cursor se transforma numa mão. Esse modo de navegação é particularmente útil quando
se utiliza o zoom no formulário.
Zoom: permite modificar a escala de visualização do formulário (100% é o padrão automático). Pode
passar ao modo “Zoom” clicando na lupa ou diretamente na barra correspondente à escala de zoom que deseja. Esta
função está detalhada na seção anterior.
Alinhar: este botão está associado a um menu que permite alinhar os objetos no formulário. Que essa função
esteja ativa ou não depende dos objetos selecionados.
Distribuir: este botão está associado a um menu que permite distribuir os objetos no formulário. Que essa
função esteja ativa ou não depende dos objetos selecionados.
Nota: Para mais informação sobre alinhamento e distribuição de objetos, consulte Alinhar objetos.
Plano: este botão está associado a um menu que permite modificar o plano dos objetos no formulário. Que
essa função esteja ativa ou não depende dos objetos selecionados.. Para mais informação, consulte Superposição
de objetos.
Agrupar/Desagrupar: este botão está associado a um menu que permite agrupar e desagrupar a seleção de
objetos do formulário. Que essa função esteja ativa ou não depende dos objetos selecionados.. Para mais informação,
consulte Agrupar objetos.
Exibir e controlar páginas: esta área permite passar de uma página a outra e adicionar páginas.
Para navegar pelas páginas do formulário, clique nos botões de flecha ou clique na área central e selecione a página a
ser exibida no menu que aparecer. Se clicar no botão com flecha para a direita, quando já estiver na última página do
formulário, 4D permite adicionar uma página nova. Para mais informação, consulte Criar um formulário multipágina.
Gestão de vistas: este botão exibe ou oculta a palheta de vistas. Esta função é descrita em Modos de
exibição de objetos.
Marcas: cada clique nesse botão provoca a visualização sucessiva de todos os tipos de marcas. Este botão
também está associado a um menu que permite escolher diretamente o tipo de marcas a mostrar. Essa função é
detalhada em Usar as Marcas.
Abrir a biblioteca de objetos pré-configurados: este botão mostra a janela da biblioteca de objetos
predefinidos, oferece vários objetos com as propriedades padrão. Para mais informação, consulte Usar a biblioteca
pré-configurada.
Bloqueio de usuário: quando este ícone estiver presente à direita da barra de ferramentas, significa que o
formulário é "modificável pelo usuário". Para editar o formulário diretamente, deve primeiro desbloquear o formulário
clicando nesse ícone. Para mais informação, consulte Editável pelo usuário.
Barra de objetos
A barra de objetos contém todos os objetos ativos e inativos utilizáveis nos formulários de 4D. Alguns objetos estão
agrupados por temas (botões, botões de opção, menus, etc.). Cada tema inclui várias alternativas que pode selecionar.
Quando a barra de objeto tem o foco, pode selecionar os botões utilizando as teclas. A seguinte tabela descreve as famílias
de objetos disponíveis e sua tecla associada.
- 243 -
Botão
Família
Tecla
Texto / Área de grupo
T
Campo / Variável
F
Área de rolagem / Lista hierárquica / List Box
L
Combo box / Menu suspenso / Menu hierárquico suspenso / Menu imagem suspenso
P
Botão / Botão 3D / Botão inverso / Botão invisível / Botão imagem / Grade de botões
B
Botão de opção / Botão de opção 3D / Botão imagem de opção
R
Caixa de seleção / Caixa de seleção 3D
C
Indicador de progresso / Dial / Régua
I
Retângulo / Linha / Retângulo arredondado / Oval / Matriz
S
Separador / Guia
D
Área de plug-in / Sub-formulário / Web Area
X
Para desenhar um tipo de objeto, selecionar o botão correspondente e logo traça o objeto no formulário. Depois de criar um
objeto, pode modificar seu tipo utilizando a Lista de propriedades. Mantenha pressionada a tecla Shift enquanto cria um
objeto para obrigar que sua forma seja regular. As Linhas regulares são as verticais, horizontais ou 45º, os retângulos se
tornam quadrados e os ovalados se tornam círculos.
Ao clicar na parte direita de um dos botões, aparece o menu de variações. A variação atualmente selecionada no menu
será o objeto inserido no formulário.
Quando um botão estiver selecionado, pode navegar através de suas variações usando o atalho Shift + Tecla de Seleção.
As mensagens de ajuda mostram a variação atual selecionada e a tecla associada ao objeto.
Pode clicar duas vezes no botão para que permaneça selecionada inclusive depois de se traçar um objeto no formulário
(seleção persistente). Esta função facilita a criação de múltiplos objetos do mesmo tipo. Para cancelar uma seleção
permanente, selecione outro objeto ou ferramenta.
Lista de propriedades
Os formulários e os objetos do formulário têm propriedades que controlam o acesso ao formulário, sua aparência e
comportamento durante o uso. As propriedades de formulário incluem, por exemplo, o nome do formulário, a barra de menu
associada e o tamanho. As propriedades de um objeto incluem, por exemplo, o nome, tamanho, cor e fonte.
Pode ver e modificar essas propriedades utilizando a Lista de propriedades. Essa palheta é atualizada dinâmicamente em
função dos objetos selecionados na janela do editor.
Para mostrar ou ocultar a Lista de propriedades:
1. Selecione Lista de propriedades no menu Formulário ou no menu contextual do editor de formulários (clique com o
botão direito na janela do editor, mas sem clicar em nenhum objeto).
Ou
Utilize a combinação de teclas Ctrl+Shift+Barra de espaço (Windows) ou Comando+Shift+Barra de espaço (Mac
OS).
Aparece a lista de propriedades:
- 244 -
Selecionar as propriedades
A lista de propriedades mostra as propriedades do formulário ou as do objeto selecionado:
Quando não há um objeto selecionado, a lista de propriedades mostra as propriedades do formulário,
Quando um objeto ou conjunto de objetos estiver selecionada, a lista de propriedades mostra as propriedades do
objeto ou as propriedades comuns dos objetos selecionados.
Pode selecionar os elementos cujas propriedades deseja mostrar clicando sobre eles no formulário ou usando a lista de
seleção, localizada na parte superior da janela Lista de propriedades. A lista de seleção contém três partes, separadas por
uma linha:
nome do formulário,
os objetos dinâmicos (associados a uma variável),
Lista dos objetos estáticos (não associados a uma variável).
Para cada objeto dinâmico, a lista mostra o nome da variável seguido pelo nome do objeto entre parêntesis, ou unicamente
o nome do objeto. Pode definir a visualização usando o menu associado à lista. O comando indica o tipo de visualização
atual:
- 245 -
Também pode modificar a ordem de cada parte da lista. Como padrão, a lista é ordenada em função do plano dos objetos
(do primeiro plano ao fundo). O menu associado permite ordenar a lista em ordem alfabética.
Os botões localizados à esquerda da lista
permitem selecionar cada objeto da lista sucessivamente, de cima para
baixo.
Propriedas de visualização de páginas
Pode escolher o modo de visualização da informação na lista de propriedades utilizando as abas de seleção das páginas.
A primeira página
(Principal) mostra toda a informação relativa ao objeto selecionado usando diferentes temas
(fonte de dados, coordenadas e dimensões, eventos, etc.). Pode expandir ou contrair cada tema clicando no ícone de
expansão localizado à esquerda de seu nome; isso permite mostrar apenas as propriedades com as quais deseja
trabalhar.
A visualização é contextual: apenas são mostrados os temas e propriedades significativos para o tipo de objeto
selecionado. A visualização de algumas propriedades também muda dinamicamente segundo o valor de outras
propriedades. Por exemplo, a propriedade Tabulável para um campo aparece como disponível apenas se a
propriedade Editável foi previamente definida.
As outras seis páginas contém informação específica relacionada com o objeto selecionado. Além disso, são
mostradas todas as propriedades de cada tema, sem importar o tipo de objeto. As propriedades não pertinentes
aparecem inativas.
Esta alternativa oferece uma visão mais global das possibilidades de parâmetros associados aos objetos. A seguir
são descritas as seis páginas temáticas:
Definição: reúne as propriedades que definem a identidade do objeto (tipo, nome, fonte de dados, etc.).
Comportamento: reúne as propriedades que definem o comportamento dinâmico dos objetos (método
associado, arrastar e soltar, eventos de formulário).
Dimensões: reúne as propriedades que definem as coordenadas, o tamanho e o redimensionamento do
objeto.
Valor: reúne as propriedades que definem a edição e a visualização dos objetos editáveis (controle de
entrada, atalho de teclado, formato de saída, etc.).
Aspecto: reúne as propriedades que definem a aparência gráfica dos objetos.
Específico: reúne as propriedades específicas do tipo de objeto selecionado (mensagens de ajuda para
campos, animação para botões imagem, parâmetros de impressão para formulários, etc.). Diferente das outras
páginas temáticas, as propriedades não relevantes para o objeto não aparecem.
Atalhos de movimentação
Pode navegar na Lista de propriedades utilizando os seguintes atalhos de teclado:
Flechas verticais ↑ ↓: para ir de uma célula a outra.
Flechas horizontais ← →: para expandir/contrair temas ou menus.
RePg e AvPg: para selecionar a primeira ou a última célula visível da Lista de propriedades.
Início e Fim: para selecionar a primeira ou última célula da Lista de propriedades.
Ctrl+clique (Windows) ou Comando+clique (Mac OS) em um evento: seleciona/deseleciona todos os eventos na
lista, em função do estado inicial do evento no qual cique.
Ctrl+clique (Windows) ou Comando+clique (Mac OS) em uma etiqueta de tema: colapsa/expande todos ls temas na
lista.
Ícones de cadeado
Quando aplica a propriedade Modificável pelo usuário ao formulário, aparecem na lista de propriedades os ícones de
bloqueio que indicam quais são as propriedades modificáveis ou não pelo usuário:
- 246 -
Para mais informação, consulte o parágrafo Editável pelo usuário.
Usar as réguas
As réguas do editor de formulários se extendem pela altura e largura do formulário. Pode ocultar as réguas para aumentar o
espaço de sua área de trabalho na janela do Editor de formulários. Pode mostrar ou ocultar as réguas a qualquer momento,
selecionando Réguas no submenu Exibir do menu Formulário ou no menu contextual do Editor de formulários (clique com
o botão direito do mouse na área de trabalho, sem selecionar nenhum objeto).
As réguas contém marcadores que indicam a posição do cursor quando cria ou redimensiona um objeto. Enquanto estiver
movendo o objeto, os marcadores mudam para indicar os limites superior, inferior, direito e esquerdo do objeto. Os
marcadores dos objetos permitem alinhar outros objetos na mesma posição das réguas.
Pode modificar as unidades de medida das réguas segundo suas preferências.
Para definir a unidad de las réguas:
1. Selecione Definir unidades no menu Formulário (um formulário deve estar selecionado para que esse menu seja
visível).
mostra a caixa de diálogo Definição da régua.
2. Clique na unidade de medida que deseja utilizar.
Clique em Pontos para mostrar as réguas em escala de pontos. Um ponto equivale a largura de um pixel. Uma
polegada tem 72 pontos.
Clique em Centímetros para mostrar as réguas em sistema métrico.
Clique em Polegadas para mostrar as réguas em sistema inglês (polegadas e pés).
3. Clique no botão Ok.
4D muda a unidade de medida para a escala selecionada. As coordenadas dos objetos também utilizarão as mesmas
unidades.
- 247 -
Propriedades de formulário
As propriedades de um formulário são definidas na Lista de propriedades de Editor de formulários.
Algumas propriedades do formulário podem ser definidas utilizando a janela propriedades do Explorador. Para mais
informação, consulte a seção Propriedades de formulário (Explorador).
Propriedades Gerais
Tipos de formulários
Pode mudar o tipo de formulário, ou seja, seu propósito. Para os formulários de projeto, há dois tipos disponíveis:
Formulário detalhado e Formulário de impressão detalhado. Para os formulários tabela, há dois tipos adicionais:
Formulário listado e Formulário de impressão listado.
Esta propriedade determina as opções presentes na lista de propriedades para o formulário.
Esta propriedade também permite restringir o número de formulários mostrados nas listas de seleção de formulários de
entrada e de saída atuais (a janela Lista de tabelas, ver a seção Navegar entre tabelas e formulários): apenas são
mostrados os formulários cujo tipo corresponde à lista.
A propriedade Tipo de formulário se encontra na parte superior da lista de propriedades. Quando o formulário é do tipo
Nenhum, aparece em ambos menus da Lista de tabelas.
Nota: igualmente pode definir o tipo de formulário utilizando a janela de propriedades própria do Explorador (consulte a
seção Propriedades de formulário (Explorador)).
Formulários herdados
Estas propriedades são descritas na seção Formulários Herdados.
Título padrão de janela
O nome automático da janela é utilizado quando o formulário é aberto usando as funções Open window e Open form
window em aplicações personalizadas. O título automático da janela aparece na barra de título da janela. Para definir o título
automático da janela, escreva o nome na área Título da janela.
Pode utilizar referências dinâmicas para definir o título da janela:
Uma referência XLIFF padrão (ver MissingRef).
Uma etiqueta de um campo ou de uma tabela: a sintaxes a aplicar é do tipo <?[NumTabela]NumCampo> ou <?
[NomeTabela]NomeCampo>. O valor dessas referências se calcula no momento da execução dos comandos
INPUT FORM (se é passado o parâmetro * e está seguido por uma chamada a Open window) e quando se chama o
comando Open form window.
Uma variável ou um campo: a sintaxe a aplicar é <NomeVariavel> ou <[NomeTabela]NomeCampo>. O valor atual
da variável ou do campo se mostrará no título da janela.
Notas:
O número de caracteres para o título de uma janela está limitado a 31.
Também pode definir o título da janela desde a janela de propriedades especifica del Explorador (ver Propriedades
de formulário (Explorador)).
Editável pelo usuário
A propriedade Modificável pelo usuário permite indicar que o formulário pode ser personalizado pelos usuários desde o
editor de formulários em modo Aplicação (ver Formulários de usuário). Para utilizar estes mecanismos é necessário
definir parâmetros adicionais, os quais são descritos na seção Formulários de usuário do manual de Linguagem 4D.
Quando a propriedade Modificável pelo usuário estiver selecionada, o formulário é bloqueado. Quando abrir um formulário
com essa propriedade, aparece um ícone de cadeado na barra de ferramentas, e não é possível realizar modificações.
Deve clicar nesse ícone para desbloquear o formulário, nesse caso, os possíveis formulários usuários são convertidos em
obsoletos e devem ser regenerados.
Quando a propiedade Modificável pelo usuário estiver selecionada, la lista de propriedades também fica com cadeados
indicando as propriedades que foram bloqueadas.
Pode clicar nesses ícones para "abrir" os cadeados e assim fazer com que as propriedades correspondentes voltem a ser
modificáveis no editor de formulários de usuários.
.
- 248 -
Nota: também pode definir a propriedade Modificável pelo usuário utilizando a janela de propriedades especifica desde o
Explorador (consulte Propriedades de formulário (Explorador)).
Memorizar Geometria
Quando a opção Memorizar geometria está selecionada, se a janela é aberta com o comando Open form window com o
parâmetro *, vários parâmetros do formulário serão guardados automaticamente por 4D quando a janela seja fechada,
independentemente da forma em que foram modificados durante a sessão:
a página atual,
a posição, o tamanho e a visibilidade de cada objeto do formulário (incluindo o tamanho e a visibilidade das colunas
de list box).
Nota: esta opção não leva em conta os objetos gerados com o comando OBJECT DUPLICATE. Para que um usuário
recupere seu entorno quando utilize este comando, o desenvolvedor deve repetir a sequência da criação, definição e
posicionamento dos objetos.
Quando se seleciona esta opção, a opção Memorizar valor também está disponível para certos objetos. Para mais
informação e alguns exemplos de seu uso, consulte Memorização da geometria das janelas.
Não inverter objetos (Windows)
A opção Não invertir objetos permite desativar o modo "direita para esquerda" para o formulário. O modo "direita para
esquerda" (apenas para o sistema Windows) inverte os objetos e títulos dos formulários do banco de dados. Esse modo é
utilizado no contexto de idioma que são lidos da direita para a esquerda (como o árabe). Para mais informação sobre a
ativação desse método, consulte o parágrafo "Idiomas de direita para a esquerda" na seção OBJECT Get enabled.
Quando a opção Não inverter objetos estiver selecionada para um formulário, o modo direita para a esquerda não se
aplica a este formulário em modo Aplicação, sem importar a configuração do banco de dados. Essa opção pode ser
utilizada, por exemplo, para definir formulários "internacionais" em um banco de dados configurado em modo direita para
esquerda. Essa opção é encontrada na lista de propriedades, como também em uma caixa de diálogo Propriedades de
formulário (Explorador).
Nota: esta propriedade também pode ser manejada por programação usando o comando GET FORM PARAMETER.
Tamanho de janela de formulário
Um formulario sempre é mostrado numa janela. 4D permite definir o tamanho do formulário e da janela, assim como seu
comportamento respectivo em caso de redimensionamento.
Estas propriedades são interdependentes e a interface de sua aplicação é o resultado de sua combinação. Atenção que o
resultado também é dependente das propriedades de redimensionamento atribuídas a cada objeto do formulário (para mais
informação, consulte ).
Tamanho de formulário
Defina as propriedades de tamanho do formulário no tema “Tamanho do formulário” da Lista de propriedades. As seguintes
opções estão disponíveis:
Tamanho baseado em: Tamanho automático: o tamanho do formulário será o necessário para mostrar todos os
objetos que ele contiver; neste caso as outras duas opções permitem adicionar Margem horizontal e Margem
Vertical (em píxeis).
Tamanho baseado em: Ajustar tamanho: o tamanho do formulário estará baseado no valor que você defina (em
píxeis) nos campos Largura e Altura (ao selecionar Ajustar tamanho, as opções Margem horizontal e Margem vertical
se transformam em Largura e Altura).
Tamanho baseado em: um objeto: o tamanho do formulário estará baseado na posição do objeto do formulário
selecionado. Por exemplo, se escolher um objeto localizado na parte inferior direita, o tamanho do formulário será um
retângulo cuja esquina superior esquerda será a origem do formulário e a esquina inferior direita corresponderá à
parte inferior direita do objeto selecionado, mais os valores de margens. Pode utilizar essa opção quando queira
utilizar os objetos ativos localizados fora da área visível (ou seja, fora do retângulo da janela) com uma janela de
tamanho automático. Devido à essa opção, a presença desses objetos não modificará o tamanho da janela.
Quando seleciona a opção Tamanho automático ou um tamanho baseado em um objeto, dispõe dos campos
Margem horizontal e Margem vertical. Pode introduzir os valores (em píxeis) para definir margens adicionais para
ser adicionadas às margens do formulário. Estes valores também determinam as margens superior e direita dos
formulários utilizados no Editor etiquetas.
Nota: para os formulários de saída, só estão disponíveis os campos Margem horizontal ou Largura.
Ajuste dinâmico: a propriedade Ajuste dinâmico está disponível no tema “Tamanho do formulário” para os formulários
convertidos de versões anteriores de 4D, quando a propriedade Tamanho automático está selecionada. Esta
propriedade permite modificar o modo de redimensionamento dos formulários. Nas versões anteriores de 4D, quando
um formulário tinha a propriedade Tamanho automático, o tamanho do formulário se calculava só no momento de ser
- 249 -
aberto. Se havia alguma mudança posterior utilizando comandos como OBJECT MOVE, o tamanho do formulário não
se ajustava. Além disso, o tamanho do formulário se ajusta dinamicamente neste caso. Este princípio se ativa para
novos formulários. Por outro lado, por razões de compatibilidade, os formulários de bancos de dados convertidos não
se beneficiam desta propriedade automática. Se deseja que o tamanho dos formulários convertidos se ajuste
dinamicamente, marque a opção Ajuste dinâmico.
Tamanho de janela
Quando um formulário de entrada é mostrado em uma aplicação personalizada, geralmente é aberto usando as funções
Open window ou Open form window.
Open window permite definir as coordenadas superior, esquerda, inferior e direita, e o tipo da janela. Neste caso, o
tamanho da janela não depende do tamanho do formulário. Por outro lado, as possibilidades de redimensionamento
dependem das opções definidas no tema "Tamanho do formulário" e do tipo de janela. Open form window cria uma nova
janela baseada nas propriedades de tamanho e redimensionamento do formulário passadas como parâmetros.
Pode definir o redimensionamento da janela do formulário na Lista de propriedades. As seguintes opções estão disponíveis:
Com restrições: esta propriedade está disponível para os formulários convertidos desde uma versão anterior de 4D.
Se utiliza para reproduzir o funcionamento da antiga propriedade do formulário “Redimensionável”: quando esta opção
não está selecionada, os mecanismos que manejam o redimensionamento de objetos e as restrições do tamanho das
janelas são desativadas. Desse modo, o usuário pode redimensionar livremente a janela do formulário mas os objetos
que contém não são redimensionados nem movimentados. As propriedades do tamanho mínimo e máximo ou fixo
assim como as propriedades de redimensionamento dos objetos são ignoradas. Este funcionamento corresponde às
antigas versões de 4D e só devem ser usadas por razões de compatibilidade em interfaces específicas. O
funcionamento dos bancos de dados 4D atuais corresponde à opção selecionada (modo padrão).
Largura fixa: se seleciona esta opção, a largura da janela será bloqueada e o usuário não poderá redimensioná-la.
Se essa opção não estiver selecionada, a largura da janela do formulário poderá ser modificada. Nesse caso, as
áreas de entrada Largura mínima e Largura máxima podem ser usadas para determinar os limites de
redimensionamento..
Altura fixa: se marca esta opção, a altura da janela será bloqueada e o usuário não poderá redimensionar
verticalmente a janela do formulário. Se essa opção não estiver selecionada, a altura da janela do formulário poderá
ser modificada. Nesse caso, as áreas de entrada Altura mínima e Altura máxima podem ser usadas para
determinar os limites de redimensionamento.
Como regra geral, é necessário evitar que o usuário oculte as áreas editáveis e os botões de controle.
Aparência
Plataforma
A propriedade de interface de plataforma permite definir a aparência do formulário segundo o contexto de execução. Essa
propriedade também pode ser definida individualmente para cada objeto do formulário (consulte LOG EVENT)
Duas propriedades de interface estão disponíveis: Sistema e Impressão. São usadas quando, na tela, um formulário deve
respeitar a interface do sistema operativo atual (sistema) ou quando um formulário é para impressão, a aparência dos
objetos deve ser adaptada (Impressão), sem importar a plataforma.
Sistema: esta propriedade permite adaptar automaticamente a aparência do formulário ou do objeto em função da
plataforma atual de execução de 4D:
Quando o formulário é mostrado em Mac OS X, o formulário ou o objeto tem a aparência Mac OS X,
Quando o formulário é mostrado em Windows, o formulário ou o objeto tomam a aparência definida no
parâmetro “Aparência” atual das propriedades de visualização do painel de controle.
Este modo é utilizado automaticamente para todos os formulários e objetos dos bancos criados com 4D a partir da
versão 2004.
Impressão: essa propriedade permite adaptar a aparência do formulário ou do objeto a imprimir: qualquer objeto ou
elemento gráfico (botão, caixa de seleção, aba, linha, etc.) é desenhado como um vetor com o propósito de produzir
um resultado satisfatório de impressão. O mesmo resultado é obtido sem importar a plataforma onde se mostre ou
imprima o formulário.
Opções de aparência para Mac OS
Pode definir duas opções específicas para configuras a aparência do formulário em Mac OS: Aparência metalizada e
Botão barra de ferramentas. Quando o formulário é executado em Windows, essas opções não têm efeito.
Aparência metalizada (Mac OS): esta propriedade de formulário permite ativar o modo de aparência texturizada
para o formulário quando se mostra utilizando o comando Open form window em Mac OS. Esta aparência se
encontra com frequência na interface Mac OS X:
- 250 -
Se o formulário é mostrado em uma janela que não foi criada pelo comando Open form window (por exemplo no
modo Desenho), a propriedade não será considerada.
Em Mac OS, o efeito aparência metalizada é pré-visualizado no editor de formulários quando se seleciona a opção
Aparência metalizada e são mostrados os limites do formulário.
Botão barra de ferramentas (Mac OS): esta propriedade permite mostrar o botão de gestão da barra de
ferramentas em Mac OS. Este botão padrão permite alternadamente mostrar ou ocultar a barra de ferramentas da
janela:
Utilize esta opção se criar a janela com o comando Open form window ou DIALOG por exemplo. Isto equivale a
utilizar a constante Has toolbar button Mac OS com o comando Open window ou Open form window.
Nota: o evento de formulário On Mac toolbar button se gera quando o usuário clicar no botão.
É tarefa do desenvolvedor da interface especificar as ações a ser realizadas quando se clica no botão.
Esconder caixa de redimensionamento
Esta opção permite controlar a presença de uma caixa de redimensionamento na janela do formulário. Essa opção é
considerada quando se chama o formulário através do comando DIALOG por exemplo.
Imprimir
As propriedades de impressão estão descritas na seção Imprimir um formulário.
Atribuir uma barra de menu a um formulário
Quando cria uma aplicação, pode criar menus personalizados. Os menus personalizados permitem adicionar comandos de
menus que automatizem as ações comuns associadas a um formulário particular, como por exemplo a geração de um
informe.
Os menus personalizados são criados no editor de barras de menus. Cada barra de menu que criar tem pelo menos um
menu, um nome e um número de identificação únicos. Para mais informação sobre a criação de barras de menus, menus e
comandos de menus, consulte Menus e barras de menus.
Para associar uma barra de menus a um formulário, selecione uma barra de menus na lista "Barra de menus associada" na
Lista de propriedades. O botão [...] permite acessar diretamente o editor de Menus e barras de menus. Em modo
Aplicação, uma barra de menus associada a um formulário se adiciona do lado direito da barra de menus atual.
Se a barra de menus do formulário é idêntica à barra de menus atual, não é adicionada. A barra de menus de um formulário
opera para os formulários de entrada e saída.
A opção Barra de menus ativa aparece quando seleciona uma barra de menus. Se deseja utilizar este formulário em
uma aplicação personalizada, selecione a opção Barra de menus ativa. Esta opção indica a 4D que não desative a
barra de menus atual. Se esta opção não estiver selecionada, 4D desativa a barra de menus atual e apenas permite
acesso à barra de menus associada ao formulário.
Nota: também pode associar uma barra de menus ao formulário na caixa de diálogo Propriedades de formulário
(Explorador).
Controlar acesso ao formulário
Pode controlar o acesso a um formulário estabelecendo os privilégios de Acesso e Proprietário para os grupos de usuários.
Apenas pode associar um grupo de usuários a cada privilégio usando as listas de Acesso e Proprietário. Para mais
informação sobre a criação de um sistema de acesso por senhas com usuários e grupos, consulte o capítulo Usuários e
grupos.
- 251 -
A lista Acesso define qual grupo pode utilizar o formulário na janela de visualização de registros ou em uma aplicação
personalizada. Se um usuário que não pertence a este grupo intenta utilizar o formulário, 4D mostrará uma mensagem
indicando ao usuário que sua senha não permita acessar ao formulário.
A lista Proprietário determina que grupo pode modificar o formulário no ambiente Desenho. Se um usuário que não pertença
a este grupo tenta abrir o formulário no ambiente Desenho, 4D mostrará uma mensagem indicando ao usuário que não tem
privilégios para modificar o formulário.
Os usuários que pertencem aos dois grupos podem utilizar o formulário no ambiente Desenho ou em aplicações
personalizadas.
Para definir os privilégios de acesso de um formulário:
1. Exibir as propriedades do formulário na Lista de propriedades.
2. Utilize as listas Acesso e Proprietário para afetar os privilégios necessários.
Os nomes dos grupos existentes são mostrados em cada lista.
O botão [...] permite acessar diretamente à página Grupos na Caixa de ferramentas de 4D.
Também pode atribuir grupos de acesso a um formulário na caixa de diálogo Propriedades de formulário (Explorador).
Ajuda
4D permite associar um arquivo de ajuda em linha personalizada para cada banco. A criação de arquivos de ajuda é
descrita em Apêndice A: Designar um arquivo de ajuda personalizado.
Um arquivo de ajuda pode ser contextual, ou seja, pode mostrar informação relacionada com o contexto desde o qual foi
chamado. Para isso, pode associar um Número de tema de ajuda a um formulário e o mesmo número à seção ou à
página correspondente do arquivo de ajuda. Esta operação se realiza no tema “Ajuda” da Lista de propriedades.
Ação
O botão Editar... permite acessar ao método do formulário. Este tema é tratado na seção Editar Métodos.
Marcadores
Esta área permite definir com precisão a localização dos marcadores na régua vertical do formulário. Os marcadores só são
relevantes para os formulários de saída. Eles controlam a informação que é mostrada e definem as áreas de cabeçalho e
rodapé do formulário. Para mais informação sobre o uso de marcadores de controle, consulte Usar linhas de controle de
saída.
Nota: o marcador localizado na régua horizontal controla o tamanho das etiquetas quando cria um formulário com o objetivo
de imprimir etiquetas através do comando PRINT LABEL.
Eventos
- 252 -
Esta área permite definir os eventos que podem chamar a execução do método formulário. Quando o formulário é usado,
apenas ocorrerão os eventos que tenha selecionado. Se não selecionar nenhum evento, o método formulário não será
chamado.
Sua aplicação será executada mais rapidamente se desmarcar os eventos supérfluos.
Para mais informação sobre os eventos disponíveis, consulte Form event.
Para selecionar ou desmarcar todos os eventos, utilize a combinação Ctrl (em Windows) ou Comando (em Mac OS) e
clique em um evento.
- 253 -
Propriedades de formulário (Explorador)
É possível acessar as propriedades principais de um formulário na Página Formulários do Explorador. Clique no nome do
formulário, logo clique no comando Propriedades do formulário.... no menu contextual (botão direito) ou no menu de opções
da página.
As propriedades são mostradas numa caixa de diálogo específica:
A maioria das propriedades nessa caixa de diálogo (nome, acesso, plataforma, etc.) também podem ser definidas na Lista
de propriedades do editor de formulários e são descritas na seção Propriedades de formulário. Entretanto, a propriedade
"Publicado como subformulário no banco principal" (descrita a continuação) é encontrada nessa caixa de diálogo.
Publicado como subformulário no banco principal
Essa opção é útil no contexto do desenvolvimento de componentes que contém formulários (ver o parágrafo Compartilhar
formulários).
Para que um formulário de componente possa ser selecionado como subformulário em um banco local, deve ter sido
escolhido explicitamente como "Publicado como subformulário no banco principal": para fazer isso, selecione a opção
Publicado como subformulário no banco local. Apenas os formulários projeto podem ser especificados como subformulários
publicados.
Para mais informação sobre a definição e utilização de subformulários de componentes, consulte a seção Desenvolver
componentes.
- 254 -
Criar um formulário multi-página
Pode criar várias páginas para um formulário de entrada. Se tem mais campos dos que cabem em uma tela, pode criar
páginas adicionais parar que os mostre. Utilizar páginas múltiplas permite:
Colocar a informação mais importante na primeira página, e a informação secundária nas demais páginas.
Organizar as páginas por temas.
Reduzir ou eliminar a necessidade de rolagem da tela durante a entrada de dados.
Ter espaço ao redor dos elementos do formulário para obter um design de tela mais atrativo.
Os formulários de páginas múltiplas são convenientes para os formulários de entrada, não para as impressões. Ao imprimir
um formulário multi-páginas, apenas se imprime a primeira pãgina.
Não há limite no número de páginas que um formulário pode ter. Um mesmo campo pode aparecer várias vezes em um
formulário e em tantas páginas quanto deseje. Entretanto, maior o número de páginas, maior o tempo para mostrar o
formulário.
Um formulário multi-páginas tem uma página de fundo (página 0) e várias páginas de visualização. No editor de formulários,
os objetos localizados na página de fundo são visíveis em todas as páginas, mas somente podem ser selecionados e
editados na páginas 0. Nos formulários multi-páginas, deve colocar a palheta de botões na página de fundo.
Também é necessário incluir um ou mais objetos na página de fundo, que permitam ao usuário navegar de uma página a
outra. Para mais informação sobre como adicionar ferramentas de navegação de páginas, consulte o parágrafo Agregar
controles de navegação de página.
Nota: a página Opções do assistente de criação de formulários contém uma opção que permite criar automaticamente um
formulário mult-ipáginas se o número de campos não se ajustan em uma página. Se selecionar essa opção, o formulário
pode ter mais de uma página de visualização. Quando o assistente de criação de formulários criar várias páginas, coloca
automaticamente os botões, as variáveis, o título do formulário e os objetos decorativos na página 0
Adicionar uma página de exibição a um formulário
Cada formulário tem pelo menos uma página de exibição e uma página de fundo. O número da página atual aparece na
barra de ferramentas da janela do formulário. Essa área tem um menu destacável que permite navegar pelas diferentes
páginas do formulário.
Para adicionar uma página:
1. Selecione o comando Adicionar página no menu Formulário. 4D cria uma nova página.
Ou
2. Vá à última página do formulário e clique no ícone Página Seguinte
na barra de ferramentas. 4D mostra uma nova
caixa de diálogo perguntando se deseja adicionar uma página. Clique no botão Ok para criar a nova página.
Uma nova página vazia aparece na janela do editor de formulários.
A área de número de página indica o número da página que está sendo visualizada. Também pode adicionar campos
e outros elementos à nova página.
Para inserir uma página antes da página atual:
1. Selecione o comando Inserir página no menu Formulário. 4D insere uma nova página antes da página atual e a
mostra em tela.
Mover-se entre páginas
Para ver a página de fundo ou passar à outra página, pode usar as ferramentas de navegação da palheta de ferramentas ou
o menu pop up da janela do editor de formulários.
Para mostrar a página de fundo (página 0):
1. Vá para a primeira página do formulário e clique no ícone Página anterior
Ou
Utilize o menu de navegação para passar para a página 0.
Ou
Selecione 0 no submenu Ir a página do menu Formulário.
- 255 -
na barra de ferramentas.
Ou
Pressione Alt+clique (Windows) ou Opção+clique (Mac OS) em um objeto da página 0, ou fora de qualquer objeto
da página atual (p atalho Alt+clique ou Opção+clique em um objeto da página atual cria ou abre o método do objeto).
4D mostra a página 0. A página 0 é a página de fundo. Os objetos da página 0 aparecem em todas as páginas. Pode
colocar todo tipo de objeto na página de fundo.
Nota: Não confunda a opção Ir a página > 0 com a opção Mostrar > Página 0. Esta última mostra ou oculta os elementos
da página 0, estando em qualquer página. Para mais informação consulte “Mostrar/Ocultar elementos no editor de
formulários” na seção Editor de formulários.
Para utilizar as ferramentas de navegação de páginas:
1. Para passar a página seguinte, clique no ícone Página seguinte
4D mostra a página seguinte ou anterior à página atual.
na barra de ferramentas.
Se clicar no ícone Página anterior quando estiver na primeira página do formulário, aparece a página de fundo. Se clicar no
ícone Página anterior estando na página de fundo, nada acontecerá. Se clicar em Página seguinte estando na última página
do formulário, 4D perguntará se deseja adicionar outra página para o formulário.
Para mostrar qualquer página:
1. Clique na área de número da página e pressione o botão do mouse para mostrar o menu pop-up associado.
Ou
Vá ao submenu Ir à página> do menu Formulário.
2. Selecione o número da página a mostrar.
Eliminar uma página
Pode apagar qualquer página de um formulário multi-páginas. Todos os campos e objetos nas páginas eliminadas também
são eliminados. As páginas restantes são renumeradas. Não pode eliminar a primeira página ou a página de fundo (0) em
um formulário que tenha apenas essas duas páginas.
Para eliminar uma página de um formulário:
1. Utilize as ferramentas de navegação de páginas ou o menu pop-up para mostrar a página a ser eliminada.
2. Selecione a opção Eliminar página do menu Formulários.
Aparece uma caixa de diálogo de verificação para confirmar se deseja eliminar a página do formulário.
3. Clique no botão Ok.
São eliminados do formulário a página e os objetos que ela conter.
Agregar controles de navegação de página
Quando criar um formulário multi-páginas, é necessário oferecer aos usuários uma maneira de passar de uma página para
outra. 4D oferece três formas de agregar ferramentas de navegação:
Abas: as abas dão aos usuários acesso aleatório às páginas individuais. Localize a aba na página de fundo do
formulário e utilize suas propriedades para proporcionar controles de navegação de páginas.
Botões automáticos: pode agregar botões automáticos ao formulário, primeira página, última página, página
seguinte, e página anterior. Estes botões devem estar localizados na página de fundo.
Métodos de objeto: adicionalmente, a linguagem de programação inclui o comando FORM GOTO PAGE. É possível
usar esse comando no método de objeto para criar controles de navegação personalizados. Por exemplo, pode utilizar
o botão imagem ou um menu pop-up como interface de navegação entre páginas.
Agregar botões de navegação
Pode incluir os botões de navegação no momento em que está criando o formulário, usando a página Botões do assistente
de criação de formulários. Uma vez gerado o formulário, abra o formulário no editor de formulários e e agregue as páginas
que considere necessárias. Se necessita agregar botões de navegação de páginas depois de ter criado o formulário, pode
usar a ferramenta de criação de botões da barra de objetos. Para mais informações, consulte Botões.
Utilizar abas
Uma aba permite um acesso direto a uma página. Ou seja, os usuários não estão obrigados a passar sequencialmente de
uma página para outra. Uma aba oferece informação sobre a página atual e as páginas restantes. Para maior informação
sobre a criação e ativação de abas, consulte Controle de abas.
- 256 -
Formulários Herdados
4D permite utilizar “formulários herdados”. O princípio dessa função consistente em poder usar objetos de um formulário A
em um formulário B: o formulário B "herda" os objetos do formulário A.
Suponhamos por exemplo que todos os formulários de entrada de um banco devam ter os botões Ok, Cancelar, Próximo e
Anterior e um logo. Simplesmente crie um formulário que contenha apenas esses elementos e depois use-o como um
formulário herdado em todos os formulários de entrada do banco. Cada formulário de entrada contém apenas os campos e
objetos específicos para seu uso.
Diferente dos "modelos" definidos no assistente de formulários (consulte Criar um modelo de formulário), a referência a
um formulário herdado sempre permanece ativa: se um dos elementos do formulário herdade é mudado (por exemplo o
estilo ou posição dos botões), todos os formulários que utilizam esse elemento também serão automaticamente
modificados.
Os formulários herdados são compatíveis com os formulários tabela e formulários projeto.
Como funciona
Durante o uso do banco, os objetos do formulário herdado são combinados dinamicamente com os objetos do formulário
aberto. Esse mecanismo é muito similar aos mecanismos da "página 0" dos formulários, a diferença é que um formulário
herdado pode ser aplicado ao conjunto de formulários do banco.
Quando um formulário é executado, os objetos são carregados e combinados na seguinte ordem:
1.
2.
3.
4.
Página zero do formulário herdado
Página 1 do formulário herdado
Página zero do formulário aberto
Página atual do formulário aberto.
Esta ordem determina a ordem de entrada de objetos no formulário.
Nota: apenas as páginas 0 e 1 do formulário herdado podem aparecer em outros formulários.
As propriedades (nome da janela, redimensionamento, eventos, etc.) e os métodos de um formulário herdado não são
levados em consideração quando usados como um formulário herdado. Por outro lado, são chamados os métodos de
objetos que contém.
Definir um formulário herdado
Se deseja definir um formulário como herdado, deve utilizar o editor de formulários 4D.
Para definir um formulário herdado:
1. No editor de formulários, abra o formulário onde deseja utilizar o formulário herdado.
2. Exiba a Lista de propriedades e clique fora de todos os objetos do formulário para visualizar as propriedades do
formulário.
As listas "Tabela de formulário herdado" e "Nome de formulário herdado" estão disponíveis. Nessas listas aparecem
todas as tabelas de seu banco de dados e seus formulários.
3. Selecione a tabela e o nome do formulário a herdar. Para herdar de um formulário projeto, selecione <Nenhum> na
lista "Tabela do formulário herdado".
Todos os formulários podem ser atribuidos como formulário herdado. Entretanto, os elementos do formulário devem ser
compatíveis com a utilização das diferentes tabelas do banco de dados.
- 257 -
Depois de selecionar o formulário herdado, seu conteúdo aparece na janela atual do editor de formulários. Aparece apenas
como "visualização prévia", e não é possível selecionar ou modificar um objeto nesse formulário. Para fazer isso, deve abrir
o formulário em sua própria janela.
Pode ocultar os objetos de um formulário herdado desmarcando a opção Formulário herdado no submenu Mostrar do menu
Formulário ou no menu contextual do editor.
Para não utilizar mais um formulário como formulário herdado, selecione a opção <Nenhum> na Lista de propriedades.
Nota: é possível definir um formulário herdado em um formulário que se utilizará como formulário herdado de um terceiro
formulário. A combinação dos objetos são efetuados de maneira recursiva. 4D detecta loops recursivos (por exemplo, se o
formulário [tabela1]formulario1 está definido como formulário herdado de [tabela1]formulario1, ou seja, tem o mesmo nome)
e interrompe a cadeia de formulários.
- 258 -
Modificar a ordem de entrada dos dados
A ordem de entrada dos dados na qual os campos, sub-formulários e outros objetos ativos são selecionados quando
pressiona a tecla Tab ou Enter em um formulário de entrada. É possível movimentar-se pelo formulário na direção oposta
(ordem de entrada invertida) pressionando as teclas Shift + Tab ou Shif +Enter
A ordem de entrada inclui cada área editável na qual pode entrar um valor. Os campos booleanos (que aparecem como
botões de opção ou caixinhas de seleção), subformulários, combo boxes e áreas que aceitam imagens também são
incluídas na ordem de entrada dos dados.
Indicadores de progresso, réguas e dials também podem ser usados para introduzir dados. Esses objetos, entretanto, não
são incluídos na ordem de entrada dos dados. Deve selecioná-los clicando neles.
Se não especificar a ordem de entrada personalizada, 4D usa como padrão as capas de objetos para determinar a ordem
de entrada na direção "fundo até primeiro plano". A ordem de entrada corresponde então à ordem de criação dos objetos
no formulário.
Em alguns formulários, é necessário definir uma ordem de entrada personalizada. Por exemplo, na seguinte imagem, foram
adicionados campos relacionados com a direção depois da criação do formulário.
A ordem de entrada resultante por padrão é ilógica e obrigado o usuário a introduzir os dados de uma forma incoerente.:
En casos como este, a ordem de entrada personalizada permite introduzir os dados em uma ordem mais lógica:
- 259 -
Ver e mudar a ordem de entrada de dados
Pode ver a ordem de entrada atual usando as marcas "Ordem de entrada" ou usando o modo "Ordem de entrada".
Entretanto, apenas pode modificar a ordem de entrada usando o modo "Ordem de entrada".
Este parágrafo descreve a visualização e modificação da ordem de entrada do formulário no modo "Ordem de entrada".
Para mais informação sobre a visualização da ordem de entrada usando as marcas, consulte Usar as Marcas.
Para ver ou modificar a ordem de entrada:
1. Selecione Ordem de entrada de dados no menu Formulário ou clique no botão
da barra de ferramentas da
janela.
O cursor toma a forma de um cursor de ordem de entrada e 4D cria uma linha no formulário indicando a ordem em que
os objetos serão selecionados durante a entrada de dados.
Visualizar e modificar a ordem de entrada são as únicas ações que podem ser realizadas até que se selecione outra
ferramenta na palheta de ferramentas.
2. Para modificar a ordem de entrada, coloque o cursor em um objeto no formulário e mantendo pressionado o botão do
mouse, arraste o mouse até o próximo objeto na ordem de entrada.
4D ajusta a ordem de entrada de dados como resultado.
3. Repita o passo 2 tantas vezes quantas sejam necessárias até obter a ordem de entrada de dados que deseja.
4. Quando estiver satisfeito com a ordem de entrada, clique em outra ferramenta da barra de ferramentas ou selecione o
comando Ordem de entrada de dados no menu Formulário.
4D volta ao modo de funcionamento normal do editor de formulários.
Nota: apenas são mostradas a ordem de entrada da página atual. Se o formulário contém objetos editáveis na página 0 ou
provenientes de um formulário herdado, a ordem de entrada por padrão é a seguinte: objetos da página 0 do formulário
herdado > Objetos da página 1 do formulário herdado > Objetos da página 0 do formulário aberto > Objetos da página atual
do formulário aberto.
Determinar o primeiro objeto na ordem de entrada
Todos os objetos editáveis fazem parte da ordem de entrada. Para definir o primeiro objeto da ordem de entrada de dados,
deve modificar sua posição dentro dos níveis de formulário. O modo Ordem de entrada de dados deve estar desativado.
Para definir o primeiro objeto da ordem de entrada:
1. Selecione o objeto a ser definido como primeiro da ordem de entrada.
2. Selecione Enviar ao fundo no menu Objeto.
Ou
Selecione Enviar ao fundo no submenu Nível no menu contextual do objeto.
- 260 -
3. Selecione Ordem de entrada de dados do menu Formulário ou clique no botão
da barra de ferramentas.
O objeto selecionado passa a ser o primeiro na ordem de entrada e o objeto que estava de primeiro passa a ser o
segundo. Agora pode arrastar o cursor de um objeto a outro segundo a ordem de entrada de dados que deseje
aplicar.
4. Uma vez que tenha terminado, selecione novamente Ordem de entrada de dados no menu Formulário ou clique em
outra ferramenta da barra de ferramentas. O editor de formulários volta ao seu funcionamento normal.
Usar um grupo para a entrada de dados
Enquanto modifica a ordem de entrada, pode selecionar um grupo de objetos do formulário de modo que a ordem de
entrada seja aplicada aos objetos do grupo. Isso facilita definir a ordem de entrada de dados em formulários nos quais os
campos estão organizados em grupos ou colunas.
Para criar um grupo de entrada:
1. Selecione Ordem de entrada de dados no menu Formulário ou clique no botão
da barra de ferramentas.
2. Desenhe um quadro de seleção ao redor dos objetos a agrupar para a entrada de dados.
Ao liberar o botão do mouse, os objetos rodeados ou tocados pelo retângulo mantém a ordem de entrada de dados padrão.
A ordem de entrada de dados para os demais objetos é ajustada conforme seja necessário.
Excluir um campo da ordem de entrada
Como padrão automático, todos os campos formam parte da ordem de entrada. Se deseja excluir um campo da ordem de
entrada, conservando sua propriedade "Editável", apenas desmarque a propriedade Tabulável para esse campo. Para mais
informação, consulte Controles de entrada de dados e ajuda de entrada.
- 261 -
Inserir e organizar objetos de formulário
Adicionar objetos
Pode adicionar objetos no formulário de diversas maneiras:
desenhando o objeto diretamente no formulário após selecionar seu tipo na barra de objetos (ver Barra de objetos)
arrastando e soltando o bojeto desde a barra de objetos
Arrastando e soltando ou copiando e colando desde a biblioteca de objetos pré-configurados (ver Usar a biblioteca
pré-configurada ou desde uma biblioteca personalizada (ver Criar e usar objetos de biblioteca personalizados),
Arrastando e soltando um objeto desde outro formulário,
Arrastando e soltando um objeto desde o Explorador (campos) ou desde outros editores no ambiente Desenho (listas,
imagens, etc.)
Logo que o objeto foi colocado no formulário, você pode modificar suas características com o editor de formulários.
Pode trabalhar com dois tipos de objetos em seus formulários:
Objetos estáticos (linhas, quadrados, imagens de fundo, etc.): esses objetos são usados geralmente para definir a
aparência do formulário e suas etiquetas como também a interface gráfica. Esses objetos estão disponíveis na barra
de objetos do editor de formulários. Também pode definir os atributos gráficos (tamanho, cor, fonte, etc) e suas
propriedades de redimensionamento com a ajuda da lista de propriedades. Diferente dos objetos ativos, os objetos
estáticos não tem variáveis associadas. Entretanto, pode inserir objetos dinâmicos em objetos estáticos (ver Usar
referências em texto estático).
Objetos ativos: estes objetos realizam tarefas ou funções na interface. Há vários tipos de objetos ativos: campos,
botões, listas pop-up, etc. Cada objeto ativo está associado com um campo ou variável. Os objetos ativos são
descritos no capítulo Trabalhar com objetos ativos.
Selecionar objetos
Antes de realizar uma operação sobre um objeto (como mudar a largura de uma linha ou fonte), deve selecionar o objeto que
deseja modificar.
Para selecionar um objeto utilizando a barra de ferramentas:
1. Clique sobre o botão Flecha
na barra de ferramentas. Quando mover o cursor do mouse dentro da área do
formulário, o cursor se transforma numa flecha.
2. Clique sobre o objeto que deseja selecionar. Os pontos de redimensionamento identificam o objeto selecionado.
Para selecionar um objeto utilizando a Lista de propriedades:
1. Selecione o nome do objeto na lista de seleção localizada na parte superior da Lista de propriedades.
Utilizando estes dois métodos, pode selecionar um objeto oculto atrás de outros objetos, ou localizado fora da área
visível da janela.
Para desmarcar um objeto, clique fora da margem do objeto ou clique no objeto mantendo a tecla Shift pressionada.
Nota: também é possível selecionar objetos com um duplo clique neles na janela de resultados de uma busca no banco de
dados. Para mais informação, consulte a seção Renomear.
Se encontrar dificuldades ao tentar selecionar objetos criados pelo assistente de formulários, vá para a página de fundo
clicando no botão
selecionando 0 no menu de páginas, e tente novamente. Também pode pressionar a tecla Alt
(windows) ou Opção (Mac) e clicar em um objeto na página 0 para acesso direto.
Também pode ocultar todos os objetos da página de fundo desmarcando a opção Página 0 do submenu Exibir do menu
Formulário (ou do menu contextual do editor - acessível com o botão direito do mouse).
Selecionar múltiplos objetos
É possível ter que realizar a mesma operação em vários objetos do formulário, por exemplo, mover, alinhar, ou modificar sua
aparência. 4D permite selecionar vários objetos ao mesmo tempo. Há várias formas de selecionar vários objetos:
Escolha Selecionar tudo no menu Editar para selecionar todos os objetos.
Clique com o botão direito no objeto e selecione o comando Selecionar objetos similares no menu contextual.
Mantenha pressionada a tecla Shift e clique nos objetos que queira selecionar.
Clique fora do grupo de objetos que deseja selecionar e crie um marco (retângulo de seleção) ao redor de todos os
- 262 -
objetos que deseja selecionar. Todo objeto incluído nos limites do retângulo ou que toque esses limites é selecionada
quando solta o botão do mouse.
Mantendo pressionada a tecla Alt (Windows) ou Opção (Mac OS) e desenhando um retângulo de seleção. Todo
objeto dentro do marco será selecionado.
A seguinte imagem representa a seleção de objetos com a ajuda de um retângulo de seleção:
Para desmarcar um objeto que faz parte de um conjunto de objetos selecionados, mantenha pressionada a tecla Shift e
clique no objeto. Os demais objetos permanecem selecionados. Para desmarcar todos os objetos selecionados, clique fora
dos limites de todos os objetos.
Duplicar objetos
Pode duplicar todo objeto do formulário, inclusive os objetos ativos. As cópias de objetos ativos conservam todas as
propriedades do objeto original, incluindo nome, tipo, ação padrão, formato de saída, e método de objeto.
Pode duplicar diretamente um objeto ou utilizar a caixa de diálogo Duplicar vários para duplicar um objeto mais de uma vez,
igualmente nessa caixa de diálogo pode definir a distância entre os objetos duplicados.
Quando duplica uma variável, pode usar funções específicas de duplicação que permitam incluir um número automáticos nos
nomes das cópias. Para mais informação, consulte Duplicar em uma matriz .
Para duplicar um ou mais objetos:
1. Selecione o objeto a duplicar.
2. Selecione Duplicar no menu Editar
4D cria uma cópia de cada objeto selecionado e coloca a cópia na frente e ao lado do objeto original.
3. Leve a cópia para a posição que deseja.
Se usar novamente a opção Duplicar, 4D cria outra cópia de cada objeto e a posiciona exatamente na mesma
distância e direção da primeira cópia. Se necessita distribuir cópias do objeto ao longo de uma linha, deve aplicar o
seguinte processo: duplique o obojeto original, mova a cópia até a outra posição no formulário, e logo duplique a
cópia. A segunda cópia se posiciona automaticamente na mesma relação da primeira cópia com o objeto original. As
cópias posteriores também ficam na mesma relação com suas originais. A seguinte imagem mostra o funcionamento
do posicionamento relativo das cópias:
Duplicar vários
A caixa de diálogo "Duplicar vários" aparece quando selecionar um ou mais objetos e escolher o comando Duplicar
vários... no menu Objeto.
- 263 -
Na área superior, coloque o número de colunas e linhas de objetos a obter.
Por exemplo, se deseja três colunas e duas filas de objetos, escreva 3 na área Coluna(s) e 2 na área Linha(s). Se
deseja três cópias do objeto na mesma linha, escreva 4 na área Coluna(s) e deixe 1 na área Linha(s).
Para as linhas e colunas, defina o espaço entre cada cópia.
O valor deve ser expressado em pontos e será aplicado a cada cópia, em relação com o objeto original.
Por exemplo, se deseja um intervalo vertical de 20 pontos, e a altura do objeto fonte é de 50 pontos, escreva 70 na
área Intervalo para Coluna(s).
Se deseja criar uma matriz de variáveis, selecione a opção Numerar as variáveis, e selecione a direção em que
deseja numerá-las, por linhas ou por colunas.
Esta opção está ativa apenas se o objeto selecionado for uma variável. Para mais informação sobre essa opção,
consulte Duplicar em uma matriz .
Mover objetos
Pode mover todo objeto de um formulário, gráfico ou ativo, incluindo campos e objetos criados com um modelo. Para mover
um objeto, tem as seguintes opções:
arrastar o objeto
Usar as teclas de flechas para mover o objeto pixel por pixel,
Usar as teclas de flechas para mover o objeto por passos (20 em 20 pixels por padrão).
Escrever manualmente as coordenadas do objeto na lista de propriedades dos objetos (esse ponto é descrito em
"Redimensionar objetos" no próximo parágrafo).
Quando começa a movimentar um objeto com a ajuda do mouse, suas marcas desaparecem. 4D mostra os marcadores
que indicam a localização dos limites dos objetos nas réguas de maneira que possa deixá-los com mais exatidão no local
desejado. Cuidado de não arrastar uma ou mais dessas marcas, porque redimensionaria o objeto. Pode pressionar a tecla
Shift para movimentar com uma restrição.
Quando a quadrícula magnética está ativada, os objetos são movimentados por etapas indicando os locais notáveis. Para
mais informação, consulte Usar a quadrícula magnética.
Para mover um objeto pixel por pixel:
1. Selecione o objeto ou grupo de objetos a ser movido.
2. Utilize as teclas de flecha para mover o objeto.
Cada vez que pressionar uma tecla de flecha, a seleção se movimenta um pixel na direção da flecha.
Para mover um objeto por passos:
1. Selecione o objeto a movimentar.
2. Pressione a tecla Shift e use as teclas de flecha para mover o objeto.
Como padrão automático, os passos são de 20 pixels. Pode mudar esse valor em Página Formulários das
Preferências.
Agrupar objetos
4D permite agrupar objetos de modo que se possa selecionar, mover e modificar o grupo como se fosse um único objeto.
Os objetos agrupados mantém a posição relativa aos demais.
Geralmente se agruparia um campo com sua etiqueta, um botão invisível com seu ícone, etc. Os grupos podem ser parte de
outros grupos.
Quando redimensiona um grupo, todos os objetos no grupo são redimensionados proporcionalmente (exceto as áreas de
- 264 -
texto, as quais são redimensionadas por passos de acordo a seus tamanhos de fonte).
Os grupos de objetos são necessários para o funcionamento coordenado dos botões de opção (ver Botões de opção e
botões imagem de opção). Também são usados para sincronizar as Áreas de rolagem agrupadas.
Pode desagrupar um grupo de objetos a qualquer momento, para tratar os objetos novamente como independentes.
Um objeto ativo agrupado deve ser desagrupado antes de acessar suas propriedades ou seus métodos. Entretanto, é
possível selecionar um objeto que pertença a um grupo sem ter que desagrupar, com, Ctrl+clique (Windows) ou
Comando+clique (Mac OS) no objeto (o grupo deve ter sido selecionado previamente).
A agrupação apenas afeta os objetos no editor de formulários. Quando o formulário é executado, todos os objetos
agrupados (exceto os botões de opção e as áreas de deslocamento) se comportam como se estivessem desagrupados.
Nota: não é possível agrupar objetos pertencentes a diferentes vistas. Apenas pode agrupar objetos da vista atual (consulte
Modos de exibição de objetos).
Para agrupar objetos:
1. Selecione os objetos a agrupar.
2. Selecione Agrupar no menu Objeto.
Ou
Clique no botão Agrupar
na barra de ferramentas do editor de formulários.
4D marca os limites do grupo com pontos. Os objetos do grupo não tem marcas de seleção. Ao modificar o grupo de
objetos, modifica todos os objetos do grupo.
Para desagrupar um objeto:
1. Selecione o grupo de objetos a desagrupar.
2. Selecione Desagrupar no menu Objeto.
Ou
Clique no botão Desagrupar (variante do botão Agrupar), na barra de ferramentas do editor de formulários.
Se Desagrupar está desativado, isso significa que o objeto selecionado já está separado em sua forma mais
simples.
4D marca os limites dos objetos individuais com marcas de seleção.
Alinhar objetos
As ferramentas de alinhamento do editor de formulários ajudam a alinhar os objetos com outros objetos ou usando a
quadrícula invisível do formulário.
Pode alinhar objetos entre si, pela margem superior, inferior, esquerda ou direita, ou seu eixo central horizontal ou
vertical. Pode alinhar diretamente uma seleção de objetos usando as ferramentas de alinhamento ou pode aplicar
parâmetros mais avançados usando o assistente de alinhamento. Esse assistente permite, por exemplo, definir o
objeto a utilizar como referência e pré-visualizar o alinhamento no formulário.
Quando usar a quadrícula invisível, cada objeto pode ser alinhado manualmente com os outros baseado nas "línhas de
guia" (linhas vermelhas pontilhadas) que aparecem ao se mover um objeto perto de outros.
Ferramentas para alinhamento rápido
As ferramentas de alinhamento da barra de ferramentas (ver Editor de formulários) e o submenu Alinhar do menu Objeto
permitem alinhar rapidamente os objetos selecionados.
Quando 4D alinha objetos, usa um dos objetos como referencial para alinhar os demais.O objeto referência é o mais
próximo ao sentido de alinhamento selecionado. Por exemplo, se deseja alinhar um grupo de objetos à direita, o objeto
localizado mais a direita será usado como referência para alinhar aos outros objetos.
A imagem abaixo mostra objetos sem alinhar, "alinhamento à esquerda, "centrados horizontalmente" e "alinhamento à
direita":
- 265 -
Assistente de Alinhamento
A caixa de diálogo de alinhamento permite aplicar todo tipo de alinhamento e distribuição dos objetos selecionados.
Para mostrar esta caixa de diálogo, selecione os objetos a alinhar e logo selecione o comando Alinhamento do submenu
Alinhar no menu Objeto ou desde o menu contextual do editor.
1. Nas áreas “Alinhar esquerda/direita” e “Alinhar acima/abaixo”, clique sobre o ícone de alinhamento correspondente ao
desejado.
A área de exemplo mostra os resultados da sua seleção.
2. Para realizar um alinhamento usando o esquema padrão, clique em Visualizar ou Aplicar.
Nesse caso 4D utiliza o objeto mais adiante na direção de alinhamento como âncora e alinha os outros objetos a esse
objeto. Por exemplo, se alinhar um grupo de objetos à direita, os objetos são alinhados ao lado direito do objeto mais
à direita do grupo.
Ou:
Para alinhar objetos a um objeto específico, selecione a opção “Alinhar sobre” e selecione então o nome do objeto
de referência na lista de objetos. Neste caso, a posição do objeto de referência não muda.
Pode pré-visualizar os resultados do alinhamento clicando em Visualizar. Os objetos aparecem alinhados temporariamente
no editor de formulários, mas como a caixa de diálogo Alinhar e Distribuir permanece no primeiro plano ainda se pode
cancelar ou aplicar o alinhamento.
Nota: esta caixa de diálogo combina o alinhamento de objetos e sua distribuição em uma operação. Para mais informação
sobre como distribuir objetos, consulte Distribuir objetos.
Usar a quadrícula magnética
O editor de formulários oferece uma quadrícula magnética virtual que ajuda a posicionar e alinhar os objetos em um
formulário. O alinhamento automático dos objetos é baseada na posição relativa dos objetos entre si. Apenas se pode usála quando há pelo menos dois objetos presentes no formulário.
O alinhamento automático funciona da seguinte maneira: quando desloca um objeto no formulário, 4D indica as possíveis
posições para esse objeto, baseado nos alinhamentos notáveis relativos a outros objetos do formulário. Um alinhamento
notável é estabelecido cada vez que:
horizontalmente, os extremos ou centros de dois objetos coincidem,
- 266 -
verticalmente, os extremos de dois objetos coincidem.
Quando isso acontece, 4D coloca o objeto na posição sugerida e mostra uma linha vermelha indicando o alinhamento
notável considerado:
4D propõe uma distância de distribuição de objetos baseada em padrões de interface. Da mesma maneira que no
alinhamento automático, linhas vermelhas indicam as distâncias notáveis quando são alcançadas.
Esta operação aplica a todos os tipos de objetos de formulário. O alinhamento automático pode ser ativado ou desativado a
qualquer momento usando o comando Alinhamento automático do menu Formulário ou do menu contextual do editor.
Também se pode definir a ativação por padrão dessa característica desde a Página Formulários das Preferências da
aplicação. Pode ativar ou desativar temporariamente o alinhamento automático quando selecionar um objeto, pressionando
a tecla Ctrl (Windows) ou Controle (Mac OS).
Nota: o alinhamento magnético também afeta o redimensionamento manual dos objetos.
Distribuir objetos
Pode distribuir objetos de modo a que haja um espaço idêntico entre eles. Pode fazer isso usando as ferramentas de
distribuição da Palheta de ferramentas ou o assistente de alinhamento que permite alinhar e distribuir os objetos na mesma
operação.
Nota: quando o alinhamento automático estiver ativo, é oferecido um guia visual para distribuição ao se mover o objeto
manualmente. Para mais informação, consulte a seção anterior.
Para distribuir objetos com igual espaço entre eles:
1. Selecione três ou mais objetos e clique na ferramenta de distribuição desejada.
2. Na barra de ferramentas, clique na ferramenta de distribuição que corresponda ao desejado.
Ou
Selecione o comando do menu de distribuição do submenu Alinhar no menu Objeto.
4D distribui os objetos de acordo a sua escolha. Os objetos são distribuídos usando a distância entre os centros e a
distância maior entre dois objetos consecutivos é utilizada como distância de referência.
Para distribuir objetos utilizando a caixa de diálogo Alinhar e distribuir:
1. Selecione os objetos a distribuir.
2. Escolha o comando Alinhamento do submenu Alinhar no menu Objeto ou desde o menu contextual do editor.
Aparece a seguinte caixa de diálogo:
3. Nas áreas Alinhar esquerda/direita e Alinhar acima/abaixo, clique no ícone de distribuição padrão.
(ícone de repartição horizontal padrão)
A área de exemplo mostra o resultado de sua seleção.
4. Para realizar uma distribuição utilizando o esquema padrão, clique no botão Visualizar ou Aplicar.
- 267 -
Neste caso, 4D realiza uma distribuição padrão, como foi descrito anteriormente nessa seção.
Ou:
Para fazer uma distribuição específica, selecionar a opção Distribuir (por exemplo se deseja distribuir os objetos
baseado na distância ao lado direito). Esta opção age como um interruptor. Se estiver selecionada, muda a função
dos ícones localizados abaixo dela:
Horizontalmente, os ícones correspondem às seguintes distribuições: equidistante a margem esquerda, centro
(hor.) ou margem direita dos objetos selecionados.
Verticalmente, os ícones correspondem às seguintes distribuições: equidistante às margens superior, central
(vert.) e inferior dos objetos selecionados.
Pode pré-visualizar o resultado de seus parâmetros clicando no botão Visualizar: a caixa de diálogo Alinhar e
distribuir fica em primeiro plano e o editor de formulários mostra os objetos alinhados e distribuídos. Apenas pode
Cancelar ou Aplicar as mudanças.
Nota: esta caixa de diálogo permite combinar o alinhamento e distribuição de objetos. Para mais informação sobre alinhar
objetos, consulte Alinhar objetos.
Superposição de objetos
É possível que, em algum momento, necessite reorganizar objetos que impeçam ver os outros objetos no formulário. Por
exemplo, pode desejar que um gráfico apareça atrás dos campos no formulário. 4D dá as seguintes opções para "superpor"
os objetos no formulário, Enviar ao fundo, Trazer a frente, Trazer adiante, e Enviar atrás. Esses planos determinam a ordem
de entrada por padrão (ver a seção Modificar a ordem de entrada dos dados. A seguinte imagem mostra objetos adiante
e atrás de outros objetos:
Para mover um objeto a outro nível, selecione e escolha:
um dos comandos Enviar para trás, Trazer para frente, Avançar e Recuar no menu Objeto,
um dos comandos do submenu Nível> do menu contextual do editor,
um dos comandos associados ao botão de gestão dos planos da barra de ferramentas.
Nota: quando vários objetos são superpostos, utilize o atalho Ctrl+clique/Comando+clique para selecionar um a um cada
objeto, descendendo um nível até o fundo com cada clique.
Para ordenar os diferentes planos, 4D sempre vai do fundo ao primeiro plano. Portanto, o plano anterior move a seleção de
objetos de um plano ao último plano do formulário. O seguinte plano move a seleção a um nível atrás do formulário.
Definir um modelo de objeto
O comando Guardar como modelo, disponível no menu contextual do editor quando se clica sobre um objeto, guarda o
objeto como modelo. Este modelo e suas propriedades são utilizadas para a criação de objetos do mesmo tipo.
No próximo exemplo, o comando é aplicado a um objeto do tipo Texto. Todos os objetos de tipo Texto criados depois
utilizarão por padrão as propriedades definidas para esse objeto:
- 268 -
Pode utilizar um modelo personalizado para cada tipo de objeto. Há apenas um modelo personalizado por tipo objeto para
todo o banco.
O modelo guarda todas as propriedades do objeto definidas quando se executa o comando, exceto as coordenadas
absolutas e o método do objeto (se aplicável).
Eliminar modelos de objetos
Para modificar ou substituir um modelo de objeto, deve criar um novo para o tipo de objeto em questão.
Também pode eliminar todos os modelos de objeto (e regressar aos modelos padrão) utilizando o comando Apagar todos
os modelos personalizados no menu Objeto do Editor de formulários. Quando seleciona este comando aparece uma
caixa de diálogo de confirmação. Se confirmar esta caixa de diálogo, todos os modelos de objetos são reinicializados em
seus valores padrão.
- 269 -
Definir as propriedades de visualização dos objetos
Todos os objetos em um formulário têm propriedades para definir sua aparência, sua visualização, e seu
redimensionamento no modo Aplicação. Essas propriedades estão disponíveis usando a Lista de propriedades (ver a
seção Editor de formulários).
As propriedades específicas dos objetos dinâmicos são discutidas nos seguintes capítulos: Trabalhar com objetos ativos,
List boxes e Subformulários e widgets.
Tamanho dos objetos
Para definir o tamanho de um objeto no editor de formulários, é possível:
Mover uma de suas marcas de seleção.
Redimensionar o objeto pixel por pixel utilizando a tecla Ctrl (Windows) ou Comando (Mac OS) e as teclas de flechas.
Redimensionar o objeto por passos (o padrão é de 20 píxeis por vez).
Introduzir manualmente as novas dimensões do objeto na Lista de propriedades.
O redimensionamento de um objeto através de suas marcas de seleção é feito de maneira padrão. Se pressionar a tecla
Shift e arrasta a marca, o movimento é restrito. As linhas apenas podem ser verticais, horizontais ou de 45º, os retângulos
são quadrados e os ovais são circulares. Se o alinhamento magnético estiver ativo, o redimensionamento manual se
realizará em incrementos de 5 píxeis. Para mais informação, consulte Usar a quadrícula magnética.
Para redimensionar um objeto píxel por píxel, selecione o objeto e mantenha pressionada a tecla Ctrl (Windows) ou
Comando (Mac OS) e use as teclas de flecha para redimensionar o objeto. As teclas Acima ou Abaixo redimensionam a
altura do objeto, enquanto as teclas Esquerda ou Direita redimensionam a largura do objeto. Ao manter pressionada a tecla
Shift ao mesmo tempo em que se realiza o redimensionamento por passos (como padrão, os passos são de 20 píxeis).
Pode mudar esse valor em Página Formulários das Preferências.
Para mover ou redimensionar um objeto introduzindo manualmente suas coordenadas, selecione o objeto e expanda o tema
"coordenadas e dimensões" na Lista de propriedades. As coordenadas do objeto são expressas em píxeis, centímetros, ou
polegadas (dependendo da régua). A origem das coordenadas (0,0) está localizada na parte superior esquerda do
formulário. Introduza os novos valores nas áreas de entrada das coordenadas.
4D move as margens do objeto de acordo com os valores introduzidos. Dependendo desses valores, pode ser que o objeto
se movimento, seja redimensionado, ou as duas coisas.
- 270 -
Nota: em um contexto multi-plataforma, a aplicação de folhas de estilo pode fazer com que a altura do objeto varie, já que
sua altura é ajustada automaticamente de modo a que seja um múltiplo da altura da fonte definida para a plataforma atual.
Para mais informação sobre as folhas de estilo, consulte o capítulo Folhas de estilo.
Tamanho automático
Pode redimensionar as áreas de texto estático e as imagens para obter uma visualização ótima levando em conta suas
características gráficas atuais (tamanho de fonte, estilo, etc.):
1. Clique com o botão direito em um objeto e escolha o comando Tamanho automático no menu contextual.
Ou
Pressione a tecla Ctrl (em Windows) ou Comando (em Mac OS) e clique na esquina inferior direita do objeto.
Este comando produz os seguintes efeitos:
As áreas de texto estático, caixas de seleção, botões de opção e os botões são redimensionados de modo a que seu
conteúdo corresponda exatamente a seus limites.
Os campos e variáveis são redimensionados de modo a que sua altura corresponda ao tamanho de fonte e sua
largura seja de 100 pontos, se o tamanho do objeto é maior que esse tamanho mínimo, o comando não tem efeito.
Imagens e botões imagem são visualizados usando o tamanho original da imagem fonte.
As áreas de rolagem e as listas hierárquicas são visualizadas a uma altura dependente do tamanho da fonte atual.
Os combo boxes, menus/listas suspensos e menus suspensos hierárquicos, são visualizados com sua altura mínima
por padrão se a altura atual é insuficiente.
Rádio da esquina (retângulos)
A propriedade Rádio da esquina se encontra no tema "Coordenadas e dimensões" da Lista de propriedades para os
objetos de tipo Retângulo arredondado:
Por padrão, o valor do rádio de retângulos arredondados é de 5 píxels. Pode mudar esta propriedade para desenhar
retângulos arredondados com formas personalizadas:
O valor mínimo é 0, neste caso se desenha um retângulo arredondado não padrão.
O valor máximo depende do tamanho de retângulo (que não pode exceder a metade do tamanho do lado mais curto do
retângulo) e se calcula de forma dinâmica.
Também pode definir esta propriedade utilizando os comandos OBJECT Get corner radius e OBJECT SET CORNER
RADIUS.
Redimensionar
- 271 -
No modo Aplicação, quando um usuário redimensiona a janela de um formulário, os objetos que contém podem ser
redimensionados ou movidos.
O redimensionamento automático é realizado quando um usuário redimensiona uma janela de um formulário. O
redimensionamento automático faz com que, ao aumentar um formulário, o objeto aumente também, ou que se reduza ao se
reduzir o tamanho de uma janela. Por exemplo, se usar um retângulo que contenha os campos em um formulário de entrada,
o redimensionamento automático fará com que o retângulo cresça na direção das margens da janela, quando o usuário
aumente o tamanho da janela.
Também é possível ativar o reposicionamento automático. O reposicionamento automático move um objeto horizontal ou
verticalmente à medida em que o formulário é redimensionado. Quando o reposicionamento automático está ativo, 4D tenta
manter o objeto à vista enquanto o usuário reduz o tamanho da janela. Por exemplo, se o usuário redimensiona uma fila de
botões de maneira a que alguns botões fiquem ocultos, o reposicionamento automático tenta mover os botões vertical ou
horizontalmente, para que permaneçam visíveis.
O redimensionamento e o reposicionamento automático são definidos nas propriedades dos objetos. Há duas linhas,
Dimensionamento horizontal e Dimensionamento vertical, para as quais se pode atribuir três propriedades (Nenhum,
Aumentar e Mover).
Opción
Resultado
Dimensionamento
horizontal: Aumentar
Dimensionamento
horizontal: Mover
Dimensionamento vertical:
Aumentar
Dimensionamento vertical:
Mover
Quando o usuário redimensiona a largura da janela, 4D aplica a mesma porcentagem à
largura do objeto.
Quando o usuário redimensiona a largura da janela, 4D move o objeto para a direita ou
esquerda na mesma quantidade.
Quando o usuário redimensiona a altura da janela, 4Daplica a mesma porcentagem à
altura do objeto.
Quando o usuário redimensiona a altura da janela, 4D move o objeto para cima ou para
baixo na mesma quantidade.
As opções de reposicionamento permitem aos objetos ser movimentados na direção especificada para permanecerem
visíveis.
Quando se utiliza a opção Nenhum, o objeto permanece quieto ao se redimensionar o formulário.
Deslocamento lateral
Em 4D, o extremo inferior direito das janelas pode ser utilizado para definir os limites padrão. Isso significa que os objetos
que são encontrados à direita ou abaixo dos limites da janela na tela, são automaticamente deslocados até a direita ou até
abaixo quando se aumenta o tamanho da janela:
Nota: este princípio não funciona com janelas que tem barras de rolagem.
Invisível por padrão
Pode associar a propriedade Invisível por padrão com a maioria dos objetos de formulário.
Esta propriedade simplifica o desenvolvimento de interfaces dinâmicas. Nesse contexto, com frequencia é necessário
ocultar objetos por programação durante o evento On load do formulário para só então mostrá-los.
A propriedade Invisível por padrão permite inverter esta lógica, fazendo com que certos objetos sejam invisíveis por
padrão. O desenvolvedor pode então programar sua exibição com o comando OBJECT SET VISIBLE de acordo com o
contexto. Para mais informação sobre este comando, consulte o manual de Linguagem 4D.
Nota: não confunda esta propriedade com a propriedade Invisível dos menus suspensos, que permite que não se desenha o
objeto enquanto ainda permanece ativo.
Plataforma
- 272 -
Pode definir a interface da plataforma para cada objeto por separado, para fazer isso, há as seguintes opções:
Herdada do formulário: a interface da plataforma do objeto é a mesma do formulário. A interface da plataforma do
formulário é definida em Propriedades de formulário.
Sistema: sem importar a plataforma definida a nível do formulário, o objeto é desenhado em função da plataforma de
execução da aplicação.
Impressão: sem importar a plataforma definida ao nível do formulário, o objeto é desenhado da maneira que seja
apropriada para impressão.
Nota: se o banco foi convertido de uma versão anterior de 4D, as propriedades adicionais de plataforma estão disponíveis.
Para mais informação sobre as propriedades de plataforma, consulte a seção Propriedades de formulário.
Fundo e margem
As propriedades de fundo e margem permitem modificar as linhas de margem e a aparência gráfica dos objetos.
Transparente
O atributo Transparente está disponível no tema "Fundo e borda" para os objetos que podem ser opacos ou transparentes:
campos, variáveis, list boxes, botões, imagens ou textos estáticos, etc. Pode mudar o fundo do objeto para transparente de
maneira que fique com a mesma cor do fundo do formulário.
Os exemplos a seguir mostram uma imagem estática sem e com o atributo Transparente:
Estilo da Borda
Pode definir o estilo da borda para a maioria dos objetos utilizando o tema "Fundo e margem" da Lista de propriedades ou
o submenu Estilo da borda do menu contextual. Tem as seguintes opções disponíveis:
Transparente: os objetos aparecem sem borda.
Plano: os objetos aparecem bordeados por uma linha contínua de 1 ponto.
Pontilhado: os objetos aparecem bordeados por uma linha pontilhada de 1 ponto.
Elevado: os objetos aparecem bordeados com um efeito 3D elevado
Profundo: os objetos aparecem bordeados com um efeito 3D profundo.
Dobro: os objetos aparecem bordeados com uma linha dupla, ou seja, duas linhas contínuas de 1 ponto, separadas
por 1 píxel.
Nota: as outras propriedades do tema se actualizam de acordo ao tipo de traço definido. Por exemplo, quando seleciona
"Pontuado", a propriedade Tipo de pontuado fica disponível na Lista de propriedades.
A seguinte imagem compara estes estilos em Windows:
Para mais informação sobre os efeitos dessas opções nos diferentes objetos de formulários, consulte a seção Botões e a
seção Caixas de seleção.
Cores de fundo e de traço
4D permite aplicar cores aos objetos para serem mostrados em tela ou impressos.
Pode definir cores diferentes para o fundo e o borde dos objetos, utilizando o comando Cor do menu contextual do editor ou
diretamente em listas de propriedades.
- 273 -
Nota: na lista de propriedades, a cor de fundo é chamada Cor de Fundo, e a cor de primeiro plano é chamada Cor da
Linha. Para objetos com texto, a cor do texto corresponde a Cor de letras.
Para a cor de fundo, a lista de propriedades oferece duas opções padrão:
Automática: o objeto é mostrado com cores automáticos definidos no sistema operativo.
Nenhuma: o fundo do objeto será transparente.
A lista de propriedades oferece a opção Outra, que permite usar a palheta de cores do sistema para definir uma cor
personalizada.
Tipo de linha pontilhada
Esta propriedade está disponível quando seleciona "Pontilhada" como Estilo de borde. Permite eleger um formato de
linhas pontilhadas
Largura da linha
4D permite especificar diferentes larguras para as linhas e os objetos que as utilizem tais como ovais, grades e retângulos.
Pode especificar a largura da linha usando a propriedade Largura da linha da lista de propriedades:
- 274 -
Escolha uma das larguras de linha. A primeira opção desse menu é a Linha Fina, ou seja, a linha mais fina que pode ser
impressa na impressora, seguida das linhas de 1, 2, 3 ou 4 pontos. Se escolher Outros, 4D mostra uma caixa de diálogo na
qual pode especificar até 20 pontos.
Atributos de texto
É possível definir os atributos de fonte e estilo dos objetos de tipo texto por meio das propriedades de objeto que se
encontram no tema "Texto" da Lista de propriedades
Pode definir os seguintes atributos:
Folha de estilo: permite associar uma folha de estilo ao objeto. Para maior informação sobre folhas de estilos,
consulte o capítulo Folhas de estilo.
Fonte: nome da fonte utilizada no objeto.
Estilo: estilo utilizado no objeto (negrito, itálica, sublinhado).
Tamanho de fonte: tamanho da fonte em pontos.
Cor da fonte: cor de fonte utilizado no objeto. No menu contextual, a color de fonte equivale à cor do primeiro plano
Array de estilos/Array cores de fonte: nome dos arrays de gestão de estilos e de cores (somente disponível nos list
box de tipo array).
Alinhamento horizontal: localização horizontal do texto na área que o contém
Alinhamento vertical: localização vertical do texto na área que o contém (disponível unicamente para os list box)
Orientação: modifica a orientação (rotação) da área de texto. Para obter mais informação, consulte Rotação de
texto.
Multi estilo: permite autorizar a utilização de estilos personalizados nas áreas de texto dinâmicas (campos ou
variáveis) em modo Aplicação. Para maior informação sobre este ponto, consulte a seção Multiestilo (área Rich
text).
Autorizar seletor fonte / cor: permite aceitar a modificação da fonte ou da cor do objeto pelo usuário para a sessão
atual, quando o seletor sistema correspondente se chama utilizando o comando OPEN FONT PICKER ou OPEN
COLOR PICKER. Esta opção controla o campo de ação dos comandos de seletor sistema (font picker e color
picker). Está disponível para os objetos de formulário de tipo campo, variável e combo box. Por padrão, está
desativada para todos os objetos dos formulários. Deve selecionar explicitamente para cada objeto onde deseje que
os atributos de fonte e/ou cor possam ser modificados utilizando a janela seletor sistema.
Nota de compatibilidade concernente a renderização de textos (OS X)
Atualizamos e unificamos os frameworks utilizados para a renderização de texto em 4D v13 em OS X, de conformidade com
as recomendações de Apple (abandono dos frameworks obsoletos QD/MLTE e generalização do uso de CoreText).
Apesar de nossos esforços para limitar seu impacto, a utilização do novo framework CoreText pode causar ligeiras
variações na renderização das áreas de texto das aplicações convertidas a 4D v13 em OS X, especialmente a nível do
espaço entre linhas. Estas variações podem fazer com que seja necessário mudar o tamanho de certos objetos de
formulários durante a conversão de bases v12.
- 275 -
Rotação de texto
4D lhe permite rotar as áreas de texto em seus formulários:
A funcionalidade de rotação de texto está disponível seja no editor de formulários (propriedade permanente) ou sob o
comando OBJECT SET TEXT ORIENTATION (propriedade definida para o processo atual).
Objetos que podem rotar
A possibilidade de realizar rotações concerne as áreas de texto não editáveis dos formulários,ou seja:
textos estáticos
variáveis e campos textuais não editáveis - "textual" se refere aos objetos cujos conteúdos são baseados em texto,
incluindo objetos de tipo cadeia, assim como data, hora ou número, linhas múltiplas ou multi estilo.
Os outros tipos de objetos de formulário (botões, áreas de entrada, listas, botões rádio, etc.) não podem rotar.
Definir a rotação
A nova propriedade "Orientação" está disponível, para os objetos que suportam a rotação, na área "Texto" da Lista de
propriedades. A orientação das áreas de texto se realiza em incrementos de 90°:
Cada opção de orientação se aplica enquanto conserva o ponto de origem inferior esquerdo do objeto:
0° (por defecto):
- 276 -
90° Derecha:
180°:
90° Izquierda:
Rotação sob o editor de formulários ou o comando da linguagem
Quando se aplica uma rotação no editor de formulários, o objeto que contém o texto se submete a mesma rotação que o
texto faz.
O princípio não é o mesmo quando a rotação de texto é realizada pelo novo comando OBJECT SET TEXT ORIENTATION:
quando se executa este comando, só se modifica o texto, enquanto que o objeto que contém o texto não rota. Por exemplo,
a aplicação de uma rotação de 90° Esquerda ao texto "Chicago" no editor de formulários ou sob o comando OBJECT SET
TEXT ORIENTATION, terá diferentes resultados quando se executa o formulário:
90° Esquerda (Lista de propriedades) 90° Esquerda (linguagem)
Para obter mais informação, consulte a descrição do comando OBJECT SET TEXT ORIENTATION.
Rotação de campos e variáveis
Só os objetos texto não editáveis e não enfocáveis podem girar.
Quando se escolhe uma opção do menu "Orientação" (que não seja 0°) para um objeto de tipo variável ou campo, as
propriedades Controles de entrada e Acessível se desativam de forma automática para o objeto (se aplica):
- 277 -
Este objeto se exclui então da ordem de entrada e seu fundo se torna transparente por padrão.
Pelo contrário, se seleciona a propriedade Editável ou Enfocável para um objeto orientado, a propriedade de orientação
se reinicializa automaticamente em 0°.
Modificar um objeto com rotação
Uma vez que se faz o texto girar, pode mudar seu tamanho ou sua posição usando ponteiros de seleção ou utilizando
comandos da linguagem tais como OBJECT SET COORDINATES, assim como todas suas propriedades.
Tenha em conta que as propriedades de largura e altura da área de texto não dependem de sua orientação:
Se o objeto muda o tamanho na direção A, sua largura se modifica;
Se o objeto muda o tamanho na direção C, sua altura se modifica;
Se o objeto muda o tamanho na direção B, tanto sua largura como sua altura se modificam.
Também pode ser modificado o conteúdo de uma área no editor de formulários. Antes de passar ao modo edição, o texto
volta a orientação por padrão:
- 278 -
Usar imagens estáticas
Pode usar dois tipos de imagens estáticas em seus formulários: imagens independentes guardadas diretamente nos
formulários ou imagens referenciadas guardadas fora dos formulários. Por razões de otimização, usar imagens inseridas
por referência é recomendada geralmente quando as imagens são usadas em vários lugares, já que a imagem só é
guardada uma única vez. Além disso, há um link entre a imagem e cada uma de suas referências, de modo que a imagem
fonte é modificada, todas suas ocorrências são modificadas automaticamente em todo o banco de dados.
Em 4D as imagens inseridas por referência têm o tipo "Imagem da biblioteca" e as imagens independentes têm o tipo
"Imagem estática" (visível no campo Tipo da Lista de propriedades). Para inserir imagens por referência, deve usar a
biblioteca de imagens ou arrastar e soltar uma imagem armazenada na pasta Resources do banco de dados.
Se colocar uma imagem na página 0 de um formulário multipáginas, a imagem aparecerá automaticamente como fundo em
todas as páginas. Também pode incluir a imagem em um formulário herdado, como fundo para outros formulários. Das duas
formas seu banco se executará muito mais rápido que se colar a imagem em cada página.
Pode atribuir propriedades a imagens estáticas inseridas nos formulários. Por exemplo, a propriedade de visualização
Duplicado permite definir uma imagem pequena como imagem de fundo do formulário: a imagem é duplicada tantas vezes
quanto sejam necessárias para encher a página formulário.
Inserir imagens estáticas
Há três maneiras de inserir imagens estáticas em seus formulários: colando uma imagem desde a área de transferência,
arrastando e soltando um arquivo de imagem, ou arrastando e soltando uma imagem da biblioteca de imagens.
Copiar-colar ou Arrastar e soltar uma imagem
Para colar ou soltar uma imagem estática em um formulário:
1. Copie uma imagem na área de transferência e a cole no formulário.
Ou
Selecione uma imagem em uma aplicação externa (arquivo imagen em uma janela sistema, navegador web, outra
aplicação, etc.) e coloque no formulário usando arrastar e soltar.
A imagem original deve ser guardada em um formato administrato nativamente por 4D (4D reconhece os principais
- 279 -
formatos de imagens: JPEG, PNG, BMP, SVG, GIF, etc.). Se cola automaticamente na área objetivo em seu formato
original.
Notas:
Este princípio também funciona com a biblioteca de imagens, as imagens associadas aos objetos (por exemplo
a imagem de um botão 3d) e os campos ou variáveis em modo Aplicação.
Pode inserir uma referência de imagem arrastando e soltando um arquivo guardado na pasta Resources do
banco de dados (ver “Referenciação automática dos arquivos imagens” a continuação).
2. Reposicione a imagem e defina suas propriedades segundo suas necessidades.
Inserir imagens a partir da biblioteca
Para mais informação sobre o funcionamento da biblioteca de imagens, consulte o capítulo Biblioteca de imagens.
Para inserir uma imagem da biblioteca num formulário:
1. Abra a Biblioteca de imagens na Caixa de ferramentas e clique no nome da imagem que deseja.
2. Arraste a imagem da biblioteca de imagens ao formulário.
Se a imagem está definida como tabela de miniaturas, aparecerá automaticamente inserida como um botão
imagem (ou como menu imagem suspenso se pressionar a tecla Shift enquanto arrasta a imagem). Se deseja a
inserir como imagem estática ou imagem da biblioteca de imagens, pressione a tecla Alt (Windows) ou a tecla
Opção (Mac OS) enquanto arrasta a imagem.
Como padrão, a imagem inserida será do tipo Imagem da biblioteca, ou seja, 4D conservará o link com a
imagem original da biblioteca. Se deseja romper esse link, deve modificar o tipo da imagem estática na Lista de
propriedades (ver o seguinte parágrafo). As propriedades de imagens estáticas e das imagens da biblioteca
são geralmente idênticas.
3. Relocalize a imagem na posição que deseja e defina suas propriedades.
A imagem tem um conjunto de propriedades de objeto, como qualquer outro objeto de formulário, e essas propriedades
podem ser modificadas.
Desassociar uma imagem da biblioteca
Quando inserir uma imagem da biblioteca de imagens, em realidade insere uma referência a uma imagem. A lista de
propriedades indica seu tipo (em Objetos) como Imagem da biblioteca. Se a imagem é modificada na biblioteca de
imagens, cada instância será modificada. Você poderia necessitar desassociar uma imagem inserida em um formulário de
sua fonte na biblioteca.
Para desassociar uma imagem de sua fonte na biblioteca de imagens:
1. Mostre as propriedades da imagem na Lista de propriedades.
2. No tema “Objetos”, clique na linha Tipo.
Estão disponíveis dois tipos: Imagem da biblioteca (valor padrão) e Imagem estática.
3. Selecione Imagem estática.
A imagem será tratada adiante, como se tivesse sido colada desde a área de transferência ou soltada de um arquivo.
Referenciar automaticamente arquivos de imagem
Pode usar a pasta Resources para guardar as imagens estáticas utilizadas em seus formulários e as manipular por
referência. A visualização dessas imagens são otimizadas e se facilita sua manipulação.
Nota: para mais informação sobre o funcionamento da pasta Resources, consulte a seção Descrição dos Arquivos 4D.
Particularmente, pode chamar imagens .png (bitmap) ou .svg (vetoriais). A inserção dessas imagens nos formulários pode
ser efetuadas por arrastar e soltar desde a pasta Resources:
- 280 -
Se soltar a imagem em um objeto dinâmico (botão imagem, botão 3D, menu pop-up imagem, etc.), 4D define
automaticamente a fonte de imagem "File" e insere a referencia da imagem no formulário desta
forma:“{viadeacesso+}nomearquivo”.
Se soltar a imagem em uma área vazia do formulário, uma imagem da livraria é criada e se referencia desta forma:
“file:{viadeacesso+}nomearquivo”.
- 281 -
É possível colocar as imagens nas subpastas da pasta Resources. Pode também usar o mecanismo da pasta lproj para as
imagens em diferentes idiomas (para mais informação sobre esse mecanismo, consulte MissingRef).
Definir o modo de visualização de uma imagem estática
Pode definir o modo de visualização de uma imagem estática ou de uma imagem da biblioteca localizada em um formulário.
O modo de visualização determina a maneira como a imagem deve ser desenhada em caso de redimensionamento da área
que a contém.
Para definir o modo de visualização de uma imagem, selecione a imagem e logo, no tema "Imagem" selecione uma opção
do menu Exibir:
Em escala (padrão): quando o objeto imagem é aumentado ou reduzido, a imagem é redimensionada de modo a que
ela permaneça completamente visível.
Truncado: quando o objeto imagem é aumentado ou reduzido, a imagem mantém suas proporções e apenas mudam
os seus limites. A imagem permanece no centro do objeto imagem. Se reduzir o tamanho do objeto imagem a um
tamanho menor que a imagem, está fica truncada.
Duplicado: quando o tamanho do objeto imagem é aumentado, a imagem é duplicada tantas vezes quantas sejam
necessárias para encher a nova área. Esta opção é recomendada especialmente para criar fundos que não
necessitem demasiada memória.
Se reduzir o tamanho do objeto a um tamanho menor que o da imagem, a imagem é truncada (não centrada).
Efeito Espelho (Windows)
A opção Efeito espelho (Windows) está disponível no tema "Imagem" da Lista de propriedades para as imagens
mostradas nos formulários.
Esta opção pode ser utilizada em aplicações configuradas em idiomas "direita para esquerda" que tem uma versão inversa
da interface (para mais informação sobre o modo "direita para esquerda", consulte ).
Como padrão, o modo direita para esquerda não inverte o conteúdo das imagens nos formulários. Entretanto, algumas
vezes poderia ser necessário inverter algumas imagens. Esse seria o caso, por exemplo, com imagens usadas na interface,
tais como flechas, que estão vinculadas com a posição dos objetos. Quando a opção Efeito Espelho (Windows) estiver
marcada, uma inversão de esquerda a direita (efeito espelho) é aplicada à imagem:
- 282 -
Esta opção está disponível para imagens estáticas e as imagens de biblioteca, como também para objetos ativos usando
imagens (ver Efeito espelho (Windows)).
Esta opção apenas são consideradas:
no modo Aplicação,
em Windows,
quando o modo "direita para esquerda" estiver ativo para o formulário.
- 283 -
Usar referências em texto estático
Pode usar todos os valores atuais de campos e variáveis, assim como também os nomes de tabelas e campos em suas
etiquetas etáticas com o fim de criar interfaces dinâmicas.
Pode inserir essas etiquetas dinâmicas nos seguintes tipos de texto estático:
Áreas de texto estático (objeto Texto ou Área de grupo),
Nomes de janelas de formulários,
Dicas de ajuda (ver Controles de entrada de dados e ajuda de entrada).
Nota: as referências dinâmicas baseadas na arquitetura XLIFF (XML), especialmente adaptadas para a tradução de
interfaces, também se possa utilizar nestas etiquetas, assim como também nas etiquetas de menus e de botões. Para obter
mais informação, consulte Apêndice C: arquitetura XLIFF.
No editor de formulários, pode escolher a versão das etiquetas a mostrar selecionando o comando Mostrar o nome ou
Mostrar recurso no menu Objetos.
Valores de campos ou variáveis
É possível integrar em uma etiqueta estática os valores atuais de campos ou variáveis. Quando a área de texto é mostrada
ou impressa, os valores dos campos ou variáveis do registro atual são substituídas. Use esse sistema para criar
documentos de correspondência e nos cabeçalhos e pés de página.
É possível incluir o nome do campo ou variável inserindo-o entre os símbolos < >.
É possível usar um campo de qualquer tabela no banco. Os campos da tabela atual não têm que especificar o nome
da tabela; eles podem ser introduzidos da maneira <Nome do campo>. Os campos de outras tabelas deven
especificar o nome da tabela, se introduzen assim: <Nome da tabela]Nome do campo>. Quando se imprime o
formulário, a informação do campo para cada registro substitui o elemento <Nome do campo> na área de texto.
Uma variável deve ser inserida assim: <Nome da variável>. Tenha certeza de que o valor de cada variável seja
atribuído por um método objeto ou método formulário.
Pode especificar a maneira como será mostrado o campo ou a variável inserindo um ponto e vírgula seguido de um formato
de visualização. Por exemplo, a variável <vTotal;$###,##0.00> calcula a quantidade do pagamento total da pessoa para o
mês e é mostrado em um formato apropriado. Para obter mais informação sobre formatos de visualização, consulte
Formatos de saída.
Para ver um exemplo de formulário de combinação de correspondência usando referências de variáveis e campos, consulte
Criar documentos de fusão de correio.
- 284 -
Duplicar em uma matriz
Algumas vezes se deseja colocar ao mesmo tempo vários objetos ativos semelhantes num formulário, numerando-os
sequencialmente de modo a que seus nomes sejam únicos. Por exemplo, poderia querer criar uma série de botões que
realizem operações de bancos de dados. Duplicar uma matriz tem a vantagem adicional de alinhar fácil e rapidamente
a múltiplos objetos.
Pode duplicar manualmente um objeto ativo em uma matriz ou usar a caixa de diálogo Duplicar Vários, que permite
encher a matriz rapidamente.
Usar a caixa de diálogo Duplicar vários
Para duplicar um ou vários objetos usando a caixa de diálogo Duplicar vários:
1. Selecione o objeto a ser duplicado
2. Selecione Duplicar vários... do menu Objeto. Aparece a caixa de diálogo Duplicar vários:
3. Na área Matriz, introduza o número de linhas e colunas e o intervalo entre elas. Para mais informação sobre este
ponto, consulte “Duplicar Objetos” em Inserir e organizar objetos de formulário.
4. Selecione a opção “Numerar as variáveis”. Esta opção está ativa apenas se o objeto selecionado for uma
variável.
5. Selecione a ordem de numeração. Se seleciona a opção Linha(s), 4D numerará os objetos ativos de cima para
baixo (linha por linha) e de esquerda a direita. Se selecionar a opção Coluna(s), 4D numerará os objetos ativos de
esquerda para direita (coluna por coluna) e de cima para baixo. Os objetos são copiados e numerados de acordo
com suas preferências.
6. Clique no botão Aceitar. Obtém o número de colunas e de linhas de objetos solicitado.
Duplicar um objeto diretamente numa matriz
1. Selecione a ferramenta Matriz
na barra de objetos (variação do grupo Retângulo) e cria uma matriz no
formulário.
Tome cuidado para que cada célula na matriz seja o suficientemente grande para que contenha o objeto a
duplicar.
2. No tema “Grid" (Grade) da Lista de propriedades, defina o número de colunas e de filas da matriz.
- 285 -
3. Defina a aparência da matriz utilizando as opções do tema Aparência (opcional).
Pode definir o estilo da borda, a largura da linha, a cor e o padrão do fundo.
4. Tenha certeza de que as células da matriz sejam suficientemente grandes para conter o objeto a ser duplicado.
5. Crie um novo objeto ativo e coloque-o na parte superior esquerda da célula da matriz.
6. Selecione simultaneamente o objeto e a matriz.
7. Escolha o comando Duplicar sobre Matriz do menu Objeto. 4D copia o objeto ativo en cada célula da matriz,
dando un número único.
Os objetos são copiados junto com suas propriedades de tamanho e estilo, assim como também com seu método
associado (se aplicável).
4D numera os objetos ativos de cima para baixo em cada coluna. Esses números se adicionam aos nomes dos
objetos, criando um objeto único em cada célula da matriz.
Nota: para numerar as séries de objeto ativos de esquerda a direita em cada fila, mantenha pressionada a tecla Alt
(Windows) ou Opção (Mac OS) quando escolher Duplicar sobre Matriz .
Pode fazer referência a esses objetos em métodos utilizando os nomes que lhes foram dados. Pode eliminar a matriz
ou conservá-la no formulário.
- 286 -
Incrementar um conjunto de variáveis
4D oferece um prático atalho para incrementar automaticamente um conjunto de variáveis criadas num formulário. Esse
atalho permite por exemplo reorganizar as variáveis dos botões de um formulário ou assegurar que cada variável de
formulário seja única. Lembre que essa função apenas modifica os nomes das variáveis com os objetos, não os nomes
dos objetos.
Para incrementar automaticamente um conjunto de variáveis:
1. Selecione cada objeto ativo cuja variável necessite ser renumerada.
Pode selecionar todo tipo de objeto ativo.
2. Em Windows, Ctrl+Alt+clique em um dos objetos.
Em Mac OS, Comando+Opção+clique em um dos objetos.
Aparece a seguinte caixa de diálogo:
Nota: esta caixa de diálogo não aparecerá se a seleção contém um objeto que não estiver ativo ou um campo.
3. Defina o número de início e o incremento a ser aplicado.
4. Clique em Aceitar.
As variáveis dos objetos selecionados são renumeradas imediatamente usando os parâmetros definidos. Os
números são adicionados ao final dos nomes das variáveis atuais. A renumeração é realizada da esquerda para
direita e cima para baixo.
- 287 -
Redimensionar um formulário
A caixa de diálogo "Redimensionar formulário" (menu Formulário, opção Redimensionar), permite redimensionar os
objetos do formulário com o fim de que se vejam bem quando um banco passe para outra plataforma.
Os objetos de formulário criados em Mac OS aparecem menores em Windows, e vice-versa, mesmo quando realmente
são do mesmo tamanho. Essa diferença é porque a resolução da tela em Windows é 25% maior que a resolução em
Macintosh. Por exemplo, os textos de 12 pontos em Windows. Se o tamanho de fonte em Mac OS é adequado, pode
ser que seja muito pequeno em windows, ou se estiver adequada para Windows, pode ser que esteja muito grande
para o Mac.
Para compensar as diferenças de resolução de tela, deve modificar a escala dos objetos. Com a opção Redimensionar
do menu Formulário pode redimensionar proporcionalmente todos os objetos do formulário em uma só operação.
Pode escolher entre as seguintes opções:
Macintosh a Windows (133%): esta opção é a automática quando usa 4D em Mac OS. Use essa opção para
redimensionar um formulário criado para uma resolução de tela Macintosh, com o fim de adaptar para uma
resolução Windows. Para realizar essa operação, o programa aumenta o tamanho de todos os objetos do
formulário em uma terceira parte. Por exemplo, os textos de 9 pontos se transformarão em 12 pontos.
Windows a Macintosh (75%): esta opção é a opção automática quando usa 4D no Windows. Use essa opção
para redimensionar um formulário criado para uma resolução de tela Windows, com o fim de adaptar a resolução
de tela Macintosh. Para realizar esta operação, o programa diminui o tamanho de todos os objetos do formulário
em uma quarta parta. Por exemplo, os textos de 12 pontos passarão a ser de 9 pontos.
Porcentagem manual: esta opção permite redimensionar um formulário utilizando a porcentagem indicado na
área “%”. Com esta opção pode redimensionar um formulário para que se veja bem numa resolução de tela pouco
comum. Também pode usar essa opção para modificar o tamanho de todos os objetos do formulário para a
plataforma atual. Por exemplo, se deseja duplicar o tamanho de todos os objetos, escreva a 200%; se deseja
reduzir até a metade, escreva 50%.
Redimensionar as imagens: esta opção não está selecionada automaticamente. Geralmente, diminuir ou
aumentar o tamanho das imagens de mapas de bits não dá muitos bons resultados estéticos. Por essa razão o
programa não redimensiona as imagens estáticas do formulário a menor que você selecione essa opção. Ao
invés disso move as imagens à nova posição que lhes corresponde "relativamente" dentro do formulário. Se tiver
certeza de obter bons resultados redimensionando mapas de bits ou se usa imagens diferentes a mapas de bits,
pode escolher redimensionar imagens.
- 288 -
Usar métodos de objetos
Pode associar um método a qualquer objeto ativo de um formulário. Os métodos associados a objetos individuais de
um formulário são chamados métodos de objeto.
Os seguintes são alguns dos usos mais comuns dos métodos de objeto:
Restringir a entrada de dados,
Iniciar e manejar os objetos de interface tais como abas, menus suspensos, listas suspensas, list boxes, combo
boxes, listas hierárquicas, etc.
Definir a ação que é realizada quando se faz clique ou duplo clique num objeto,
Manejar operações de arrastar e soltar.
Esses são alguns exemplos simples de operações realizadas nos dados.
O seguinte método calcula um total baseado nos dados de outros campos:
Linha Total:=[Produtos]Preco *[Ordens]Quantidade
Este é um método que transforma os caracteres de um campo Nome para maiúsculas:
[Clientes]Nome:=Uppercase([Clientes]Nome)
O seguinte método concatena valores de um campo Nome e um campo Sobrenome e os atribui a uma variável
chamada vNome:
vNome:=[Empregados]Nome+" "+[Empregados]Sobrenome
Como cada método de objeto está associado a seu objeto, você pode criar métodos de objeto desde o editor de
formulários. Para mais informação sobre como usar o editor de métodos, consulte Editar Métodos.
Eventos de objeto
Os métodos de objeto são executados quando se produzem certos eventos. Por exemplo, a ação associada a uma aba
faz sentido apenas quando um usuário clica na aba. Numa área de rolagem, pode executar o método apenas quando
um usuário faz duplo clique em um elemento.
Na seção "Eventos" da Lista de propriedades pode definir os eventos que serão executarão o método do objeto para
um objeto particular. A lista contém todos os eventos de formulário pertinentes para o objeto selecionado. Alguns
eventos apenas estão disponíveis para tipos de objetos específicos. Igualmente existem eventos adicionais que
somente são gerados ao nível de formulário. Para uma descrição detalhada de todos os eventos de formulário, consulte
o comando Form event no manual de Linguagem 4D.
Selecione um evento clicando na caixa de seleção associada. Para marcar ou desmarcar todos os eventos de uma vez,
pressione a tecla Ctrl (Windows) ou Comando (Mac OS) enquanto clica em qualquer evento.
Se necessita executar diferentes instruções para vários eventos diferentes, use uma instrução Case of...Else...End
case em seu método e prove para cada evento selecionado na seção Eventos. Para provar um evento, use a função
Form event e as constantes do tema Eventos de Formulários. Um exemplo de estrutura de método de objeto está
abaixo:
Case of
:(Form event=On Load)
//Localiza o código a ser executado quando se abre o formulário
:(Form event=On Data Change)
//Localiza o código a ser executado quando os conteúdos do objeto são modificados
:(Form event=On Validate)
//Localiza o código a ser executado quando o formulário é validado
End case
- 289 -
Criar um método de objeto
Para criar um método de objeto:
1. No editor de formulários, selecione o objeto ao qual deseja associar um método.
2. Clique no botão Editar do lado da linha Método de objeto (tema “Ação”) na Lista de propriedades.
Ou
Escolha Método de objeto do menu Objeto.
Ou
Clique direito no objeto e escolha Método de objeto no menu contextual.
Ou
Mantenha pressionada a tecla Alt (Windows) ou Opção (Mac OS) e clique no campo ou objeto.
4D mostra uma nova janela do editor de métodos, vazia por padrão. O nome do método é “Método de Objeto:”
seguido pelo nome do objeto ou campo.
3. Escreva o método como foi descrito no capítulo Editar Métodos, e após isso, feche a janela e grave seu trabalho.
O método agora está associado com o campo ou objeto ativo. Pode visualizar os objetos associados a um
método exibindo as marcas “Método de objeto”:
Pode visualizar ou modificar um método a qualquer momento.
Abrir um método de objeto
Para abrir um método objeto:
1. No editor de formulários, selecione o objeto cujo método deseja abrir.
2. Clique no botão Editar.. perto da linha Método de objeto (tema "Ação") na lista de propriedades.
Ou
Escolha Método de objeto no menu Objeto.
Ou
Clique com o botão direito no objeto e escolha o comando Método de objeto no menu contextual.
Ou
Mantenha pressionada a tecla Alt (Windows) ou Opção (Mac OS) e clique no objeto ao qual está associado o
método.
O editor de métodos aparece com seu método, pronto para que modifique o código.
Apagar um método de objeto
Pode eliminar um método de objeto a qualquer momento. Para isso, selecione o objeto ao qual o método está
associado, e logo escolha
Puede borrar un método de objeto en cualquier momento. Para hacerlo, seleccione el objeto al cual el método está
asociado y luego elija Eliminar método do objeto do menu Objeto.
- 290 -
Modos de exibição de objetos
Você pode usar vários modos de exibição ("vistas" nos formulários de 4D. Essa função facilita a construção de
formulários complexos através da distribuição dos objetos em diferentes vistas que podem ocultar, mostrar ou bloquear
de acordo com as suas necessidades. A distribuição de objetos pode ser efetuada, por exemplo, segundo seu tipo
(campos, variáveis, objetos estáticos, etc.), Todos os tipos de objetos, inclusive os sub-formulários e as áreas de plugin, podem ser incluídos nas vistas
Como funciona
Há 9 vistas disponíveis por formulário, chamadas automaticamente de Vista 1 a Vista 9 (os nomes podem ser
mudados). Cada vista pode ser ocultada, mostrada ou bloqueada. A gestão de vistas se realizada desde a palheta
Vistas.
Para mostrar esta palheta, clique no botão de modo de exibição da barra de ferramentas
ou selecione o
comando Modo de exibição no menu contextual (clique no objeto com o botão direito do mouse) ou no menu
Formulário cliqueem Lista de Vistas.
Estas são algumas regras para trabalhar com vistas:
Contexto de uso: as vistas são uma ferramenta puramente gráfica que só se pode utilizar no editor de
Formulários; não se pode acessar as vistas por programação ou em modo Aplicação.
Vistas e páginas: os objetos de uma mesma vista podem pertencer às diferentes páginas de um formulário; só
se podem mostrar os objetos da página atual (e da página 0 se estiver visível), sem importar a configuração da
vista.
Vistas e níveis: as vistas são independentes dos níveis dos objetos, não há hierarquia de exibição entre as
diferentes vistas.
Vistas e grupos: só os objetos que pertencem à vista atual podem ser agrupados.
Nota: em formulários criados utilizando o Assistente de criação de formulários, o título do formulário se encontra na
Vista 2 e os botões de ação (botões de imagem) na Vista 3.
Colocar um objeto em uma Vista
Um objeto só pode pertencer a uma vista. Todo objeto criado em um formulário é colocado na vista atual. A vista 1 é
selecionada automaticamente como padrão; por isso, todos os objetos estão localizados na primeira vista do
formulário.
Para criar um objeto em outra vista, simplesmente selecione previamente outra vista na palheta clicando na linha
correspondente:
- 291 -
Também é possível mover um ou mais objetos de uma vista a outra. Para fazer isso, selecione os objetos no formulário
cuja vista deseja modificar. A lista de vistas indica com um símbolo a qual vista pertence a seleção:
Nota: a seleção pode conter vários objetos que pertencem a vistas diferentes.
Após isso, simplesmente selecione a vista destino da seleção e clique em Enviar a vista. A seleção passa à nova
vista:
Nota: pode mostrar a vista na que se encontra cada objeto utilizando as marcas de 4D. Para mais informação sobre
este ponto, consulte Usar as Marcas.
Renomear Vistas
O modos de exibição (vistas) podem ser renomeados, por exemplo, para dar um nome à vista que descreva os objetos
que contém. Pode renomear as 9 vistas de forma diferente em cada formulário do banco de dados.
Para renomear uma vista, utilize Ctrl+clique (Windows) ou Comando+clique (Mac OS) sobre o nome da vista, ou dê
um duplo clique no nome da vista (neste caso, a vista se seleciona). O nome da vista torna-se editável:
Trabalhar com as Vistas
Logo que coloque os objetos em uma ou mais vistas, pode usar a palheta de vistas para:
selecionar todos os objetos de uma vista com um só clique,
mostrar ou ocultar os objetos de cada vista,
bloquear os objetos de uma vista.
Selecionar todos os objetos de uma Vista
Pode selecionar todos os objetos que pertençam a uma mesma vista na página atual do formulário. Essa função é útil
para aplicar mudanças globais a um conjunto de objetos. Para fazer isso, escolha a vista onde deseja selecionar todos
os objetos e clique em Selecionar tudo visível.
Exibir ou ocultar objetos em uma vista
A qualquer momento é possível mostrar ou ocultar os objetos de uma vista na página atual do formulário. Essa função
permite, por exemplo, concentrar-se em certos objetos durante a modificação do formulário.
Como padrão automático, todas as vistas são visíveis, como indica o ícone
em frente de cada vista na palheta de
vistas. Para ocultar uma vista, clique neste ícone. Então fica inativo e os objetos da vista correspondente já não são
mostrados no formulário:
- 292 -
Nota: não é possível ocultar a vista atual (selecionada na lista de visitas).
Para mostrar uma vista oculta, simplesmente selecione ou clique novamente no ícone de visualização.
Bloqueando os objetos de uma vista
Pode bloquear os objetos de uma vista para impedir que sejam selecionados, modificados ou eliminados do formulário.
Uma vez bloqueado, um objeto não pode ser selecionado por um clique, um retângulo de seleção, nem pela opção
Selecionar objetos similares do menu contextual. Essa função é útil para evitar erros de manipulação.
Como padrão automático, todas as vistas estão desbloqueadas, como indica o ícone
frente a cada vista na palheta
de vistas. Para bloquear objetos de uma vista, clique sobre o ícone. O cadeado se fecha, o que significa que a vista
está bloqueada:
Nota: a vista atual (selecionada na lista de vistas) não pode ser bloqueada.
Para desbloquear uma vista, simplesmente selecione o clique novamente no ícone de bloqueio.
- 293 -
Usar as Marcas
O editor de formulários permite marcas para facilitar a visualização das propriedades dos objetos.
O principio desta função é o seguinte: cada marca está associada a uma propriedade (por exemplo, Mensagens de
ajuda, significa que o objeto “tem uma mensagem de ajuda associada”). Quando ativa uma marca, 4D mostra um
pequeno ícone (marca) na parte superior esquerda de cada objeto do formulário onde se aplica a propriedade.
Para as propriedades de tipo “verdadeiro/falso” (como Mensagens de ajuda), a marca só é mostrada se o objeto
tem essa propriedade.
Para as propriedades de tipo “valor” (por exemplo Número de vista), a marca mostra o valor da propriedade para
cada objeto.
Para ativar uma marca, clique no botão de seleção de marcas, até selecionar a marca desejada. Também pode clicar
na parte direita do botão e selecionar diretamente o tipo de marcas a ser mostrada no menu associado:
Para não mostrar as marcas, selecione Ocultar marcas no menu seleção.
Nota: pode definir as marcas a ser mostradas automaticamente em Página Formulários das Preferências da
aplicação.
A seguir uma descrição de cada tipo de marca:
Ícone Nome
Descrição...
Método de objeto
É mostrada para os objetos com um método de objeto associado
Ação automática
É mostrada para os objetos com uma ação automática associada
Ordem de entrada
É mostrada para os objetos com ao menos uma propriedade de
redimensionamento, indica a combinação de propriedades atuais
É mostrada para os objetos editáveis, indica o número de ordem de entrada
Número de vista
É mostrada para todos os objetos, indica o número de vista
Folha de estilo
É mostrada para os objetos com uma folha de estilo associada
Filtro
É mostrada para os objetos com um filtro de entrada associado
Mensagem de ajuda
É mostrada para os objetos com uma mensagem de ajuda associada
É mostrada para os objetos cuja etiqueta provêm de uma referência (etiqueta que
começa por “:”). A referência pode ser de tipo recurso (STR#) ou XLIFF.
É mostrada para os objetos que contém uma referência dinâmica a um campo, uma
tabela ou uma variável (sintaxe do tipo “<label>” )
Oculta todas as marcas
Redimensionamento
Localizado
Referência dinâmica
Ocultar as marcas
- 294 -
Usar a biblioteca pré-configurada
A biblioteca de objetos preconfigurados de 4D é uma ferramenta criada para facilitar a adição de objetos nos
formulários 4D. Ela oferece uma coleção de objetos preconfigurados que podem ser usados em seus formulários com
um simples arrastar/soltar ou copiar/colar.
Objetos da biblioteca
Essa biblioteca utiliza exclusivamente objetos 4D comuns (botões, áreas de texto, etc.) com certas propriedades que
foram predefinidas com o propósito de acelerar e facilitar sua implementação. Por exemplo, o objeto "área de ingresso
da senha" é uma variável texto associada a uma folha de estilos específica. A biblioteca também oferece objetos de
alto nível, como os widgets datepicker e timepicker (ver o manual 4D Widgets).
Diferente das bibliotecas de objetos usuário (consultar Criar e usar objetos de biblioteca personalizados), a
biblioteca de objetos pré-configurados de 4D não é modificável: não pode adicionar ou eliminar objetos dessa
biblioteca.
Usar a biblioteca
A biblioteca de objetos pré-configurados aparece como uma janela independente. Os objetos podem ser inseridos no
editor de formulários com arrastar e soltar. Para mostrar a janela da biblioteca de objetos pré-configurados, clique no
botão
da barra de ferramentas do editor de formulários de 4D.
A biblioteca de objetos pré-configurados é mostrada a seguir em uma nova janela. Tem uma área de filtro (menu pop-up
e botões), uma área de visualização prévia e uma área de comentários:
Filtrado de objetos: os objetos são classificados em diferentes categorias (botões, áreas de entrada, etc). Para
restringir a seleção a uma categoria de objetos, use o menu pop-up ou escolha Todas as categorias para mostrar
todos os objetos.
Certos objetos estão relacionados a uma plataforma (Windows ou Macintosh). Pode filtrar os objetos mostrados,
de acordo com a plataforma, utilizando o botão localizado na esquina superior direita da janela.
- 295 -
Área de visualização prévia: a área central mostra uma visualização prévia, assim como o nome de cada
objeto. Pode clicar no objeto para obter informação sobre ele: sua descrição é mostrada na parte inferior da
janela.
Pode variar o tamanho das miniaturas na janela com o cursor localizado na área de visualização prévia
Área de comentários: mostra informação sobre o objeto selecionado.
Os objetos podem ser inseridos em um formulário simplesmente com arrastar e soltar ou copiar e colar das áreas
centrais da janela até o formulário. O objeto é inserido com suas propriedades pré-definidas. Depois disso, pode
modificar as propriedades para adaptar o objeto às suas necessidades.
- 296 -
Criar e usar objetos de biblioteca personalizados
4D permite criar e utilizar bibliotecas de objetos. Uma biblioteca de objetos é um arquivo externo criado por 4D que
permite armazenar todo tipo de objetos (botões, textos, imagens, listas hierárquicas, etc). É possível usar esses objetos
em diferentes formulários. Os objetos são guardados com todas as suas propriedades, incluindo seus métodos de
objeto.
As bibliotecas são juntadas e utilizadas com um simples arrastar e soltar, ou copiar e colar. São como uma espécie de
área de transferência perpétua.
Utilizando bibliotecas, pode construir fundos para objetos de formulário, agrupados por famílias gráficas,
funcionalidades, etc. Como as bibliotecas são guardadas como arquivos externos, seu uso com diferentes bancos de
dados é bem simples.
Finalmente, também pode combinar as bibliotecas de objetos com os formulários de usuário com o propósito de
oferecer objetos que possam ser usados para a personalização de bancos de dados. Estes princípios são descritos
em Formulários de usuário.
Criar uma biblioteca de objetos
Para criar uma biblioteca de objetos, selecione o comando Novo>Biblioteca de objetos... do menu 4D Arquivo ou
da barra de ferramentas de 4D..
Aparece uma caixa de diálogo padrão para guardar arquivos, que permite indicar o nome e a localização da biblioteca
de objetos.
Uma vez valide a caixa de diálogo, 4D cria uma nova biblioteca de objetos em seu disco e mostra sua janela
correspondente (em branco é o padrão).
Pode criar tantas bibliotecas quantas queira em um banco de dados. Uma biblioteca criada e construída em Mac OS
pode ser usada no Windows e vice-versa.
Construir uma biblioteca de objetos
Os objetos são colocados em uma biblioteca de objetos usando arrastar e soltar, ou copiar e colar. Podem vir de um
formulário ou de outra biblioteca de objetos (incluindo Usar a biblioteca pré-configurada). Nenhum link com o objeto
original é conservado: se o original muda, a modificação não será transmitida ao objeto copiado.
Nota: para arrastar e soltar objetos desde formulários até biblioteca de objetos, deve selecionar a opção “Iniciar
arrastar e soltar” nas Preferências de 4D (ver Página Formulários).
Operações básicas tais como adição, eliminação ou modificação são acessíveis através do menu contextual (botão
direito do mouse), ou do menu de opções da janela:
Pode colocar na biblioteca a objetos individuais ou conjuntos de objetos. Cada objeto ou conjunto de objetos é
agrupado em apenas um elemento:
- 297 -
Uma biblioteca de objetos pode ter até 32 000 elementos.
Os objetos são copiados com todas as suas propriedades, gráficas e funcionais. Essas propriedades são conservadas
quando o elemento é copiado em um formulário ou em outra biblioteca.
Renomear um objeto
Cada novo elemento é nomeado "Objeto", seguido por um número aleatório, por exemplo Objeto2012. Pode renomear
cada elemento como deseje. Para fazer isso, pode:
dar duplo clique no elemento a renomear
dar clique direito no elemento a renomear, e depois escolher o comando Renomear no menu contextual. Aparece
uma caixa de diálogo que permite renomer o elemento:
Mais de um elemento pode compartir o mesmo nome.
Objetos dependentes
Utilizar copiar e colar, ou arrastar e soltar, com certos objetos da biblioteca, também faz com que sejam copiados os
objetos dependentes. Por exemplo, ao copiar um botão, também é copiado obrigatoriamente o método de objeto que
possa ter associado. Esses objetos apenas podem ser copiados diretamente ou usando arrastar e soltar.
A lista a seguir mostra os objetos dependentes que são copiados junto com os objetos que os utilizam (quando for o
caso):
Listas
Folhas de estilo
Formatos/Filtros
Imagens
Mensagens de ajuda (associadas a um campo)
Recursos STR#
Métodos de objeto.
No caso dos recursos STR#, se copia o STR# completamente e não apenas a string associada ao objeto.
Abrir uma biblioteca de objetos
Para abrir uma biblioteca de objetos já existente, selecione Abrir>Biblioteca de objetos... no menu Arquivo ou na
barra de ferramentas de 4D:
Aparece uma caixa de diálogo para abrir arquivos, que permite selecionar a biblioteca de objetos a ser aberta. Uma
biblioteca de objetos apenas pode ser aberta por um banco de dados por vez. Entretanto, um banco de dados pode
abrir diversas bibliotecas de objetos ao mesmo tempo. A extensão dos arquivos de biblioteca é ".4il".
Acessar biblioteca de objetos
- 298 -
As biblioteca de objetos são acessíveis desde o ambiente Desenho de 4D, desde que o desenvolvedor permita esse
acesso, no editor de formulários usuário em modo Aplicação (ver Formulários de usuário). Todos os elementos da
biblioteca são visíveis em modo Desenho. Entretanto, no editor de formulários de usuário, só podem ser vistos os
elementos que não tem um método de objeto associado a eles.
Os elementos que tenham ao menos um método de objeto associado, aparecem com uma marca (a mesma marca que
é mostrada sobre os objetos com um método de objeto em um formulário, consulte Usar as Marcas) e seu nome
aparece em azul. Isso permite diferenciar facilmente os objetos visíveis para o desenvolvedor, no modo Desenho,
daqueles visíveis para o usuário, no modo Aplicação.
Funcionar em modo Remoto
Para que todas as máquinas clientes possam acessar uma biblioteca de objetos, o arquivo da biblioteca deve estar
localizado em uma pasta chamada Resources do banco (ver Descrição dos Arquivos 4D). Esta pasta permite
compartir elementos personalizados entre o servidor e as máquinas cliente (imagens, arquivos XLIFF, etc.). Para mais
informação consulte a seção Gerenciamento da pasta Resources no Manual de referência de 4D Server.
Pode visualizar e administrar o conteúdo da pasta Resources através de Explorador de Recursos.
- 299 -
Exibir informação sobre objetos em formulários sendo executados
Quando um formulário está em execução, é possível utilizar um atalho de teclado para obter informação útil sobre os
objetos que contém (nome, coordenadas, etc.). Esta informação se mostra como uma mensagem de ajuda que aparece
ao pressionar Ctrl+Shift (Windows) ou Control+Shift (Mac OS) e passar o cursor sobre um objeto:
Esta informação está disponível para cada objeto mostrado em um formulário quando se abre o ambiente Desenho.
- 300 -
Trabalhar com objetos ativos
O que são objetos ativos
Objetos de campo e variáveis
Botões
Botões 3D, caixa de seleção 3D e botões de opção 3D
Botões imagem
Grade de botões
Caixas de seleção
Botões de opção e botões imagem de opção
Menus suspensos/Listas suspensas
Combo Boxes
Menus suspensos hierárquicos e listas hierárquicas
Menu Imagem suspenso
Indicadores
Controle de abas
Separador
Área Web
Áreas plug-in
- 301 -
O que são objetos ativos
Um objeto ativo é um objeto em um formulário que realiza uma tarefa ou uma função de interface. Há muitos tipos de
objetos ativos. Os campos são considerados objetos ativos. Outros objetos ativos são objetos editáveis (variáveis),
combo boxes, listas suspensas, botões imagens, etc, armazenam dados temporariamente na memória ou realizam
alguma ação como abrir uma janela de diálogo, imprimir um relatório, ou iniciar um processo em segundo plano.
Em alguns casos, pode especificar a ação de um objeto ativo selecionando a janela de propriedades dos objetos. Por
exemplo, pode usar as ações integradas automáticas de um botão para definir as ações dos botões. Em outros casos,
pode especificar a ação do objeto escrevendo um método associado ao objeto.
Em 4D, pode utilizar os seguintes objetos ativos:
Objetos de campo e variáveis,
Botões,
Botões 3D, caixa de seleção 3D e botões de opção 3D,
Botões imagem,
Grade de botões,
Caixas de seleção,
Botões de opção e botões imagem de opção,
Menus suspensos/Listas suspensas,
Combo Boxes,
Menus suspensos hierárquicos e listas hierárquicas,
Menu Imagem suspenso,
Indicadores,
Controle de abas,
Separador,
Área Web,
Áreas plug-in,
List boxes (descrito em um capítulo independente),
Subformulários e widgets (descrito em um capítulo independente).
A aparência e o funcionamento dos objetos ativos são regidos por um conjunto de propriedades. As propriedades
específicas a cada tipo de objeto são descritos com os objetos. As propriedades genéricas fundamentais tais como os
controles de entrada ou os formatos de visualização são descritos no capítulo Propriedades de objetos ativos.
- 302 -
Objetos de campo e variáveis
Em um formulário, as variáveis e os campos funcionam de maneira muito parecida.
Os campos de um formulário são utilizados para introduzir ou mostrar os dados de um registro. Quando criar um
novo formulário utilizando o assistente de criação de formulários, selecione os campos a incluir no formulário na
forma de objetos padrão. Quando o formulário tiver sido criado, pode usar o editor de formulários para especificar
propriedades adicionais, como o formato de visualização e os controles de entrada. Estas propriedades só
aplicam aos formulários nos quais tenham sido especificados. Pode utilizar as mesmas propriedades para outros
formulários ou definir outras. Pode mudar as propriedades dos campos ou adicionar/eliminar campos em um
formulário.
As variáveis podem ser editáveis ou não editáveis e pode receber dados de tipo alfa, texto, número, data, hora e
imagem. As variáveis objeto são criadas utilizando a ferramenta Variável
. Pode criar automaticamente um
grande número de variáveis usando Duplicar em uma matriz .
Do mesmo modo que os campos, as variáveis permitem ingressar e mostrar dados. As variáveis são utilizadas
para o armazenamento temporário de dados. Um uso comum de uma variável é para mostrar os cálculos que são
realizados utilizando um método como:
vTotal := Quantidade * Preço
Se criar uma variável que mostre o resultado do cálculo, se chama a variável vTotal e usa um método para fazer o
cálculo.
Utilize os métodos para manejar as variáveis editáveis e não editáveis. Uma variável editável aceita dados. Pode
estabelecer os controles de entrada para o objeto como se fosse um campo. Os dados introduzidos são
associados com o nome do objeto. Pode administrar os dados com métodos objeto ou de formulário que utilizem
diretamente o nome da variável.
Também pode representar campos e variáveis em seus formulários de formas alternativas:
Pode visualizar e introduzir diretamente os dados dos campos do banco de dados nas colunas dos List box de
tipo "seleção" (ver Visualização de campos em list boxes).
A partir de 4D v14, pode representar diretamente um campo ou uma variável listada em um formulário utilizando
objetos Menus suspensos/Listas suspensas e Combo Boxes.
Tipo de Variável
Você pode usar a propriedade tipo de variável no tema de "objetos" da Lista de propriedades para especificar o tipo
de dados para a variável:
Lembre que a principal finalidade desse ajuste é definir os temas e opções disponíveis na lista de propriedades para
correspondam com o tipo de dados. Na verdade, não digita realmente a variável. Na perspectiva da compilação do
banco de dados, você deve usar os comandos do Compilador
No entanto, o menu de tipo de variável tem uma função de digitação em dois casos específicos:
As variáveis imagem: Você pode usar este menu para declarar variáveis antes de carregar o formulário no modo
interpretado (veja abaixo)
As variáveis dinâmicas: Você pode usar este menu para declarar o tipo de variáveis dinâmicas (ver Variáveis
Dinâmicas).
- 303 -
Declaração de variáveis do tipo imagens em formulários
Mecanismos nativos específicos governam a visualização de variáveis imagem nos formulários. Esses mecanismos
requerem que as variáveis imagem sejam declaradas obrigatoriamente antes de se carregar o formulário, ou seja,
antes do evento de formulário On Load, diferente de outros tipos de variáveis.
Para fazer isso, é necessário:
que a instrução C_PICTURE(varName) tenha sido executada antes de carregar o formulário (tipicamente, no
método que chama o comando DIALOG),
que a variável tenha sido declarada a nível de formulário utilizando o menu pop-up Tipo de variável da Lista de
propriedades.
Do contrário, a variável imagem não será mostrada corretamente (apenas no modo interpretado).
Exibir
As variáveis e os campos podem ser de qualquer tamanho. Ao mostrar os caracteres, o tamanho da área varia
em passos relacionados com o tamanho da fonte dos caracteres utilizados. As variáveis e os campos podem
fazer uso dos formatos de visualização (ver Formatos de saída). As variáveis e os campos de tipo Texto e
Imagem podem utilizar as barras de rolagem horizontal e vertical (ver Barra de rolagem) e podem ser impressas
com um marco variável (ver Imprimir campos de tipo texto).
Quando a propriedade Multiestilo tenha sido selecionada para o objeto, as variáveis e os campos de tipo Texto
ou Alfa aceitam variações de estilo (ademais do estilo geral especificado a nível do objeto). Para obter mais
informação, consulte a seção Multiestilo (área Rich text).
Quando um campo ou variável de tipo texto ou alfa contém uma URL (strings que começam por http, ftp, www ou
mailto) são detectadas automaticamente. Se o usuário pressiona Ctrl+clique (Windows) ou Comando+clique
(Mac OS) na área, a URL é executa diretamente no navegador web padrão. Em Windows, as URLs detectadas
são mostradas em azul e subscritos:
Nota: as direções de correio eletrônico devem ser escritas na forma mailto:endereço.
Adicionar campos a um formulário
Pode adicionar ou eliminar campos de um formulário em qualquer momento. Por exemplo, pode adicionar campos a
um formulário nos seguintes casos:
se percebe que necessita um campo que não foi selecionado no assistente de criação de formulários.
se adicionou um campo à estrutura do banco de dados e necessita adicionar ao formulário para poder utilizar.
Para adicionar um campo a um formulário:
1. Selecione a ferramenta de inserção
na barra de ferramentas e desenvolva o campo no formulário.
4D mostra automaticamente as propriedades do novo campo na Lista de propriedades.
2. Selecione o campo que deseja inserir da lista de tabelas/campos:
- 304 -
Nota: não é possível selecionar um campo de tipo BLOB.
3. Se desejar, defina as propriedades específicas a aplicar ao campo.
Depois de criar o campo, deve geralmente definir propriedades adicionais. Pode definir os controles de entrada,
escrever a mensagem de ajuda associado, associar um método, definir as opções de redimensionamento ou de
reposicionamento, definir o tipo de fonte ou as opções de aparência (ver Propriedades de objetos ativos).
Nota: também pode inserir um campo usando arrastar e soltar desde a Página Tabelas do Explorador.
O novo campo aparece no formulário onde o localizou. A área de campo mostra o nome do campo que foi selecionado,
precedido pelo nome da tabela. Como padrão, 4D não adiciona uma etiqueta para designar o campo mas pode criar
uma usando uma área de texto estático. Note que a etiqueta pode ser definida dinamicamente (ver Usar referências
em texto estático).
Depois de localizar um campo em um formulário, pode modificar como o faria com qualquer outro objeto do formulário.
Pode ser redimensionado, mudar a fonte, mudar a cor, etc.
Transformar um campo em uma variável e vice-versa
Pode transformar todo tipo de objeto (ativo ou não) em outro tipo de objeto. Também pode transformar um campo em
uma variável e vice-versa. Essa possibilidade é bastante útil quando depois de inserir um campo em um formulário,
deseje convertê-lo em uma variável porque não necessita armazenar o valor. Quando 4D transforma um objeto em
outro, conserva as propriedades do objeto original (coordenadas, método do objeto, aparência, cor, etc.) O tipo de
dados atribuido a um campo é conservado para a variável: um campo tipo imagem será convertido a uma variável tipo
imagem.
Para converter um campo em uma variável ou vice-versa, selecione o objeto e selecione Campo ou Variável da lista
Tipo na Lista de propriedades, (tema “Objetos”). A Lista de propriedades é atualizada para mostrar as propriedades do
novo tipo de objeto. O nome de objeto, o método de objeto e suas propriedades (tamanho, editável, etc.) são
conservadas.
Quando transforma uma variável em um campo, 4D atribui como padrão ao objeto o primeiro campo da primeira tabela.
Pode definir manualmente a Tabela e o Campo fonte (tema “Fonte de dados”).
Guardar como
Quando associa uma lista de seleção a um campo ou variável, pode utilizar a opção Guardar como Valor/Referencia
no tema de "Fontes de dados" da Lista de propriedades.
Esta opção lhe permite optimizar o tamanho dos dados guardados. Para mais informação, consulte Guardar como
Valor ou Referência .
- 305 -
Botões
Visão Geral
O editor de formulários permite adicionar uma grande variedade de botões a seus formulários. É possível associar uma
ação padrão a cada botão do formulário. Os botões automáticos permitem ao usuário aceitar, cancelar, ou eliminar
registros, se mover entre registros, se mover de uma página a outra em um formulário multipáginas, e abrir, excluir, ou
adicionar registros a um subformulário, etc.
Geralmente, os botões são localizados quando se cria o formulário utilizando o assistente de formulários. É possível
modificar as ações destes botões a partir da lista de propriedades. Por exemplo, é possível apagar a ação padrão de
um botão e escrever um método de objeto que especifique a ação do botão.
Da mesma forma é possível adicionar botões e atribuir ações de botões com o editor de formulários. Por exemplo, se
você precisa de vários subformulários no formulário, é possível adicionar os subformulários adicionais e botões
automáticos no editor de formulário. Simplesmente adicione cada botão ao formulário e associe uma ação padrão a
cada botão. 4D permite utilizar os seguintes tipos de botões:
Botões: estes botões são mostrados na interface da plataforma atual. O texto do botão é mostrado na fonte,
tamanho, estilo e cor selecionadas.
A etiqueta mostrada pelo botão está definida no campo Título do tema “Objetos” na Lista de propriedades. É
possível modificá-la a qualquer momento:
Botões padrões: um botão padrão tem exatamente a mesma aparência que um botão normal, exceto que sua
borda é um pouco mais grossa. Isto indica ao usuário que o botão é a opção recomendada. A imagem a seguir
compara um botão padrão com um botão normal.
Sob Mac OS, os botões padrões são botões de pulsações:
O tipo de objeto botão padrão não existe como tal, mas é uma propriedade acessível para os botões padrões.
Nota: Você só pode ter um botão padrão por página de formulário.
Botões inversos e botões invisíveis: estes botões estão desenhados para serem localizados sobre objetos
gráficos.Os botões invertidos são transparentes. Quando o usuário clica no botão invertido, os gráficos do botão
são ressaltados.
Os botões invisíveis permanecem invisíveis e não são ressaltados quando se clica neles. A ação resultante, como
a de abrir uma página diferente, indica que o botão foi clicado. Um botão invisível deve ser localizado sobre o
texto ou sobre um gráfico que denote sua função; o usuário clica no texto ou gráfico e o botão é ativado.
Botões 3D e Botões de imagem: a família de botões 3D (botões 3D, caixas de seleção 3D e botões rádio 3D)
e os botões de imagem incluem numerosas propriedades específicas. Estes botões são descritos Botões 3D,
caixa de seleção 3D e botões de opção 3D e Botões imagem.
Gestão das ações dos botões
Os botões com ação estandarte se tornam cinzas automaticamente quando é necessário durante a execução do
formulário. Por exemplo, se é mostrado o primeiro registro de uma tabela, o botão primeiro registro aparecerá
atenuado. Você cria um botão escolhendo o tipo de botão da lista suspensa Tipo. Logo escolhe a ação automática do
botão da lista suspensa ação automática (ver Ações padrões):
- 306 -
Nota: Da mesma forma você pode utilizar o comando hierárquico Ação automática do menu contextual do editor
(clique direito no objeto).
Sem importar o tipo de botão, você deve selecionar um valor da lista. Se você prefere que o botão realize uma ação
que não está na lista, escolha “Sem ação” e escreva um método que defina a ação do botão (ver Editar Métodos).
Geralmente, você ativa o evento On Clicked na página Eventos e o método é executado apenas quando se clica no
botão.
As variáveis associadas aos botões (padrão, invertidas, invisíveis, de opção, de imagem, ou caixas de seleção) são
inicializadas em 0 quando o formulário se abre primeiro em modo Desenho ou Aplicação. Quando o usuário clica em
um botão a variável passa a 1.
Para uma descrição de cada ação, consulte Ações padrões.
Nota de compatibilidade: Nas versões anteriores de 4D, um "efeito secundário" permite ser beneficiado de um botão
personalizado de ativação/desativação automática se lhe da o mesmo nome de variável que um botão com ação
estandarte. Por exemplo, se seu formulário contém um botão v1 com ação estandarte e um botão personalizado cujo
nome de variável também é v1, este último se ativa/desativa automaticamente em função do estado do botão
estandarte. Este funcionamento foi corrigido a partir de 4D v12 e agora a ativação/desativação de cada botão dever ser
lidada de forma independente.
- 307 -
Botões 3D, caixa de seleção 3D e botões de opção 3D
A família de botões 3D inclui botões 3D, caixas de seleção 3D e botões de opção 3D. Estes objetos são
estruturalmente idênticos; a única diferença é o tatamento da variável associada:
A variável associada de um botão é igual a 0 quando se abre o formulário (estado padrão); é igual a 1 quando o
usuário clica no botão (estado pressionado); logo o botão retorna a seu estado padrão e é igual a 0 novamente.
A variável associada a uma caixa de seleção 3D é igual a 0 quando a caixa não está marcada e é igual a 1
quando a caixa está marcada. Diferentemente dos botões, a caixa de seleção 3D se mantém em seu estado (0
ou 1) até que o usuário a seleciona novamente. Para maiores informações, consulte o parágrafo Caixas de
seleção.
Os botões de opção 3D funcionam em grupos; a variável do botão selecionado é igual a 1, e dos outros a 0. A
variável pode ser igual a 0 ou a 1 quando se abre o formulário. Para maiores informações, consulte o parágrafo
Botões de opção e botões imagem de opção.
A família de botões 3D oferece numerosas propriedades específicas, que podem ser utilizadas para estabelecer
interfaces perfeitamente integradas aos diferentes sistemas operacionais. Mais especificamente, é possível aplicar
diferentes estilos pré-definidos aos botões 3D (botões bevel, botões push, etc.) ou associar menus suspensos a eles.
É possível obter um grande número de variações ao combinar as diferentes propriedades
Título
Esta propriedade permite inserir uma etiqueta no botão. A fonte e o estilo desta etiqueta podem ser definidas no tema
“Texto”. Você pode forçar um retorno de carro na etiqueta utilizando o caractere \ (barra reversa).
Para inserir uma "\" na etiqueta, introduza "\\".
Por padrão, a etiqueta se localiza no centro do botão. Quando o botão também tem um ícone, é possível modificar a
localização relativa destes dois elementos utilizando a propriedade Posição Título/Imagem.
É possível esconder o título deselecionando a opção Título visível. Neste caso, o ícone se localiza automaticamente no
centro do botão.
- 308 -
Para a tradução do banco, você pode introduzir na área da etiqueta de um botão uma referência XLIFF ou STR# (ver
Apêndice C: arquitetura XLIFF).
Estilo de botão
Esta propriedade permite definir a aparência geral do botão. O estilo também influencia na disponibilidade de certas
opções. Os seguintes estilos estão disponíveis:(ilustrações Windows/Mac OS):
Nenhum (valor padrão)
Um botão 3D com o estilo “Nenhum” é similar a um botão invisível: não se vê seu contorno. Mesmo assim, possui
todas as opções de botões 3D.
Em Mac OS, não é possível mostrar o triângulo indicando a associação a um menu pop-up.
Fundo modificado
Este estilo corresponde aos botões inversos, exceto que quando o usuário clique neste tipo de botão se obtém
um efeito 3D ao mover a imagem localizada sob o botão..
Quando o estilo “Fundo modificado” estiver selecionado, nenhuma opção estará disponível.
Pulsador
Um botão 3D com o estilo “Pulsador” tem a aparência de um botão padrão do sistema. Mesmo assim, se
beneficia das opções dos botões 3D, com exceção da propriedade “Com menu suspenso”.
Botão de barra
Este estilo de botão 3D está particularmente destinado para uma integração em uma barra de ferramentas.
Em Windows, seu contorno aparece quando se passa o mouse sobre ele. Quando se usa a propriedade “Com
menu suspenso”, aparece um triângulo à direita e no centro do botão.
Em Mac OS, o contorno do botão nunca aparece. Quando você tem a propriedade “Com menu suspenso” , um
triângulo aparece no canto inferior direito do botão.
Personalizado
Este estilo se beneficia de las opciones de botones 3D, con excepción de la propiedad “Con menú
desplegable”.Este estilo de botão 3D aceita uma imagem de fundo personalizada e permite controlar vários
parâmetros adicionais (rolagem de ícone e margens). Para maiores informações, consulte o parágrafo “Botões
3D personalizados” a seguir. Este estilo utiliza as opções de botões 3D, com exceção da propriedade “Com
menu suspenso”.
Círculo
Em Mac OS X, um botão 3D com o estilo “Círculo” aparece como um botão de sistema redondo. Dois conjuntos
de estilos estão disponíveis para o círculo, dependendo do tamanho do botão no formulário. Este estilo se
aproveita das opções de botões 3D, com exceção da propriedade “Com menu suspenso”.
Em Windows, este estilo de botão é idêntico ao estilo “Nenhum” (o círculo ao fundo não é levado em
consideração).
Quadro de sistema
Em Mac OS X, um botão 3D com estilo “Quadro de sistema” aparece como um quadro de sistema. Este estilo se
aproveita das opções de botões 3D, com exceção da propriedade “Com menu suspenso”.
Em Windows, este estilo de botão é idêntico ao estilo “Nenhum” (o quadrado ao fundo não é levado em
consideração).
Office XP
Um botão 3D com o estilo “Office XP” tem as seguintes características::
As cores de seu contorno e fundo se baseiam nas cores do sistema,.
Sob Windows, em uso, seu contorno só aparece quando o mouse passa sobre ele.
Este estilo aproveita as opções de botões 3D.
Bevel
- 309 -
Em Mac OS, um botão “Bevel” aparece como um botão do sistema padrão. Um botão de estilo Bevel aproveita as
opções de botões 3D, incluindo a propriedade “Com menu suspenso”.
Em Windows, este estilo de botão é parecido ao estilo “botão de barra”, a única diferença é o triângulo que indica
a presença de um menu associado localizado na parte inferior direita do botão.
Bevel arredondado
Em Mac OS, um botão “Bevel arredondado” é similar a um botão “Bevel” exceto pelos seus contornos que são
arredondados.
Em Windows, este estilo de botão é idêntico ao estilo “Bevel”.
Contrair/Exibir
Este estilo de botão permite adicionar um ícone padrão de contração/exibição. Esses botões são usados
nativamente nas listas hierárquicas. Em Windows, o botão tem a aparência de um [+] ou um [-]; em Mac OS, se vê
como uM triângulo apontando para cima ou para baixo. Este estilo se utiliza unicamente com as caixas de seleção
3D, onde os dois estados do botão correspondem aos estados marcado/desmarcado da caixa.
Ajuda
Este estilo de botão permite mostrar um botão de ajuda padrão do sistema. Pode usar esse estilo para adicionar
botões de ajuda "sistema" em seus formulários.
Texturizado OS X
Em Mac OS X, um botão "Texturizado" é um botão padrão que mostra um degradê de cinza. Sua altura está
predefinida: não é possível aumentar ou diminuir o botão. Esse estilo de botão pode usar todas as opções de
botões 3D.
Em Windows, este estilo equivale a um botão pulsador, o qual pode ter um menu pop-up e a característica
especial de ser transparente em Vista.
Gradiente OS X
Em Mac OS X, um botão "Gradiente" é um botão de sistema bicolor. Este estilo de botão pode utilizar todas as
opções de botões 3D.
Em Windows, este estilo é equivalente a um botão pulsador, o qual poede ter um menu pop-up.
Adicionar um ícone ao botão 3D
É possível adicionar um ícone a todos os estilos de botões 3D (exceto o estilo “Fundo deslocado”):
O manejo de ícones se realiza utilizando as propriedades: Fonte da imagem, Nome/No da imagem.
Fonte da imagem
Ao igual que os botões de imagem, o ícone de um botão 3D pode vir de três fontes diferentes: Variável,
Biblioteca de imagens, Arquivo de recursos ou Arquivo. Uma vez designada a fonte, pode introduzir o nome
ou o número de imagem na propriedade "Nome/No da imagem".
Nome/No da imagem
Uma vez definida a fonte da imagem, introduza o nome (se a imagem é uma variável ou vem da biblioteca de
imagens) ou o número (se a imagem viene de la biblioteca de imagens ou de um arquivo de recursos) ou a rota
de acesso da imagem (se a imagem vem de um arquivo de imagem ); neste último caso, a rota de acesso deve
ser relativa a pasta Resources do banco (ver o parágrafo Referenciar automaticamente arquivos de imagem).
Escreva 0 nesta propriedade para não associar uma imagem ao botão 3D.
Nota: pode associar uma imagem a un botão por arrastar e soltar uma imagem da biblioteca de imagens ou de
um arquivo de disco.
Número de estados
Esta propriedade permite precisar o número exato de estados presentes na imagem utilizada como ícone pelo
botão 3D. Em geral, um ícone de botão tem 4 estados: ativo, pressionado, mouse over e inativo. Na imagem
fonte, os estados deven ser localizadas verticalmente:
- 310 -
Título visível/ ícone visível
Quando o botão inclui um título e uma imagem, pode ocultar um ou outro deselecionar a opção Título visível ou
Ícone visível (ou ambas). Quando um elemento está oculto, é substituído por outro automaticamente no centro do
botão.
Posição Título/Imagem
Esta propriedade permite modificar a localização relativa del título del botão con relación al ícone asociado. Esta
propiedade não tem efeito quando o botão contém só um título (sem imagem associada) ou uma imagem (sem título).
Por padrão, quando um botão 3D contém um título e uma imagem, o texto se localiza abaixo da imagem.
Este é o resultado das diferentes opções desta propriedade:
Esquerda: o texto se localiza a la izquierda do ícone. O conteúdo do botão está alinhado a la derecha.
Acima: o texto se localizado arriba do ícone. O conteúdo de botão está centrado.
Direita: o texto se localiza a la derecha do ícone. O conteúdo do botão está alinhados a esquerda.
Abaixo: o texto se localiza debajo do ícone. O conteúdo do botão está centrado.
Centro: o texto do ícone está centrado vertical e horizontalmente no botão. Este parâmetro é útil, por exemplo,
para texto incluído num ícone
Com menu pop-up
Esta propriedade permite distribuir um símbolo na forma de triângulo no botão 3D, o qual indica que há um menu pop up
associado:
A aparência e localização deste símbolo depende do estilo do botão e da plataforma atual.
Os estilos de botões 3D que aceitam a propriedade “Com menu suspenso” são os seguintes:
Nenhum
Botão de barra
Bevel
Bevel arredondado
Office XP
OSX Textura
OSX Gradiente
Ligado e separado
Para associar um símbolo de menu suspenso a um botão 3D, tem duas opções: Ligado e Separado.
Separado
Ligado
- 311 -
Nota: a disponibilidade efetiva de um modo “separado” depende do estilo de botão e da plataforma.
Cada opção especifica a relação entre o botão e o menu pop up associado:
Quando o menu pop-up está separado, ao clicar na parte esquerda do botão se executa diretamente a ação atual
de botão; esta ação pode ser modificada utilizando o menu pop-up acessível desde a parte direita do botão.
Quando o menu pop-up está ligado, um clique no botão só exibe o menu pop-up. Só a seleção da ação no menu
pop up provoca sua execução.
Estas opções influem igualmente a gestão de eventos de formulário para o botão (para maior informação, consulte o
manual de Linguagem de 4D).
Administrar o menu suspenso
É importante notar que a propriedade “Com menu suspenso” só maneja o aspecto gráfico do botão. A exibição do
menu suspenso ( pop-up) e seus valores devem ser manejados completamente pelo desenvolvedor, especialmente
utilizando eventos de formulário e os comandos Dynamic pop up menu e Pop up menu.
Botões 3D
Quando se seleciona o estilo de botão 3D “Personalizado”, várias propriedades adicionais estão disponíveis: Fonte do
fundo, Nome/número do fundo, ícone visível, margem horizontal e margem vertical.
Fonte do fundo: esta propriedade permite selecionar a imagem que será desenhada ao fundo do botão. Da
mesma forma que para o ícone, é possível indicar que a imagem provém de uma variável, da biblioteca de
imagens ou de um arquivo de recursos ou de um arquivo no disco.
Nome/Número do fundo: uma vez selecionada a fonte, é possível indicar o nome e o número da imagem nesta
área.
Da mesma forma que para os ícones, as imagens de fundo podem conter quatro áreas verticais distintas, que
serão utilizadas por 4D para representar os quatro estados padrões do botão: ativo, ao clicar, ao passar por
cima, e desativado. Observe que o efeito produzido ao clicar também pode ser controlado utilizando a
propriedade Sangria ícone.
Sangria ícone Esta propriedade permite definir um valor de sangria personalizado (em pixels) que será utilizado
em caso de que se clique no botão: o título do botão será movido para a direita e para baixo o número de pixels
introduzido. Esta função permite aplicar um efeito 3D personalizado quando se clica no botão.
Margem horizontal/Margem vertical
Estas propriedades lhe permitem definir o tamanho (em pixels) de margens internas do botão. Estas margens
delimitam as áreas que o ícone do botão 3D e o título não devem sobrepassar.
Este parâmetro é útil, por exemplo, quando a imagen de fundo contém bordas:
Botão 3D personalizado sem margem
Botão 3D personalizado com margem de 13 pixels
- 312 -
Botões imagem
Usar
Um botão imagem pode ter diferentes estados, por comparação, um botão padrão aceita três estados: ativo,
desativado e pressionado. Como seu nome indica, um botão imagem representa cada estado com uma imagem
diferente.
Os botões imagem podem ser utilizados de duas maneiras:
como botões de comando em um formulário. Neste caso, o botão imagem inclui geralmente quatro estados
diferentes: ativo, desativado, pressionado e ao passar com o mouse em cima. Este modo de funcionamento é
utilizado pelo assistente de criação de formulários para a maioria de telas de formulários.
como botão imagem permite ao usuário escolher entre várias opções. Neste caso, um botão imagem pode ser
utilizado em lugar de um menu imagem suspenso. Com Menu Imagem suspenso, todas as opções são
apresentadas simultaneamente (como os elementos no menu suspenso), enquanto que o botão imagem mostra
as opções consecutivamente (a medida que o usuário clica no botão).
Este é um exemplo de um botão imagem. Suponha que você queira dar aos usuários de uma aplicação
personalizada a oportunidade de escolher a linguagem da interface para a aplicação. Você pode implementar a
opção como um botão imagem em uma caixa de diálogo personalizada de propriedades, como se mostra a
seguir:
Ao clicar no objeto muda a imagem.
O botão imagem é implementado da seguinte maneira. Primeiro, se prepara um gráfico no qual a série de
imagens esteja organizada em filas, colunas, ou na tabela. É possível adicionar este gráfico à [#title id="581"/], a
uma variável imagem, ou a um arquivo imagem. O botão de imagem está desenhado para mostrar somente uma
imagen por vez de uma série de imagens
É possível organizar as imagens em colunas, filas ou em tabelas (como é mostrado na imagem anterior). Quando
você organiza imagens em uma tabela, as imagens são numeradas da esquerda para a direita, fila por fila,
começando por 0.
Por exemplo, a segunda imagem da segunda fila de uma tabela de quatro filas e três colunas, é a de número 4.
- 313 -
Nota: A Biblioteca de imagens inclui características que lhe permitem organizar uma imagem como uma tabela
de miniaturas. Quando uma imagem foi definida como uma tabela de miniaturas, é possível criar um botão de
imagem arrastando o nome da imagem da Biblioteca.
Propriedades
Os botões de imagem tem as seguintes propriedades específicas:
No tema “Imagem”, defina a fonte da imagem utilizando a lista suspensa “Fonte”. É possível escolher entre
Variável, Biblioteca de imagens, Arquivo de recursos e Arquivo. Uma vez definida a fonte da imagem, introduza o
nome (se a imagem é uma variável) ou o número (se a imagem provém da biblioteca de imagens ou de um
arquivo de recursos) ou a rota de acesso (se a imagem vem de um arquivo de imagem) relativa à pasta
Resources do banco de dados” (ver o parágrafo “ Referenciar automaticamente arquivos de imagem).
No tema “Recorte”, defina o número de filas e colunas que compõem a tabela de miniaturas. Em nosso exemplo,
utilizamos uma imagem que consta de três colunas e duas filas.
No tema “Animação”, é possível definir o modo de visualização do botão imagem e seu funcionamento. É possível
combinar várias opções. Este ponto é descrito com mais detalhes no parágrafo a seguir.
Nota: A variável associada a um botão de imagem retorna o número de índice, na tabela de miniaturas, da
imagem mostrada atualmente. A numeração de imagens da tabela começa por 0.
Animação
Aqui estão as diferentes opções de visualização e funcionamento de botões de imagem. Naturalmente, estas opções
podem ser combinadas.:
<Nenhuma opção marcada>
Mostra a imagem seguinte da série quando o usuário clica no botão; mostra a imagem anterior da série quando o
usuário pressiona a tecla Shift e clica. Quando o usuário alcança a última imagem da série, a imagem não muda
quando o usuário clica novamente. Ou seja, o botão não volta para a primeira imagem da série.
Alterar constantemente ao clicar
É similar ao anterior exceto que o usuário pode manter presionado o botão do mouse para mostrar a imagem
continuamente (ou seja, como uma animação). Quando o usuário alcança a última imagem, o objeto não volta
para a primeira imagem.
Voltar ao início
É similar ao anterior exceto que as imagens são mostradas em um ciclo contínuo. Quando o usuário alcança a
última imagem e clica novamente, a primeira imagem aparece e assim sucessivamente.
Alterar ao passar o cursor em cima
O conteúdo do botão de imagem é modificado quando o cursor passa por cima. A imagem inicial é restabelecida
quando o cursor deixa a área do botão. Este modo é utilizado com frequência em aplicativos multimídia ou em
documentos HTMLA imagem mostrada é a última da tabela de miniaturas, a menos que esteja selecionada a
opção Usar Última Imagem Quando Desativado. Se esta opção está selecionada, a imagem que se exibe é a
miniatura seguinte à última.
Voltar ao soltar o clique
Este modo funciona com duas imagens. Mostra a primeira imagem todo o tempo exceto quando o usuário clica
no botão. Neste caso, a segunda imagem é mostrada até que o usuário solte o botão do mouse, com o qual volta
à primeira imagem. Este modo lhe permite criar um botão de ação com uma imagem diferente para cada estado
(normal e pressionado). É possível utilizar este modo para criar um efeito 3D ou mostrar qualquer imagem que
represente a ação do botão.
Usar Última Imagem se Desativado
Este modo lhe permite definir a última miniatura como a miniatura a se mostrar quando o botão estiver inativo.
Quando este modo está selecionado, 4D mostra a última miniatura quando o botón está inativo. A miniatura
utilizada quando o botão está inativo é tratada a parte por 4D: quando você combina esta opção com as opções
“Mudar continuamente ao clicar” e “Voltar para o início”, a última imagem é excluída da sequência associada com
o botão e só aparece quando o botão está inativo.
Mudar a cada x tiques
Este modo permite fazer um ciclo através do conteúdo do botão de imagem a uma velocidade específica (em
tiques). Por exemplo, se você põe 10, as miniaturas mudarão a cada 10 tiques. Neste modo, todas as outras
opções são ignoradas.
Nota: Observe que a opção Transparente (tema “Aparência”) também pode ser utilizada para definir a representação
do botão de imagem (torna o fundo da imagem transparente).
Por exemplo, você deseja definir um botão que aceite os seguintes modos: Voltar ao soltar o clique, Mudar ao passar o
cursor por cima e Usar última imagem quando desativado.
No caso de uma tabela de miniaturas que tem uma fila e quatro colunas, cada miniatura corresponde aos seguintes
estados: padrão, pressionado, curso por cima e desativado.
- 314 -
Na Lista de propriedades é possível definar as seguintes propriedades: 1 fila, 4 colunas bem como as opções Voltar ao
soltar o clique, Mudar ao passar o cursor por cima e Usar última imagem quando desativado.
- 315 -
Grade de botões
Uso
Uma grade de botões é um objeto transparente localizado sobre uma imagem. A imagem deve representare uma
tabela. É possível utilizar uma grade de botões para determinar onde o usuário deve clicar no gráfico. Seu método de
objeto utiliza o evento On Clicked e toma as medidas apropriadas dependendo da localização do clique.
Em 4D, uma grade de botões é utilizada como uma paleta de cores:
Os botões na grade estão numerados da parte superior esquerda para a parte inferior direita. Neste exemplo, a grade é
de 16 colunas por 16 filas. O botão situado na parte superior esquerda é o botão número 1. O último botão à direita da
segunda fila é o botão número 32.
Para criar uma grade botões, adicione uma imagem de fundo ao formulário e coloque uma grade de botões sobre a
imagem. Especifique o número de filas e colunas nas áreas de entrada correspondentes do tema “Recorte”.
Ação Ir para a página
É possível atribuir a ação Ir para a página a uma grade de botões. Quando esta ação está ativa, 4D mostra
automaticamente a página do formulário que corresponde ao número do botão selecionado na grade de botões.
Por exemplo, se o usuário seleciona o décimo botão da grade, 4D mostrará a décima página do formulário atual (se
existir).
Se você deseja manejar você mesmo o efeito da seleção de um botão, selecione Sem ação.
Para mais informação consulte a seção Ações padrões.
- 316 -
Caixas de seleção
Uso
Uma caixa de seleção é utilizada para introduzir ou mostrar dados bionários (verdadeiro-falso). Uma caixa de seleção é
um tipo de botão que pode estar selecionando ou desmarcando. Seu efeito é controlado por um método. Como todos
os botões, uma caixa de seleção se inicia no 0 quando o formulário é aberto pela primeira vez. O método associado a
uma caixa de seleção é executado quando a caixa de seleção é selecionada.
Geralmente uma caixa de seleção mostra o texto junto a um quadrado pequeno. Este texto é definido na área Título do
tema “Objetos” na lista de propriedades. É possível introduzir nesta área uma etiqueta em forma de referência XLIFF ou
STR# (ver MissingRef).
Quando o usuário clica no objeto, a caixa é marcada e seu valor é 1. Quando não está marcada, seu valor é 0. Todas as
caixas de seleção em um formulário podem ser marcadas ou desmarcadas.
Um grupo de caixas de seleção permite ao usuário selecionar várias opções.
Diferente de um campo booleano com formato de caixa de seleção, os valores da variável da caixa de seleção não são
salvos automaticamente. É necessário utilizar um método para manejar a variável.
Nota: As caixas de seleção 3D tem o mesmo funcionamento que as caixas de seleção porém sua aparência (por
exemplo, a representação do estado selecionado/não selecionado) é definida pelas propriedades da família de botões
3D. Para maiores informações, consulte o parágrafo Botões 3D, caixa de seleção 3D e botões de opção 3D.
Caixa de seleção de Três Estados
Os objetos de tipo caixas de seleção aceitam um terceiro estado. O terceiro estado é um estado intermediário, usado
geralmente para visualização. Este estado permite, por exemplo, indicar que uma propriedade está presente em uma
seleção de objetos, porém não em todos os objetos.
Para que uma caixa de seleção tome controle deste terceiro estado, você deve definir a propriedade Três estados no
tema “Exibir” da Lista de propriedades:
- 317 -
Esta propiedade está disponível somente para caixas de seleção padrão associadas a variáveis numéricas, as caixas
de seleção 3D e as caixas de seleção para campos booleanos não podem utilizar a propriedade Três estados (um
campo booleano não puede estar em um estado intermediário).
A variável associada à caixa de seleção retorna o valor 2 quando a caixa de seleção está no estado intermediário.
Dica: no modo entrada, as caixas de seleção mostram cada estado sequencialmente, na seguinte ordem: não
selecionado/ selecionado/intermediário/não selecionado, etc. O estado intermediário geralmente não é muito útil no
modo entrada; no código, simplesmente força o valor da variável a 0 quando toma o valor 2 com o fim de passar
diretamente do estado selecionado ao estado não selecionado.
- 318 -
Botões de opção e botões imagem de opção
Os botões de opção e os botões de opção de imagem são objetos que permitem ao usuário selecionar um valor ou
imagem entre um grupo de valores ou de imagens. Um botão de opção aparece como um círculo seguido por um texto.
Os botões de opção de imagem mostram um ícone ou uma imagem e estão sobre uma imagem.
Nota: Os botões de opção 3D funcionam igual, porém sua aparência é definida pelas propriedades da família de
botões 3D. Para maiores informações, consulte o parágrafo Botões 3D, caixa de seleção 3D e botões de opção
3D.
Cada tipo de botão de opção é selecionado da mesma maneira: você clica no objeto para selecioná-lo. Também é
possível clicar em um botão de opção de imagem marcado para desmarcá-lo, porém não se pode fazer isso com um
botão de opção.
Os botões de opção de imagem são similares aos botões inversos em que são transparentes até que sejam
selecionados. Quando são selecionados, invertem a imagem atrás deles até que outro botão de opção seja
selecionado.
A parte restante desta seção utiliza o termo “botão de opção” para todos os tipos de botões de opção.
Os botões de opção são utilizados em forma de conjuntos coordenados: somente um botão por vez pode ser
selecionado no conjunto. Para funcionar de maneira coordenada, um conjunto de botões de opção deve estar agrupado
no editor de formulários. Para fazer isso, é possível utilizar o comando Grupo no menu Objeto ou o botão
correspondente da barra de ferramentas do formulário.
Em versões anteriores de 4D, o funcionamento coordenado de um conjunto de botões de opção era obtido ao dar a
mesma letra inicial a suas variáveis associadas (por exemplo, m_botao1, m_botao2, m_botao3, etc.). Por razões de
compatibilidade, este principio é mantido por padrão em bancos de dados convertidos. No entanto, é possível forçar o
uso deste novo modo de utilização nas Preferências (consulte o parágrafo Página Compatibilidade).
Os efeitos dos botões de opção são controlados com métodos. Como todos os botões, um botão de opção é
inicializado em 0 quando o formulário é aberto pela primeira vez. Um método associado a um botão de opção é
executado quando se seleciona o botão.
O exemplo a seguir representa um grupo de botões de opção 3D utilizado em uma base de dados de uma coleção de
videos para introduzir a velocidade de gravação. (SP, LP, ou EP).
Ao selecionar um botão de opção de um grupo o botão se põe em 1 e os outros botões do grupo em 0. Só é possível
selecionar um botão de opção ao mesmo tempo.
Nota: também pode associar as variáveis de tipo booleano aos botões de opção. Nesse caso, quando um botão de
um grupo for selecionado, sua variável é verdadeira e as variáveis para os outros botões de opção são falsas.
O exemplo a seguir é de um botão de opção imagem. O botão de opção imagem selecionado aparece com fundo
preto:
O valor contido em um objeto de botão de opção não é salvo automaticamente; os valores de botões de opção devem
ser armazenados em suas variáveis e manejados com a ajuda de métodos.
- 319 -
Menus suspensos/Listas suspensas
Apresentação
Os pop-up/listas suspensos, são objetos que permitem ao usuário selecionar um elemento de uma lista. Os elementos
que aparecem nas listas suspensas são manipulados utilizando um array ou uma lista de valores por padrão.
Um array é uma lista de valores guardados em memória referenciados pelo nome do array (ver Arrays e objetos de
formulário). Um pop-up/listas suspensas mostra um array como uma lista de valores que aparece quando se clica
sobre ele.
Os nomes “Pop-up“ e "Lista suspensa” se referem aos mesmos objetos; “Pop-up” é parte da terminologia de Mac OS e
“Lista suspensa” de Windows.
Como mostram os exemplos a seguir, a aparência destes objetos é ligeiramente diferente dependendo da plataforma:
Windows
Mac OS
Utilizar um array
Um array é uma lista de valores guardados em memória referenciados pelo nome do array (ver Arrays e objetos de
formulário). Um pop-up/listas suspensas mostra um array como uma lista de valores que aparece quando se clica
sobre ele.
Os objetos pop-up/listas suspensas são iniciados ao carregar uma lista de valores em um array. Pode-se fazer isso de
várias formas:
Introduzir uma lista de valores padrão nas propriedades do objeto. Para fazê-lo, clique no botão Editar... no tema
“Fonte de dados” da Lista de Propriedades. Para maiores informações, consulte Listas de valores padrão. Os
valores padrão são carregados automaticamente em um array. É possível fazer referência ao array utilizando o
nome da variável associada ao objeto.
Antes que o objeto seja mostrado, execute o código que atribua os valores aos elementos do array. Por exemplo:
ARRAY TEXT(aCidades;6)
aCidades{1}:="São Paulo"
aCidades{2}:="Rio de Janeiro"
aCidades{3}:="Curitiba"
aCidades{4}:="Brasília"
aCidades{5}:="Salvador"
aCidades{6}:="Porto Alegre"
Também neste caso, o nome da variável associada ao objeto no formulário deve ser aCidades.
Este código deveria ser localizado no método de formulário e executado quando se produz o evento de formulário
On Load.
Antes que o objeto seja mostrado, carregue os valores de uma lista no array utilizando o comando LIST TO
ARRAY. Por exemplo,
LIST TO ARRAY ("Cidades";aCidades)
Neste caso, o nome da variável associada ao objeto no formulário deve ser aCidades.
Este código pode ser executado no lugar das declarações de atribuição anteriores
Se você precisa guardar em um campo a escolha do usuário, é necessário utilizar uma declaração de atribuição que
seja executada depois de que se aceite o registro. Uma declaração completa tipo Case no método de objeto seria vista
- 320 -
como esta:
Case of
:(Form event=On Load)
LIST TO ARRAY("Cidades";aCidades)
If(Record number([Pessoas])<0) `novo registro
aCidades:=3 `mostrar um valor padrão
Else `registro existente, mostrar valor armazenado
aCidades:=Find in array(aCidades;Cidade)
End if
:(Form event=On Clicked) `A seleção se modifica
Cidade:=aCidades{aCidades} `o campo recebe um novo valor
:(Form event=On Validate)
Cidade:=aCidades{aCidades}
:(Form event=On Unload)
CLEAR VARIABLE(aCidades)
End case
Na página Eventos da janela Lista de propriedades, você deve escolher os eventos que você testou em sua declaração
tipo Case..
Os arrays sempre contém um número finito de elementos. A lista de elementos é dinâmica e pode ser modificada por
um método. Os elementos em um array podem ser modificados, organizados e adicionados.
Para maiores informações sobre a criação e utilização de um array, consulte o capítulo sobre arrays no capítulo Arrays
do Manual de Linguagem.
Utilizar uma lista de seleção
Se deseja utilizar um pop-up/lista suspensa para manipular os valores de um campo ou de uma variável listada, 4D lhe
permite referenciar diretamente o campo ou a variável como fonte de dados do objeto. Isto faz com que seja mais fácil a
gestão dos campos/variáveis listados.
Nota: se utilizada uma lista hierárquica, será mostrará e pode ser selecionado o primeiro nível.
Por exemplo, no caso de um campo de "Cor" que só pode conter os valores "Branco", "Azul", "Verde" ou "Vermelho",
agora é possível criar uma lista que contém estes valores e associar a um objeto pop -up de menu que referencia ao
campo "Cor" 4D. 4D se encarrega então da gestão automática da entrada e a visualização do valor atual no formulário
Para associar um menu pop-up/lista suspensa ou um combo box a um campo ou variável, só é introduzido diretamente
o nome do campo ou da variável na área Nome da variável do objeto:
Quando se executa o formulário, 4D gerencia automaticamente o menu suspenso ou o combo box durante a entrada ou
a visualização: quando um usuário escolhe um valor, é guardado no campo, quando mostrado o formulário, este valor de
campo é mostrado no menu suspenso:
Nota: não é possível combinar este princípio com o uso de um array para inicializar o objeto. Se introduz um nome de
campo na área de Nome de variável, então deve utilizar uma lista de opções.
- 321 -
Guardar como
Ao relacionar um objeto pop-up/lista suspensa a uma lista de seleção com um campo, pode utilizar a opção Guardar
como Valor/Referência disponível no tema de "Fontes de dados" da Lista de propriedades.
Esta opção lhe permite otimizar o tamanho dos dados guardados. Para obter mais informação, consulte Guardar
como Valor ou Referência .
Ação Ir para a página
É possível atribuir a ação automática Ir para a página a um objeto pop-up/lista suspensa (tema “Ação” da Lista de
propriedades). Quando esta ação está selecionada, 4D mostra automaticamente a página do formulário que
corresponda ao número do elemento selecionado na lista.
Por exemplo, se o usuário seleciona o terceiro elemento da lista, 4D mostrará a terceira página do formulário atual (se
existe). Se deseja manejar você mesmo o efeito da seleção de um elemento, selecione Sem ação.
- 322 -
Combo Boxes
Um combo box é similar a uma lista suspensa, exceto pelo fato de que o objeto aceita a entrada de texto pelo usuário e
que dispõe de duas opções específicas.. Um combo box é inicializado da mesma forma que uma lista suspensa (ver
Menus suspensos/Listas suspensas).
Se o usuário introduz texto no combo box, preenche-se o elemento 0 do array. Em outras palavras, deve considerar o
combo box como uma zona editável que utiliza um array como um conjunto de valores padrão.
Utilize o evento On Data Change para manejar os valores de entrada para a área editável, assim como você utilizaria
um objeto da área editável. Para mais informação, consulte a descrição do comando Form event no manual de
Linguagem de 4D.
Opções de combo box
Os objetos de tipo Combo box aceitam duas opções relativas as listas de seleção associadas a eles: Inserção
automática e Exclusões (lista de valores excluídos).
Inserção automática
A opção Inserção automática se encontra no tema "Fonte de dados" da Lista de propriedades para os objetos de tipo
combo box:
Nota: esta opção também está disponível para as colunas do quadro de lista, já que suas células são mostra como
quadros combinados quando uma coluna está associado com uma lista de seleção.
Quando se ativa esta opção, se um usuário introduz um valor que não se encontra na lista de seleção associada ao
objeto, este valor se adicione automaticamente a lista armazenada na memória. Pode associar listas de seleção
utilizando o comando OBJECT SET LIST BY NAME ou OBJECT SET LIST BY REFERENCE.
Por exemplo, dada uma lista de opção é associada ao combo box "País" e contém "França, Alemanha, Itália”. Se o
usuário introduz "Espanha" e se a opção Inserção Automática está selecionada, o valor "Espanha" se adicione
automaticamente a lista na memória:
Naturalmente, o valor introduzido não deve pertencer a lista de valores excluídos associados ao objeto, se foi definido
(ver o seguinte parágrafo).
Nota: se a lista é criado a partir de uma lista definida no modo Desenho, a lista original não se modifica.
Se a opção Inserção automática não está selecionada, o valor introduzido se armazena no objeto, mas não na lista
em memória.
Lista de excluídos
A opção Lista de excluídos se oferece no tema "Rango de valores" dos objetos de tipo combo box, permitindo
associar uma lista de valores excluídos a estes objetos. Se o usuário introduz um valor que pertence a esta lista, sua
entrada se rejeita automaticamente (ver Lista de valores excluídos).
Nota: a possibilidade de associar uma lista de valores obrigatórios não está disponível para os combo boxes. Em uma
interface, se um objeto deve propor uma lista finita de valores obrigatórios, então deve utilizar um objeto de tipo de lista
deslocável.
- 323 -
Menus suspensos hierárquicos e listas hierárquicas
Um menu suspenso hierárquico tem um submenu associado a cada um de seus elementos. Este é um exemplo de um
menu hierárquico:
Da mesma forma, uma lista hierárquica tem uma sublista associada a cada elemento na lista. Este é um exemplo de
uma lista hierárquica:
Nota: Nos formulários, os menus hierárquicos estão limitados a dois níveis. No entanto, os objetos de tipo lista
hierárquica não estão limitadas.
É possível expandir ou contrair um elemento hierárquico fazendo clique nos ícones triangulares.
É possível controlar se um elemento em uma lista hierárquica é modificável pelo usuário. Se um elemento em uma lista
hierárquica é editável, o usuário pode editá-lo utilizando a combinação Alt+clique (Windows) / Opção+clique (Mac
OS), ou com um longo clique no texto do elemento.
Se você preenche uma lista hierárquica utilizando uma lista criada no editor de listas, a propriedade “modificável” dos
elementos da lista está definida pela opção Elemento modificável do editor de listas. Para maiores informações,
consulte o parágrafo Definir propriedades de lista.
Os menus suspensos hierárquicos e as listas hierárquicas são controladas com a ajuda de comandos de linguagem de
listas hierárquicas. O princípio consiste em atribuir a referência da lista hierárquica à variável associada ao objeto no
editor de formulários. Para maior informação, consulte a seção Listas Hierárquicas do Manual de Linguagem 4D.
Também pode associar referências de listas hierárquicas as listas de seleção de objetos de formulários (fontes, valores
obrigatórios e valores excluídos) com os comandos OBJECT SET LIST BY REFERENCE ou [#cmd id="237"/].
- 324 -
Menu Imagem suspenso
Uso
Um menu imagem suspenso mostra um array de imagens bidimensional. Um menu imagem suspenso pode ser
utilizado para substituir um menu imagem. A criação da imagem a ser utilizada com o menu imagem suspenso é similar
à criação de uma imagem para um botão de imagem.
O conceito é o mesmo que o de uma Grade de botões, exceto que a imagem é utilizada como um menu suspenso em
lugar de um objeto de formulário.
Para criar um menu pop-up imagem , você deve fazer referência a uma imagem. O exemplo a seguir utiliza a imagem
definida para os botões de imagem. Neste caso, lhe permite selecionar a linguagem de interface selecionando-a do
menu imagem suspenso. Cada linguagem é representado pela bandeira correspondente:
Como com um botão imagem suspenso utiliza uma imagem que está organizada em filas e colunas (ou em uma grade).
É possível localizar essa imagem naBiblioteca de imagens, em uma variável imagem ou em um arquivo imagem.
A etapa seguinte consiste en adicionar o menu pop-up imagem ao formulário.
Nota: A Biblioteca de imagens, inclui características que lhe permitem organizar uma imagem como uma tabela de
miniaturas. Também lhe permite visualizar os efeitos dos parâmetros atuais. Quando uma imagem se define como uma
tabela de miniaturas, você pode criar diretamente um menu imagem suspenso arrastando o nome da imagem ao
formulário enquanto pressiona a tecla Shift.
- 325 -
Propriedades
Várias propriedades específicas permitem configurar os menus imagem suspensos:
No tema “Imagem”, defina a fonte da imagem utilizando a lista suspensa “Fonte”. Você pode escolher entre
Variável, Biblioteca de imagens, Arquivo de recursos e arquivo. Uma vez definida a fonte da imagem, introduza o
nome (se a imagem for uma variável) ou o número (se a imagem vem de uma biblioteca de imagens ou um
arquivo de recursos) ou o endereço de acesso (se a imagem vem de um arquivo imagem) da imagem na área
“Nome/N°”; neste último caso, o endereço deve ser relativo à pasta Resources do banco (ver o parágrafo
Referenciar automaticamente arquivos de imagem).
No tema “Recorte”, defina o número de linhas e colunas que compõe a tabela de miniaturas.
As opções Margem horizontal e Margem vertical criam uma margem entre a borda do menu e a imagem.
Introduza os valores em pixels.
Ação Goto Page
É possível associar a ação Ir à página a um menu de imagem pop-up. Quando esta ação estiver selecionada, 4D
mostra automaticamente a página do formulário que corresponde a posição da imagem selecionada no array de
imagem. Elementos são numerados da esquerda para direita, e de cima para baixo, começando com o canto superior
esquerda.
Por exemplo, se o usuário selecionar o terceiro elemento, 4D mostrará a terceira página do formulário atual (se existir).
Se você preferir controlar você mesmo o efeito de um clique, selecione Sem ação.
Para mais informação sobre as ações padrão, consulte a seção Ações padrões.
Programar
Vocô pode administrar menus suspenso (pop-up) de imagens usando método. Do mesmo modo que para as grades de
botões, as variáveis associadas a menus imagem suspenso são definidas pelo numero do elemento selecionado no
menu imagem suspenso. Se não existir um elemento selecionado, o valor é 0. Os elementos são numerados, linha por
linha, da esquerda para direita começando pela linha superior.
- 326 -
Indicadores
Os indicadores de progresso (também chamados "termômetros"), réguas e dials são objetos que mostram valores de
forma gráfica. Os três objetos funcionam da mesma forma; a única diferencia é sua aparência. Nos referimos a estes
três objetos como indicadores.
É possível utilizar os indicadores para mostrar ou definir valores. Por exemplo, se um indicador de progresso recebe um
valor por método, ele mostra o valor. Se o usuário modifica manualmente o indicador, o valor dele muda. O valor pode
ser utilizado por outro objeto tal como um campo ou um objeto não editável.
Indicador de progresso / Dial / Régua
Tipos de Indicadores
4D oferece vários tipos de indicadores que consistem nos três tipos principais e suas variantes. Para saber como
selecionar um tipo específico de indicador, consulte a seção "Definir os tipos de indicadores" a seguir.
Barra de progresso
Tipo principal: Barra de progresso
A barra de progresso é o indicador de progresso por padrão. Pode mostrar uma barra de progressão horizontal ou
vertical. Este parâmetro é determinado pela forma do objeto que seja desenhado.
Barber shop
Tipo principal: Indicador de progressão (termômetro)
(MacOS)
(Windows)
Este tipo de termômetro mostra uma animação continua. Os termômetros “Barber shop” geralmente são utilizados para
indicar ao usuário que o programa está em processo de efetuar uma operação longa. Quando essa variante for
selecionada, as opções do tema "Graduação" se ocultam.
Quando se executa o formulário, o termômetro não se anima. A animação deve ser manejada passando um valor à
variável associada ao termômetro:
1 (ou qualquer valor diferente de 0) = Iniciar animação,
0 = Parar animação.
Nota: os termômetros “Barber shop” funcionam apenas com a aparência Sistema ou Impressão.
Barra de progresso assincrônico
Tipo principal: Indicador de progresso (termômetro)
Este indicador circular mostra também uma animação contínua. Este tipo de objeto indica que uma operação, por
- 327 -
exemplo a procura de conexão de rede, ou um cálculo em andamento. Quando essa variante estiver selecionada, as
opções do tema "Graduação" são ocultadas.
Quando se executa o formulário, o termômetro não se anima. A animação deve ser manejada passando um valor à
variável associada ao termômetro:
1 (ou qualquer valor diferente de 0) = Iniciar animação,
0 = Parar animação
Régua
Tipo principal: Régua
A régua é um objeto de interface padrão usado para definir ou ler um valor usando um cursor localizado em uma régua.
Pode atribuir sua variável associada a uma área editável (campo ou variável) para guardar ou modificar o valor atual do
objeto.
Passo a passo
Tipo principal: Régua
Botão passo a passo associado à variável vStep.
Este objeto padrão permite ao usuário mover-se por valores numéricos, durações (horas) ou datas em passos
predefinidos, clicando nos botões em forma de flechas.
Pode atribuir a variável associada ao objeto a uma área editável (campo ou variável) para guardar ou modificar o valor
atual do objeto.
Um botão passo a passo pode ser associado diretamente a uma variável numérica, hora ou data.
Para os valores do tipo hora, as propriedades Mínimo, Máximo e Passo representam os segundos. Por exemplo,
para definir um passo de 8:00 a 18:00 com passos de 10 minutos:
Mínimo = 28 800 (8*60*60)
Máximo = 64 800 (18*60*60)
Paso = 600 (10*60)
Para os valores de tipo data, o valor introduzido na propriedade Passo representa os dias. As propriedades
Mínimo e Máximo são ignoradas.
Nota: para que o botão passo a passo funcione com uma variável hora ou data, é imperativo definir seu tipo na lista de
propriedades E declarar o botão explicitamente com o comando C_TIME o C_DATE.
Dial
Tipo principal: Dial
Este tipo de indicador apresenta os dados na forma de um semicírculo.
Definir os tipos de indicadores
Os dials, indicadores de progresso e réguas estão disponíveis utilizando o botão
da barra de objetos do editor
de formulários. Os objetos de tipo "indicador de progressão" (Termômetro) e "Régua" aceitam diferentes variantes.
Para os indicadores de progressão, estas variantes são definidas utilizando a propriedade Tipo de indicador
do tema "Exibir" da lista de propriedades:
- 328 -
Para as réguas, estas variantes são definidas através da propriedade Exibir como do tema "Exibir" da Lista de
propriedades:
Nota: estas variantes podem ser especificadas utilizando o comando OBJECT SET FORMAT.
Propriedades de Indicador
Além das propriedades padrão de aparência e localização, pode definir outras propriedades específicas para cada
indicador: valor mínimo, valor máximo, unidades de graduação, os mínimos passos permitidos pelo indicador como
também as opções de visualização.
Também pode definir o formato de saída de uma etiqueta do indicador (para maior informação sobre os formatos de
saída, consulte a seção GET LIST ITEM PARAMETER).
Graduação
Estas propriedades específicas são definidas no tema “Graduação” da Lista de propriedades:
- 329 -
Este tema de propriedades é mostrado para os indicadores de tipo barra de progresso, régua, botão passo a passo e
dial. As propriedades disponíveis também dependem do tipo de indicador. Esta é a descrição de cada propriedade:
Mínimo e Máximo: valores mínimo e máximo do indicador.
No caso de um botão passo a passo numérico, estas propriedades representam os segundos quando o objeto
estiver associado a um valor de tipo hora e se estiver associado a um valor de tipo data.
Unidade: unidade de visualização das graduações.
Passo: intervalo mínimo aceito entre dois valores durante a utilização. No caso de um botão passo a passo
numérico, esta propriedade representa os segundos quando o objeto está associado a um valor de tipo hora e
dias se está associado a um valor de tipo data.
Posição da etiqueta: localização das etiquetas quando são mostradas.
Abaixo: mostra as etiquetas à direita ou abaixo do indicador.
Acima: mostra as etiquetas a esquerda ou acima do indicador.
Etiquetas: mostra /oculta etiquetas.
Graduação: mostra/oculta as graduações junto às etiquetas.
Método Executar Objeto
Quando é selecionado um objeto indicador, há uma propriedade adicional no tema "Ação" da lista de propriedades:
Executar método do objeto.
Quando esta opção estiver selecionada, o método do objeto será executado com o evento On Data Change quando o
usuário mude o valor do indicador. Como padrão, o método é executado depois da modificação.
Gestão programada de indicadores
A variável associada ao indicador controla a saída. Pode colocar valores no indicador ou utilizar os valores do indicador
utilizando métodos. Por exemplo, um método para um campo ou objeto editável podem ser utilizados para controlar um
termômetro:
vTerm:=[Empregados]Salário
Este método atribui o valor do campo Salário à variável vTerm. Este método está associado ao campo Salário.
Por outro lado, pode utilizar o indicador para controlar o valor de um campo. O usuário arrasta o indicador para definir o
valor. O método:
- 330 -
[Empregados]Salário:=vTerm
O método atribui o valor do termômetro ao campo salário. A medida que o usuário arrasta o indicador, o valor no
campo Salário muda.
- 331 -
Controle de abas
Usar
Uma aba cria um objeto que permite ao usuário escolher entre um conjunto de telas virtuais que estão entre as abas. Se
acessa a cada tela clicando em sua aba. O formulário multipáginas a seguir utiliza abas:
O formulário multi-páginas a seguir usa abas.
Para navegar de uma tela a outra, o usuário simplesmente clica na aba correspondente.
As telas podem representar páginas em um formulário multipáginas ou um objeto que muda quando o usuário clica em
uma aba. Se a aba é utilizada como ferramenta de navegação, então o comando FORM GOTO PAGE ou a ação
automática Ir à página é utilizada quando o usuário clique em uma aba.
Outro uso de uma aba é controlar a informação que é exibida em um subformulário ou em áreas de rolagem agrupadas.
Por exemplo, um organizador de contatos poderia ser implementado utilizando uma aba. As abas mostrariam as letras
do alfabeto e a ação da aba seria carregar a informação correspondente à letra na qual o usuário clique.
Cada guia pode mostrar etiquetas, ou etiquetas e um ícone pequeno. Se você incluir ícones, o ícone aparece à
esquerda de cada etiqueta. Este é um exemplo de abas com ícones:
Quando se cria uma aba, 4D controla o espaço e a localização das abas. Só se deve fornecer as etiquetas em forma
- 332 -
de um array aos ícones e às etiquetas em forma de lista hierárquica.
Se a aba não é suficientemente grande para mostrar as etiquetas e os ícones, 4D mostra somente os ícones. Se você
não pode ajustar todos os ícones, coloque uma seta de deslocamento à direita da última aba disponível. As setas de
deslocamento permitem ao usuário mover os ícones para a esquerda ou direita.
Em Mac OS, as abas podem ser alinhadas, além da posição padrão (acima), à esquerda, à direita, para baixo (ver o
parágrafo “Modificar a orientação (somente Mac OS)” abaixo).
Adicionar etiquetas ao controle de abas
Existem várias formas de colocar etiquetas em uma aba.
Pode associar abas a una lista de valores padrão, acessível utilizando o botão Editar junto à propriedade Valores
como padrão no tema “Fonte de dados” da Lista de propriedades. Para maiores informações sobre este ponto,
consulte o parágrafo “Listas de valores padrão. Os valores padrões são carregados automaticamente em um
array. É possível fazer referência a este array utilizando o nome da variável associada à aba.
É possível criar uma lista utilizando o editor de listas e atribuindo a lista à aba como lista de valores, como é
mostrado a seguir.
Se você preferir, é possível associar um pequeno ícone a cada elemento da lista utilizando o editor de listas. Para
maiores informações, consulte o parágrafo Associar um ícone pequeno a um elemento.
É possível criar um array texto que contenha os nomes de cada página do formulário. Este código deve ser
executado antes que o formulário seja apresentado ao usuário. Por exemplo, é possível colocar o código no
método do objeto da aba e executá-lo quando ocorra o evento On Load.
ARRAY TEXT(asPaginas;3)
asPaginas{1}:="Nome"
asPaginas{2}:="Endereço"
asPaginas{3}:="Notas"
Nota: Da mesma forma é possível armazenar os nomes das páginas em uma lista hierárquica e utilizar o comando
Load list para carregar os valores no array.
Comando GOTO PAGE
Utilize o comando FORM GOTO PAGE no método da aba:
FORM GOTO PAGE(arrPages)
O comando é executado quando ocorre o evento On Clicked. Limpe o array quando ocorra o evento On Unload.
Este é um exemplo de método do objeto:
Case of
- 333 -
:(Form event=On Load)
LIST TO ARRAY("Tab Labels";asPaginas)
:(Form event=On Clicked)
FORM GOTO PAGE(arrPages)
:(Form event=On Unload)
CLEAR VARIABLE(asPaginas)
End case
Ação Goto Page
É possível associar a ação Ir à página em uma aba. Quando esta ação estiver ativa, 4D mostra automaticamente a
página do formulário que corresponde ao número da janela selecionada.
Por exemplo, se o usuário clicar na terceira guia, 4D mostrará a terceira página do formulário atual (se existir). Se você
prefere controlar você mesmo o efeito de um clique sobre uma guia, selecione Sem ação.
Para mais informação sobre as ações padrão, consulte a seção Ações padrões.
Modificar a direção (apenas Mac OS)
É possível definir a orientação das abas em seus formulários. Esta propriedade está disponível em todas as
plataformas mas só pode ser visualizada sob Mac OS, quando a interface da plataforma é “Sistema”. É possível
escolher localizar as abas em cima (padrão), esquerda, direita ou abaixo.
A orientação das abas é definidas no tema “Aparência” da Lista de propriedades:
Quando as abas com uma orientação personalizada são exibidas sob Windows ou com a plataforma “Impressão”,
automaticamente retornam à orientação padrão (acima).
- 334 -
Separador
Usos
Um separador divide um formulário em duas áreas, permitindo-lhe ao usuário aumentar ou reduzir as áreas movendo o
separador. Um separador pode ser horizontal ou vertical. O separador leva em consideração as propriedades de
redimensionamento dos objetos, o qual permite personalizar completamente a interface. Um separador pode ou não ser
com uma barra de rolagem.
O separador geralmente é utilizado em formulários de saída de modo que as colunas possam ser redimensionadas:
Estas são algumas das características gerais dos separadores:
É possível colocar tantos separadores quanto você quiser em qualquer tipo de formulário e utilizar uma
combinação de separadores horizontais e verticais em um mesmo formulário.
Um separador pode cruzar um objeto. Este objeto será redimensionado quando o separador se mova.
Os limites dos separadores são calculados de modo que os objetos que se movem permaneçam completamente
visíveis no formulário ou não passem debaixo ou ao lado de outro separador. Quando a propriedade
Movimentador estiver associada a um separador, seu movimento para a direita ou para baixo não encontra
limites.
Se você redimensionar um formulário utilizando um separador, as novas dimensões do formulário serão salvas
enquanto o formulário é exibido. Uma vez que o formulário é fechado, as dimensões iniciais são restauradas.
Uma vez inserido, o separador aparece como uma linha. É possível modificar seu estilo de borda para obter uma linha
mais fina ou mudar sua cor. Da mesma forma, é possível utilizar um botão invisível como separador com a ação padrão
Separador automático (ver Ações padrões)
Interação com as propriedades dos objetos vizinhos
Em um formulário, os separador interatuam com os objetos que os rodeiam de acordo com as opções de
redimensionamento destes objetos.
- 335 -
Objeto(s) sobre o
separador
Opções de
redimensionamento horizontal ou à
direita do
dos objetos
separador vertical
Objeto(s) abaixo do separador
horizontal ou à direita do
separador vertical
(1)
Nenhum
Aumentar
Mover
Permanece como
está
separador no “Impulsor”
separador “Impulsor”
se movem com o separador
(conservam sua posição relativa) até o
próximo limite. O limite, quando se
movem para baixo ou para direita, é a
margem da janela ou outro separador.
se movem com o
separador (conservam sua
posição relativa)
indefinidamente. Não se
aplicam limites (ver o
próximo parágrafo)
Mantém sua posição
original mas são
redimensionados de
acordo com a nova
posição do
separador
Se movem com o
separador
(1) Não é possível arrastar o separador além do lado direito (horizontal) ou inferior (vertical) de um objeto localizado
nesta posição.
Nota: Um objeto completamente dentro de um retângulo que define o separador se move ao mesmo tempo que o
separador.
Propriedade Impulsor
A propriedade Impulsor está disponível para os objetos separadores no tema “Opções de redimensionamento” da lista
de propriedades.
Quando um objeto separador tem esta propriedade, todos os objetos situados à direita (separador vertical) ou abaixo
(separador horizontal) são movidos ao mesmo tempo que o separador, sem limite.
Este é o resultado da rolagem de separador “impulsor”:
Quando esta propriedade não se aplica aos separadores, o resultado é o seguinte:
Esta propriedad está selecionada como padrão para os novos bancos.
Lidar com os separadores usando programação
É possível associar um método de objeto a um separador. Este método será chamado pelo evento On Clicked durante
toda a rolagem.
Uma variável de tipo Inteiro longo está associada a cada separador. Esta variável pode ser utilizada em seus métodos
de objeto e/ou formulário. Seu valor indica a posição atual do separador, em pixels, relativo a sua posição inicial.
Se o valor for negativo: o separador foi movido para cima ou para a esquerda.
Se o valor for positivo: o separador foi movido para baixo ou para a direita,
Se o valor for igual a 0: o separador foi movido a sua posição inicial.
Da mesma forma é possível mover o separador por programação: você só tem que definir o valor da variável
associada. Por exemplo, se um separador vertical está associado à variável separa1 e você executa a seguinte
declaração: separa1 := -10, o separador se moverá 10 pixels à esquerda, como se o usuário o fizesse manualmente.
A movimentação é efetuada ao final da execução do método de objeto ou de formulário que contenha a instrução. A
- 336 -
ação Separador automático permite criar separadores personalizados em seus formulários. É possível atribuir esta
ação a um objeto de tipo botão invisível. Quando se atribui esta ação padrão a um botão invisível, o botão atua
exatamente como um separador. Se, por exemplo, você cola uma imagem no botão invisível, é possível criar uma
interface personalizada para seus separadores. Para maiores informações, consulte o parágrafo Botões.
- 337 -
Área Web
As áreas web podem mostrar todo tipo de conteúdo web ao interior de seus formulários: as páginas HTML com
conteúdo estático ou dinâmico contém arquivos, imagens, Javascript, Flash, PDF (1)... ou até mesmo documentos MS
Office (em Windows, com MS Office instalado).
(*) O uso de plugins Web e Java applets não é recomendável nas áreas Web porque pode levar à instabilidade na
operação de 4D, particularmente ao nível de gerenciamento de eventos.
O motor de renderização da área web depende da plataforma de execução da aplicação e do estado da opção Utilizar
Web Kit integrado (ver o parágrafo "Propriedades específicas").
É possível criar áreas web em um mesmo formulário.
Várias ações padrão,numerosos comandos de linguagem e eventos de formulário permitem ao desenvolvedor controlar
o funcionamento das áreas web. As variáveis específicas permitem trocar informação entre a área e o ambiente 4D.
Este parágrafo detalha os princípios relativos ao uso e configuração de objetos do tipo área web no editor de
formulários. Para mais informações sobre a gestão programada desses objetos, consulte os comandos Área Web no
manual de Linguagem 4D.
Note também que o uso de áreas web está sujeito a várias regras no parágrafo Notas sobre uso de áreas Web no
manual de Linguagem de 4D.
Propriedades específicas
Quando um objeto de área de web é selecionado no editor de formulário, a lista de propriedades mostra as seguintes
propriedades específicas:
- 338 -
Menu Contextual
Quando é selecionada a propriedade Menu contextual para uma área de web tema "Entrada", o usuário pode
acessar um menu contextual padrão na área durante a execução do formulário.
O conteúdo do menu está definido pelo motor de renderização da plataforma: WebKit de Apple (renderização do
navegador Safari) com Mac OS e ActiveX Web (renderização do navegador Internet Explorer) com Windows.
Nota É possível controlar o acesso ao menu contextual através do comando WA SET PREFERENCE.
Variáveis associadas
Duas variáveis específicas estão automaticamente associadas a cada área de web: “URL” e “Progressão.” Estas
variáveis permitem controlar respectivamente o URL mostrado pela área de web e a porcentagem de carregamento da
página mostrada na área de web. Por padrão, estas variáveis chamam-se, respectivamente, nomeArea_url e
nomeArea_progress. É possível alterar estes nomes se preferir.
Estas variáveis são definidas na Lista de propriedades quando uma área de web está selecionada:
Para maiores informações sobre o funcionamento destas variáveis, consulte a seção Gestão programada de áreas
web no manual de Linguagem 4D.
Uso de Web Kit integrado
Se utiliza esta opção para eleger entre dois motores de renderização para a área web, em função das especificações
de sua aplicação:
"Utilizar Web Kit integrado" sem selecionar (por padrão): neste caso, 4D utiliza o "melhor" motor
correspondente ao sistema. Em Windows, 4D utiliza automaticamente a versão mais recente do navegador
Internet Explorer presente na máquina (IE9, IE10, etc.)
Em Mac OS, 4D utiliza a versão atual do Web Kit.
Este funcionamento permite ser beneficiado automaticamente dos últimos avances em renderização web, através
de HTML 5 ou JavaScript. No embargo, é possível que observe algumas diferenças de renderização entre as
implementações de Internet Explorer e de Web Kit.
"Utilizar Web kit integrado" selecionado:neste caso, 4D utiliza Web Kit em todas as plataformas. Web Kit é
um motor de renderização web de código aberto e multi-plataforma. Também é utilizado pelos navegadores
Safari e Google Chrome, entre outros.
4D tem uma versão integrada de Web Kit. O uso do Web Kit integrado significa que a renderização da área web
e seu funcionamento em sua aplicação são idênticos, independentemente da plataforma utilizada para executar
4D (no entanto, podem apresentar-se pequenas variações de píxels ou diferenças relacionadas com a
implementação da rede).
Quando esta opção é escolhida, você já não se beneficia das atualizações automáticas do motor Web efetuadas
pelo sistema operativo; no entanto, as novas versões do WebKit são oferecidas via 4D.
Notas:
Em Windows XP, 4D v13 não suporta o motor WebKit integrado. Neste contexto, o modo estandarte (melhor
- 339 -
motor) está sempre ativado.
Quando o motor Web Kit integrado se utiliza, note os seguintes detalhes:
Quando são mostradas páginas utilizando o protocolo HTTPS, a autoridade do certificado não se verifica.
Em Windows, os arquivos PDF só podem ser mostrados em uma janela externa.
Quando é mostrada uma área web em um novo processo, em particular, uma criada com o comando New
process, é necessário definir um tamanho de pilha de pelo menos 256 KB (256*1024) com o propósito de
ter certeza de sua correta visualização.
Acesso a métodos 4D
Nota: esta opção só está disponível quando está ativada a opção Utilizar Web Kit integrado.
Quando esta propriedade está selecionada, um objeto JavaScript especial ($4d) é instanciado na área web e permite
manipular as chamadas aos métodos projeto de 4D. Para obter mais informação sobre como funciona esta opção,
consulte a seção #title id="3212"/] no manual de Linguagem de 4D.
Ações Padrões
Há quatro ações padrão específicas para a gestão automática de áreas de web: Abrir URL anterior, Abrir URL
seguinte, Atualizar URL atual e Parar carregamento de URL. Estas ações podem ser associadas aos botões ou
comandos de menus e permite implementar as interfaces de web básicas. Estas ações são descritas em Ações
padrões.
Eventos e comandos de linguagem
As áreas web também podem controlar-se utilizando eventos formulário e comandos de linguagem específicos. Estes
sã descritos no capítulo Área Web do manual de Linguagem de 4D.
- 340 -
Áreas plug-in
Uma área de plug-in é uma área de um formulário controlada por um plugin 4D. Quando se abre um banco de dados,
4D cria uma lista interna de plug-ins instalados em seu banco. Uma vez que você tenha inserido uma área Plug-in no
formulário, 4D lista os plug-ins disponíveis na janela Lista de propriedades. Por padrão estão disponíveis os plug-ins
OLE tools (apenas em Windows) e Report.
Nota Alguns plug-ins não podem ser utilizados em formulários ou em janelas externas. Neste caso, não aparecem na
lista de plug-ins da Lista de propriedades.
Para designar o plug-in a ser utilizado na área, selecione seu nome diretamente na lista Tipo (tema “objetos”):
Nota Quando o tipo de objeto é uma área de plug-in, o botão Avançado pode estar disponível nas propriedades da
área se o autor do plug-in oferece opções avançadas. Neste caso, é possível clicar neste botão para definir estas
opções. Como a caixa de diálogo de opções avançadas é controlada pelo autor do plug-in, a informação sobre estas
opções avançadas é de responsabilidade do distribuidor do plug-in.
Se você desenhar uma área de plug-in muito pequena, 4D lhe mostrará em forma de botão com o título do nome da
variável associada à área. Durante a execução, o usuário clica neste botão para abrir uma janela específica que mostre
o plug-in.
Instalar plug-ins
Para instalar um plug-in em seu ambiente 4D, primeiro deve sair de 4D. Os plug-ins se carregam ao lançar o 4D. Para
mais informações, consulte Instalar plugins ou componentes.
Usar plug-ins
A capacidade de integrar os plug-ins nos formulários permite acessar a possibilidades ilimitadas ao criar aplicações
personalizadas. Uma área de plug-in pode realizar uma simples tarefa como mostrar um relógio digital em um
formulário, ou uma tarefa complexa tal como oferecer um processador de texto, uma folha de cálculo, ou um editor
gráfico.
Muitas dessas capacidades já estão disponíveis no ambiente de 4D sob a forma de plug-ins 4D. Por exemplo:
4D Internet Commands, um conjunto de ferramentas que oferece rotinas de rede de baixo nível
4D Write, uma aplicação de processamento de texto,
4D View, uma aplicação avançada de folha de cálculo e gestão de listas.
Para maiores informações, consulte a documentação que vem com estes plug-ins. Os manuais de programação
desses plug-ins estão disponíveis no Doc Center 4D: 4D Internet Commands, 4D Write - Linguagem e 4D View
Linguagem.
Nota: O plug-in 4D Chart, utilizado para gerar e mostrar gráficos, também está disponível. No entanto, este plug-in é
- 341 -
obsoleto desde 4D v13 (ver 4D Chart).
Se você está interessado em desenhar seus próprios plug-ins, você pode receber maiores informações sobre a escrita
e implementação de plug-ins. 4D oferece um completo kit para lhe ajudar a escrever plug-ins personalizados. Para
maiores informações entre em contato com 4D, Inc. (http://www.4d.com).
Áreas de plug-in integradas
Por padrão, 4D oferece os seguintes tipos de plug-ins:
Gráfico: uma área de gráfico pode ser gerada por programação usando os comandos GRAPH e _o_GRAPH
TABLE.
OLE tools (somente Windows): sob Windows, uma área OLE permite abrir uma janela com os documentos de
outras aplicações dentro de seu banco de dados. Este tema é descrito em detalhes no manual OLE_Tools.
Nota: Da mesma forma é possível criar uma área OLE diretamente utilizando o comando Insert an OLE Object
do menu Objeto..
Report: uma área Report é utilizada para inserir um relatório rápido em um formulário. A área de relatório rápido
pode mostrar os dados em forma de tabela, realizar cálculos, etc. Esta área pode ser controlada utilizando sua
própria barra de menus ou utilizando os comandos de linguagem de 4D. Para maiores informações, consulte o
capítulo Relatórios rápidos.
- 342 -
Propriedades de objetos ativos
Nomes de objeto
Controles de entrada de dados e ajuda de entrada
Formatos de saída
Guardar como Valor ou Referência
Arrastar e soltar
Ações padrões
Efeito espelho (Windows)
Multiestilo (área Rich text)
Multilinha
Barra de rolagem
Menu contextual (imagens)
Atalho de teclado
Memorização da geometria das janelas
- 343 -
Nomes de objeto
Nome de objeto e nome de variável
Cada objeto ativo de formulário está associado a um nome de objeto e uma variável. O nome da variável pode ser
diferente ao nome do objeto. No mesmo formulário, pode usar várias vezes a mesma variável, mas cada nome de
objeto deve ser único.
Nota: O tamanho dos nomes dos objetos está limitado a 255 bytes e os nomes das variáveis a 31 caracteres.
Na linguagem de 4D, pode referir a um objeto ativo de formulário por meio de seu nome de objeto ou de seu nome de
variável (para mais informação consulte Propriedades dos objetos no manual Linguagem de 4D).
Para mais informação sobre as regras de nomes das variáveis, consulte a seção Regras para nomear tabelas e
campos (as regras são as mesmas) e também a seção Convenções no manual Linguagem de 4D.
Variáveis dinâmicas
Agora pode deixar 4d criar dinâmicamente, e em função de suas necessidades, as variáveis associadas aos seus
objetos de formulário (botões, variáveis editáveis, caixas de seleção, etc.). Para fazer isso, é suficiente deixar vazio o
campo "Nome da variável" na Lista de propriedades para o objeto:
Para mais informação, consulte a seção Variáveis no manual Linguage de 4D.
Usar expressões como nomes de variáveis
As variáveis associadas aos objetos de formulário podem conter todo tipo de expressão que devolva um valor e não só
o nome da variável. Simplesmente pode introduzir a expressão diretamente na área “Nome de variável” das
propriedades do objeto:
Toda expressão 4D válida é aceita: expressões simples, fórmulas, funções 4D, nome de método de projeto ou campo
utilizando a sintaxe padrão [Tabela]Campo. A expressão é avaliada durante a execução do formulário. Naturalmente
neste caso não é possível administrar o valor da variável por programação.
As possibilidades oferecidas por este princípio são múltiplas. Por exemplo, isto significa que pode associar um campo
numérico a um indcador de progresso com o objetivo de representar os valores em forma gráfica em listas:
- 344 -
Nota: se o valor introduzido corresponde ao nome de uma variável ou ao nome de um método, 4D considera que você
está indicando o método.
- 345 -
Controles de entrada de dados e ajuda de entrada
Com a ajuda da Lista de propriedades, pode definir diferentes propriedades que permitem controlar e facilitar a entrada
de dados feitas pelo usuário nos objetos ativos editáveis. Estas propriedades lhe permitem:
Definir os atributos relacionados com a seleção e a entrada,
Definir um filtro de entrada que controle os caracteres autorizados,
Mostrar um texto de exemplo,
Mostrar uma lista de valores,
Estabelecer lista de valores obrigatórios ou excluídos,
Definir os valores máximos e mínimos, ou os valores por padrão,
Definir o modo de seleção do objeto,
Verificar a ortografia
Mostrar mensagens de ajuda.
Controles de entrada
O atributo Editável indica se os valores podem ser editados pelo usuário no objeto. Este atributo pode ser selecionado
no tema “Entrada” da Lista de propriedades para os Objetos de campo e variáveis.
Um campo de uma tabela relacionada pode não ser editável se desmarcar a opção Campos relacionados
acessíveis no assistente de formulários. Pode fazer que o campo relacionado seja editável selecionando a caixa
Editável.
Todos os campos são editáveis por padrão. Se deseja fazer que um campo não seja editável em um formulário, pode
desmarcar a opção Editável para o objeto. Um objeto não editável só mostra dados. Os dados são controlados por
métodos que utilizam o nomeda variável ou do campo. Os eventos de formulário On Clicked, On Double Clicked, On
Drag Over, On Drop, On Getting Focus e On Losing Focus podem ser usados com objetos não editáveis. Isso facilita
em particular a gestão de menus contextuais personalizados e a criação de interfaces onde pode arrastar e soltar e
selecionar variáveis não editáveis.
Notas:
O conteúdo da Lista de propriedades é contextual. Quando o atributo Editável não está selecionado na Lista de
propriedades, as propriedades relacionadas com o controle de entrada de dados (Obligatório, Tabulável, Filtro de
entrada, etc.) desaparecem da lista.
A propriedade Não editável também pode ser definidas para um campo ao nível do editor de estrutura (ver a
seção UNREGISTER CLIENT. Neste caso, a opção Editável não aparece na Lista de propriedades para este
campo (ver a continuação).
Obrigatório
Selecionar a opção Obrigatório faz com que o campo ou o objeto editável seja obrigatório nesse formulário. 4D não
aceitará um registro se o campo ou o objeto não contiverem um valor.
Nenhum campo ou objeto editável é obrigatório por padrão. Para tornar um campo obrigatório em todos os formulários,
selecione o atributo Obrigatório na janela Inspetor do editor de estrutura. Se você quer que um campo ou algum outro
objeto editável seja obrigatório em um formulário particular, selecione a opção Obrigatório nas propriedades do objeto.
Atributos Editável e Obrigatório e propriedades de campos
Os atributos Editável e Obrigatório são similares aos atributos de campo que você pode definir no editor de estrutura.
Se você deseja que estes atributos sejam diferentes em um formulário em particular, você pode modificar as
propriedades de cada campo na Lista de propriedades, no tema Armazenado em registro, arquivo de dados ou
fora do arquivo de dados.
Estes atributos não anulam os atributos de campo definidos no editor de estrutura. Se um campo está definido como
Não editável no editor de estrutura, não é possível torná-lo editável selecionando o atributo Editável de formulário. Se
um campo está definido como Obrigatório no editor de estrutura, não é possível torná-lo não obrigatório desmarcando o
atributo Obrigatório do editor de formulários. As caixas de seleção dos atributos Editável e Obrigatório, não
necessariamente refletem os atributos definidos no editor de estrutura.
- 346 -
Tabulável
É possível definir o atributo Tabulável para cada campo editável. Quando este atributo está selecionado para um
campo, inclui-se na ordem de entrada e estará ativo quando o usuário pressionar a tecla Tab.
Por padrão, este atributo está selecionado para todos os campos. Se você o desmarcar, o campo será excluído da
ordem de entrada. No entanto, ainda pode ser selecionado com um clique no mouse ou através de um método.
Para maiores informações sobre a ordem de entrada, consulte o parágrafo Modificar a ordem de entrada dos
dados.
Pode ativar o atributo Tabulável para um objeto não editável. Nesse caso, pode selecionar esse objeto usando a tecla
Tab mas não poderá introduzir valores.
A propriedade Tabulável só é acessível se a propriedade Enfocável está selecionada. Em outras palavras, todo
objeto tabulável pode obter o foco. Entretanto, alguns objetos podem ser “enfocáveis” sem serem “tabuláveis” (por
exemplo, um objeto pode ser selecionado clicando nele). Neste caso, o objeto não pertence à sequência de entrada de
dados.
Acessível
Esta propriedade é encontrada no tema “Entrada” da Lista de propriedades para os objetos ativos (editáveis ou não)
como también para los campos no editables.
Quando a propriedade Acessível é selecionada para um objeto, o objeto pode obter o foco (e portanto pode ser
ativado pelo teclado por exemplo). É rodeado por uma linha pontilhada cinza quando está selecionada, exceto se a
opção "Ocultar retângulo de foco" também tenha sido selecionada (ver a seguinte seção).
Caixa de seleção selecionada mas não mostra o foco
Caixa de seleção que mostra o foco quando é selecionada
Quando a propriedade Enfocável é selecionada para um objeto não editável, o usuário pode selecionar, copiar ou
inclusive transportar por arrastar e soltar o conteúdo da área.
Ocultar retângulo de foco
Durante a execução, um campo ou objeto editável é demarcado por um retângulo de seleção quando tem o foco
(através da tecla Tab ou um simples clique). É possível ocultar este retângulo selecionando a opção Ocultar retângulo
de foco. Ocultar o retângulo de foco pode ser útil no caso de interfaces específicas.
Listas de valores
Pode atribuir listas de valores a objetos editáveis dos formulários. Pode utilizar três tipos de listas: listas de valores
simples, listas de valores obrigatórios e listas de valores excluídos.
As listas simples são definidas no tema “Fontes de dados” da Lista de propriedades. As listas de valores obrigatórios
ou excluídos são definidas no tema “Faixa de valores” da Lista de propriedades.
- 347 -
Antes de associar uma lista de valores, você deve tê-la criado no Editor de listas (ver Listas).
Fonte de dados da lista de valores
Associar uma lista de valores fonte (tema “Fonte de dados”) a um objeto editável para mostrar uma lista de valores
durante a entrada de dados. A lista de valores aparece quando o campo ou objeto editável é selecionado no formulário
em execução. Logo, o usuário pode selecionar o valor na lista.
Também pode utilizar Menus suspensos/Listas suspensas ou Combo Boxes e associar uma lista de seleção a
eles a fim de manipular a entrada e visualização dos valores de um campo ou de uma variável (se a lista de seleção é
hierárquica, só o primeiro nível pode ser utilizado). Para isso, basta com introduzir o nome do campo ou da variável na
área "Nome da variável" da Lista de propriedades (ver a seção Menus suspensos/Listas suspensas) .
O usuário pode sobrescrever a entrada selecionada da lista digitando um novo valor (a menos que a lista também
esteja associada como lista de valores obrigatórios).
Lista de valores excluídos
Uma lista de valores excluídos evita que os usuários introduzam os valores dessa lista. Por exemplo, para um campo
em um formulário de entrada utilizado só por operários, você poderia associar uma lista de valores reservados só para
gerentes.
Lista de valores e campos
É possível associar uma lista de valores a um campo a nível da tabela ou do formulário. Se você quer associar a lista a
nível da tabela, utilize a janela inspetor no editor de estrutura (ver a seção Armazenado em registro, arquivo de
dados ou fora do arquivo de dados). A lista de valores estará associada a este campo em todos os formulários e
editores de buscas do banco. Se associar a lista a um campo ao nível do formulário unicamente, ela pode servir como
lista de seleção apenas para esse formulário. Note que neste caso, pode gerenciar diretamente a entrada de dados e
mostrar no campo utilizando um objeto de tipo Menus suspensos/Listas suspensas ou Combo Boxes.
Lista de valores obrigatórios
Uma lista de valores obrigatórios (tema “Faixa de valores”) limita as entradas válidas aos valores que contém. Por
exemplo, é possível utilizar uma lista de empregos com o fim de restringir as entradas válidas aos empregos aprovados
pela gerência.
Tornar uma lista obrigatória não faz com que a lista seja mostrada automaticamente ao selecionar o campo. Para
mostrar a lista obrigatória, atribua a mesma lista como lista de valores (no tema “Fonte de dados”).
Filtros de Entrada
Um filtro de entrada controla exatamente o que o usuário pode introduzir durante a entrada de dados. Diferente dos
controles de entrada tratados anteriormente nessa seção, os filtros de entrada operam caractere por caractere. Por
exemplo, se um código identificador sempre consta de duas letras seguidas por três dígitos, é possível utilizar um filtro
de entrada para obrigar o usuário a respeitar esse formato. É possível controlar letras e números particulares.
Um filtro de entrada só funciona durante a entrada de dados e não tem efeito durante a visualização dos dados depois
que o usuário desmarca o campo. Em geral, os filtros de entrada são utilizados conjuntamente com Formatos de
saída. Os filtros de entrada controlam os dados introduzidos e os formatos de saída asseguram a apresentação
adequada dos dados depois de sua entrada.
Durante a entrada de dados, um filtro de entrada avalia cada caractere digitado. Se o usuário tenta introduzir um
caractere inválido (por exemplo, um número em lugar de uma letra), 4D não aceita a entrada do caractere. O caractere
inválido permanece igual até que o usuário introduza um caractere válido.
Os filtros de entrada também podem ser utilizados para mostrar os caracteres de formato de maneira que o usuário não
necessite escrevê-los. Por exemplo, um número telefônico consta de três dígitos correspondentes ao código de área,
seguidos por sete dígitos distribuídos em dois grupos de três e quatro dígitos, respectivamente. É possível utilizar um
formato de saída para mostrar o código de área entre parênteses e um hífen para separar os dois grupos de dígitos do
número telefônico. Utilizando um formato como este, o usuário não tem que introduzir os parênteses ou o hífen.
Escolha de um filtro de entrada
O filtro de entrada é criado selecionando um dos filtros integrados ou personalizados da lista suspensa Filtro de entrada
ou escrevendo-o diretamente na área Filtro de entrada. A lista suspensa Filtro de entrada contém filtros para datas,
horas e campos alfa.
Na maior parte do tempo, pode usar um dos filtros integrados de 4D, entretanto, também pode criar filtros
personalizados (Editor de Filtros e Formatos). Os nomes de filtros personalizados que foram criados são
adicionados à lista suspensa Filtros de entrada, precedidos por uma barra vertical (|).
- 348 -
É possível modificar um filtro de entrada depois de ter selecionado-o. Por exemplo, se você deseja utilizar um filtro que
lhe permita a entrada de minúsculas e maiúsculas, porém também necessita permitir a entrada do caractere arroba
(@), é possível selecionar o seguinte filtro:
&"a-z;0-9; ;,;.;-"
e modificá-lo a:
&"a-z;0-9; ;,;.;-;@"
Os códigos de filtros de entrada geralmente começam com o símbolo ampersand (&). Este caractere indica a 4D que
deve interpretar o código que se segue como um filtro de entrada. Se o código começa com um til (~), significa o
mesmo que “&” exceto que as letras são convertidas automaticamente para maiúsculas. Geralmente, o caractere “&” vai
seguido por “A”, “a”, ou “9”, para indicar que só são permitidas maiúsculas (A), minúsculas e maiúsculas (a), ou só
caracteres numéricos (9). Por exemplo, &9 só permite números e &A só permite maiúsculas.
O símbolo (#) indica quantos dígitos ou caracteres são permitidos pelo código. Se o código não utiliza o caractere #, o
filtro permite quantos dígitos ou caracteres o usuário desejar. Por exemplo, enquanto &9 permite a entrada de muitos
dígitos, o código &9## só permite dois dígitos.
O ponto de exclamação (!) algumas vezes é utilizado para mudar o caractere que indica na tela quantos caracteres o
usuário pode introduzir. Quando não se usa o sinal !, 4D mostra um subtraço para cada dígito ou caractere que o
usuário pode digitar. Por exemplo, !?&9## mostra um ponto de interrogação nos lugares onde o usuário pode escrever
e só permite dois dígitos.
Para maiores informações sobre a criação de filtros de entrada, consulte a seção Códigos de filtros e formatos.
Descrição dos filtros de entrada padronizados
Essa tabela descreve cada um dos filtros disponíveis na lista Filtro de Entrada:
- 349 -
Filtro de
entrada
~A
&9
&A
&a
&@
~a##
!0&9##/##/##
!0&9 Dia: ##
Mês: ## Ano: ##
!0&9##:##
!0&9## Hrs ##
Mins ## Segs
!0&9Hrs: ##
Mins: ## Segs:
##
!0&9##-##-####
!_&9(###)!0#######
!0&9###-######
!0&9###-##-###
~"A-Z;0-9; ;,;.;-"
&"a-z;0-9; ;,;.;-"
&"0-9;.;-"
Descrição
Permite todas as letras e as transforma em maiúsculas.
Só permite números.
Só permite maiúsculas
Só permite letras (minúsculas e maiúsculas)
Só permite caracteres alfanuméricos. Não permite caracteres especiais.
Só permite duas letras e as converte a maiúsculas. (Por exemplo, para abreviar un estado: CA).
Formato padrão para entrada de datas. Mostra zeros em cada posição de entrada e só permite
números.
Formato personalizado para entrada de datas. Mostra zeros em cada posição e só permite
números.
Formato de entrada para horas. Mostra zeros em cada posição. Só permite números, separados
por "dois pontos" (:).
Formato para entrada de horas. Mostra zeros em cada posição. Permite só dois números antes
de cada palavra.
Formato para entrada de horas. Mostra zeros em cada posição. Só permite dois números depois
de cada palavra.
Formato de entrada para un número telefônico local. Mostra zeros em cada posição. Só permite
números: três antes do hífen e depois quatro.
Formato de entrada para un número telefónico de longa distância. Mostra caracteres de subscrito
para os três dígitos de código de área e zeros para o número telefônico.
Formato de entrada para um número telefônico de longa distância. Mostra zeros em cada
posição. Só permite números: três para o código de área antes do primeiro hífen, mais três antes
do segundo hífen e finalmente quatro.
Formato de entrada para o número de segurança social. Mostra zeros em cada posição. Só
permite números.
Permite maiúsculas, números, vírgulas, pontos e hífens.
Permite letras (minúsculas e maiúsculas), números, espaços, vírgulas, pontos, e hífens.
Filtro numérico. Só permite números, o ponto decimal e o hífen (sinal menos).
Combinar filtros de entrada e formatos de saída
Geralmente, quando se utiliza um filtro de entrada, cria-se um formato de saída. Um filtro de entrada só funciona durante
a entrada de dados, não tendo efeito na forma como se apresenta a informação quando o campo não está selecionado.
Por exemplo, se você utiliza o filtro de entrada para o número de segurança social (&9###-##-####), deverá selecionar
o formato de saída correspondente ao número de segurança social (###-##-####). Sem o formato de saída, só
aparecerão no campo os números, sem os hífens.
A tabela a seguir mostra alguns filtros de entrada sugeridos e os formatos de saída correspondentes para os tipos de
campos mais comuns:
Tipo de campo
Filtro de entrada
Formato de saída
Estado
Código postal (padrão)
Código postal (estendido)
Número telefônico
~a##
&9#####
&9#####-####
&9###-####
&9(###) ###-####
&9 ###-###-####
!0&9##/##/##
!0&9 Dia: ## Mês: ## Ano: ##
!0&9##:##
!0&9## Hrs ## Mins ## Segs
!0&9Hrs: ## Mins: ## Segs: ##
(Não é necessário)
(Não é necessário)
#####-####
###-####
(###) ###-####
###-###-####
(Qualquer formato de data)
Data
Hora
(Qualquer formato de hora)
É possível utilizar os formatos de saída nos formulários de entrada, de saída e em registros rápidos. Para maiores
informações sobre os formatos de saída em registros rápidos, consulte o parágrafo Estabelecer formatos de saída
de colunas.
Texto exemplo
4D mostra textos de exemplo nos campos dos formulários.
- 350 -
Este texto aparece como marca de água em um campo, oferecendo uma mensagem de ajuda, uma indicação ou um
exemplo dos dados a introduzir. Este texto desaparece tão rápido como o usuário introduz um caractere na área:
O texto de exemplo se mostra de novo se o conteúdo do campo se apaga.
Pode definir um texto exemplo no tema "Entrada" da Lista de propriedades:
A opção Texto de exemplo está disponível para os seguintes objetos:
variáveis,
campos,
combo boxes.
Um texto de exemplo pode ser mostrado para os seguintes tipos de dados:
cadeia (texto ou alfa)
data e hora quando a propriedade Vazio e nulo se ativa.
Pode utilizar uma referência xliff en ":xliff:resname" como texto de exemplo, por exemplo:
:xliff:PH_Lastname
Só passe a referência no campo "Texto de exemplo", não é possível combinar uma referência com texto estático.
Nota: também pode definir e obter o texto do marcador por programação utilizando os comandos OBJECT SET
PLACEHOLDER e OBJECT Get placeholder.
Valores máximos e mínimos
É possível aplicar restrições à entrada de campos de tipo numérico, data, hora ou objeto editável definindo valores
máximos e mínimos nas áreas de entrada correspondentes no tema “Faixa de valores” das propriedades dos objetos.
Áreas de entrada dos valores mínimos e Máximos
Durante a entrada de dados, se o usuário introduz um valor inferior ao mínimo ou superior ao máximo, mostra-se uma
caixa de diálogo de alerta. 4D devolve ao usuário o campo de maneira que se possa entrar um valor correto.
Para definir um valor máximo ou mínimo, escreva o valor que quer definir como limite. Utilize o formato de entrada
apropriado para o tipo de campo ou objeto editável para o qual se está definindo os limites. Por exemplo, para um
campo tipo Data, utilize o formato de entrada de data para definir os valores máximos e mínimos.
Os valores definidos estão incluídos. Isso significa que se o usuário introduz o valor definido como mínimo ou como
máximo, a entrada é permitida. Somente os valores abaixo do mínimo ou maiores que o máximo não são autorizados.
Por exemplo, se o valor máximo é 15, o usuário pode introduzir 15, porém não 16.
Também pode utilizar uma lista de valores obtigatórios para criar faixas de valores atípicos. Para mais informação,
consulte o parágrafo Lista de valores obrigatórios a continuação e a seção Criar e modificar Listas.
Valores padrão
É possível atribuir um valor padrão para um campo ou objeto editável. O valor padrão é introduzido quando aparece um
novo registro. É possível modificar o valor a menos que o campo ou área de entrada tenha sido definido como não
editável.
É possível definir o valor padrão no tema “Faixa de valores” da Lista de propriedades. O valor padrão deve
corresponder ao tipo de campo para o qual está definido. 4D oferece códigos para gerar valores padrão para datas,
horas e números seqüenciais. A data e hora são tomadas do sistema. 4D gera automaticamente qualquer seqüência
de números requerida. A tabela a seguir mostra os códigos a se utilizar para gerar automaticamente valores padrão:
- 351 -
Código Efeito
#D
#H
#N
Data atual
Hora atual
Número de sequência
É possível utilizar um número de seqüência para criar um número único para cada registro. Um número de seqüência é
um número inteiro gerado para cada novo registro. Os números começam com um (1) e aumentam de um em um (1).
Um número de seqüência não se repete mesmo quando um registro é apagado da tabela. Cada tabela tem sua própria
seqüência de números. Consulte o comando Sequence number no manual Linguagem de 4D.
Listas de valores padrão
Se o objeto mostra uma lista de valores (tal como um combo box, uma área de rolagem, um menu suspenso, uma aba,
ou uma lista suspensa), é possível especificar uma lista de valores a se utilizar como valores padrão. Esta lista será
carregada no objeto antes de ser mostrado no formulário.
Para os objetos que aceitam uma lista de valores padrão, a área dos valores padrão é convertida em um botão:
Quando você clica neste botão, aparece a caixa de diálogo Valores padrão:
Escreva a lista de valores padrão. Cada valor deve aparecer em uma linha diferente. Clique no botão Aceitar para
fechar a caixa de diálogo e retornar à janela Lista de propriedades.
Quando você introduz valores padrão na caixa de diálogo valores padrão, os valores são carregados automaticamente
em um array cujo nome é o nome do objeto. Utilizando a linguagem, é possível manipular o objeto fazendo referência a
este array.
Notas:
Se o objeto é uma lista hierárquica ou uma aba, é possível utilizar uma lista criada no editor de listas para definir
os valores padrão.
Também é possível definir os valores padrão utilizando um método. Para os objetos que o permitam, é possível
atribuir o valor padrão quando o evento On Load é executado no método do objeto ou do formulário.
Para os objetos que aceitam listas, é possível definir os valores padrão utilizando o editor de listas e então o
comando Load list para criar uma lista hierárquica. Então, é possível trabalhar com a lista e seu conteúdo
utilizando os comandos do tema “Listas hierárquicas”. É possível carregar a lista em uma lista hierárquica quando
- 352 -
ocorrer o evento de formulário On Load ou carregar todas as listas no Método banco de dados On Startup.
Configuração do teclado
Nota de compatibilidade: esta opção só é levada em conta quando o banco funciona em modo não Unicode. Em
modo Unicode, esta propriedade é ignorada. Para mais informação, consulte a documentação de versões anteriores
de 4D.
Correção ortográfica
4D inclui um utilitário de correção ortográfica integrado e personalizável. A verificação ortográfica pode ser efetuada
para os campos e variáveis tipo Alfa e Texto, assim como para os documentos 4D Write.
A propriedade Correção Ortográfica (tema "Controles de entrada") ativa a correção ortográfica para o objeto. Nesse
caso, a verificação ortográfica é realizada automaticamente durante a entrada de dados.
Nota: pode executar o comando SPELL CHECKING para cada objeto a controlar.
Processos de verificação
Em 4D, a correção ortográfica se aplica continuamente em áreas de texto, com os erros ressaltados diretamente no
texto com um sublinhado de pontos:
As linhas de pontos em diferentes cores se utilizam com o propósito de determinar o tipo de correção a realizar:
Em vermelho os erros de ortografia,
Em verde os erros gramaticais (corretor nativo OS X unicamente),
Em azul as palavras a substituir (quando a opção Mostrar substituições está ativada, ver mais adiante).
O usuário pode então corrigir o texto usando o menu contextual (clique direito na palavra sublinhada) ou utilizar o quadro
de diálogo do corretor ortográfico.
Menu contextual ou diálogo de correção
Para mostrar as opções de correção ortográfica, pode fazer clique direito sobre uma palavra desconhecida e
aparecerá um menu contextual que contém os comandos de correção ortográfica:
Nota: as opções Menu contextual e Correção ortográfica devem estar selecionadas para o objeto.
Pode selecionar a opção Mostrar o diálogo de revisão de ortografia para mostrar um diálogo no que pode introduzir
um valor corrigido:
- 353 -
Este diálogo é uma janela flutuante que continua disponível para todas as janelas da aplicação durante a sessão, até
que o usuário a fecha.
Funções do corretor
Além das sugestões de correções, as seguintes opções e funções são propostas pelo corretor em 4D (via o menu
contextual e/ou o diálogo de correção):
Aprender: la palabra desconocida se añade al diccionario, ya no será indicada por el corrector ortográfico.
En OS X, las palabras aprendidas se conservan permanentemente en
/Users/[nombreUsuario]/Library/Spelling (de manera que una palabra aprendida por el sistema de
corrección ortográfica también
es aprendida para todas las aplicaciones que utilizan el sistema de corrección ortográfica).
Con Hunspell, las palabras aprendidas se guardan en un diccionario personalizado Hunspell en el directorio
sistema usuario de datos de la aplicación actual, que siempre se cargan junto con el diccionario principal
(como en las versiones anteriores).
Olvidar (menú contextual): esta opción aparece cuando se selecciona una palabra que se aprendió previamente.
Le permite al usuario eliminar esta palabra de la lista de palabras aprendidas de manera que se indica una vez
más como un posible error de ortografía.
Ignorar: la palabra desconocida no se toca y ya no se subraya, sin embargo, se indica de nuevo si se detecta
más adelante.
El corrector ortográfico tiene una tabla con las palabras a ignorar para cada documento. Puede borrar esta tabla
con la opción Borrar la lista de palabras ignoradas (ver más abajo).
Anterior/siguiente (caja de diálogo): la palabra desconocida se ignora, pero queda subrayada y el corrector
ortográfico examina la palabra anterior o siguiente desconocida en el texto.
Verificar ortografía (menú contextual): por lo general activa o desactiva globalmente la corrección ortográfica en
el área para el proceso actual.
Remplazar (caja de diálogo): remplaza la palabra del primer campo editable por la palabra del segundo campo
editable, en el texto si la selección en el texto corresponde a la palabra del primer campo y
pasa al siguiente error.
Remplazar siempre (caja de diálogo): igual que Remplazar pero la sustitución se memoriza (ver Substitución
de texto más abajo).
El submenú Configuración de ortografía ofrece las siguientes funciones:
- 354 -
Corrección automática: activa o desactiva el modo de corrección automática en el área para el proceso actual.
En este modo, las palabras desconocidas se sustituyen automáticamente por la palabra
conocida más cercana (excepto cuando la ambigüedad es demasiado grande). Las correcciones se realizan
durante la entrada.
Por defecto, la corrección automática está desactivada.
Sustitución de texto: activa o desactiva la substitución de texto. Este principio consiste en remplazar una
palabra por otra. Por ejemplo, puede optar por sustituir la palabra "sr " por " Señor".
Para crear pares de palabras "a reemplazar"/"reemplazar por", debe utilizar la caja de diálogo del corrector
ortográfico: escriba la palabra a remplazar en el área "Palabra desconocida” y la palabra de remplazo en el área
"Reemplazar con", luego haga clic en el botón Reemplazar siempre:
Los reemplazos se realizan en toda la aplicación. Con Hunspell, el corrector ortográfico mantiene una tabla de
sustituciones global de la aplicación que se guarda en el directorio sistema usuario de la
aplicación, para el corrector OS X, la tabla está fusionada con las sustituciones del sistema (opción "Activar la
sustitución de texto y de símbolo” en las Preferencias Sistema).
El proceso de sustitución difiere en función de si la opción Mostrar sustituciones de texto del submenú
Configuración de ortografía está seleccionada o no (ver abajo).
Mostrar sustituciones de texto (esta opción sólo aparece si la opción Sustitución de texto está
seleccionada): cuando esta opción está seleccionada, el corrector ortográfico subraya las posibles
sustituciones en el texto con una línea azul y el usuario debe hacer clic derecho en la palabra para seleccionar el
valor de substitución.
Cuando esta opción no está seleccionada, se realizan sustituciones de forma automática, sin intervención del
usuario.
Borrar la lista de palabras ignoradas: borra la lista de las palabras elegidas para ser ignoradas en el
documento.
Opções adicionais do corretor ortográfico nativo OS X
O corretor ortográfico nativo de OS X oferece várias opções de correção:
- 355 -
Lenguaje automático: identifica automáticamente el lenguaje del diccionario a utilizar en función del contenido
del texto.
Por defecto, el corrector ortográfico usa el lenguaje de la aplicación 4D, al igual que el corrector ortográfico
Hunspell.
Verificar la gramática: activa la corrección gramatical del texto.
Guiones inteligentes: reemplazar los guiones dobles (--) con guiones largos (—) durante la entrada.
Comillas tipográficas: reemplazar comillas rectas con comillas tipográficas adaptadas al lenguaje actual.
Gestão de dicionários
A correção ortográfica em 4D agora pode usar:
Em Windows y OS X, o dicionário open source Hunspell (ver Support of Hunspell dictionaries no manual de
Linguagem de 4D)
Em OS X, o corretor ortográfico nativo.
Por padrão em OS X, 4D v14 utiliza o corretor ortográfico nativo. Pode optar por utilizar o corretor ortográfico
Hunspell utilizando o comando [#cmd id="642"/]. Tenha em conta que as funções adicionais são oferecidas pelo
corretor nativo OS X (ver abaixo).
Por padrão, 4D utiliza o dicionário correspondente à linguagem atual do aplicativo. No entanto, é possível forçar a
abertura de um dicionário em um idioma diferente utilizando o comando SPELL SET CURRENT DICTIONARY. 4D lhe
permite estabelecer e utilizar dicionários especializados para cada idioma, incluindo listas de palavras personalizadas
aceitas pelo corretor ortográfico. Para maiores informações sobre estes dicionários, consulte Apêndice D: Uso de
dicionários especializados.
Mensagens de ajuda
É possível adicionar uma mensagem de ajuda a campos e objetos ativos em seus formulários para ajudar os usuários a
trabalhar de forma mais produtiva com seu banco de dados. As mensagens de ajuda aparecem em quadros
emergentes.
Por exemplo, é possível criar uma mensagem de ajuda para um campo de tipo Data que recorde o usuário incluir uma
barra oblíqua (/) como separador entre o dia, o mês e o ano quando introduzir os dados.
A mensagem de ajuda aparecerá cada vez que o usuário mova o mouse sobre o campo ou objeto.
Nota: Também se pode associar uma mensagem de ajuda com um campo a nível da estrutura do banco de dados.
Neste caso, a mensagem de ajuda aparece em todos os formulários onde esteja o campo. Para maiores informações,
consulte “Mensagens de ajuda” em Armazenado em registro, arquivo de dados ou fora do arquivo de dados.
Se duas mensagens de ajuda são associadas a um mesmo campo a nível de estrutura e a nível de formulário, este
último tem maior prioridade.
- 356 -
É possível associar uma mensagem de ajuda a qualquer objeto ativo em seus formulários, usando a lista Mensagem
de ajuda no tema "ajuda" da Lista de propriedades. É possível:
Selecione uma mensagem no menu Mensagem de ajuda. A mensagem de ajuda deve ter sido especificada
previamente em Dicas de ajuda do editor de 4D.
Introduza diretamente uma mensagem de ajuda na área. Isso lhe permite aproveitar a arquitetura XLIFF. É
possível introduzir uma referência XLIFF aqui para mostrar uma mensagem na linguagem do aplicativo (para
maiores informações sobre XLIFF, consulte Apêndice C: arquitetura XLIFF).
Também pode utilizar as referências 4D (ver Usar referências em texto estático).
A mensagem selecionada aparecerá como mensagem de ajuda para o campo ou objeto selecionado no formulário.
Para apagar a associação da mensagem de ajuda com o objeto selecionado, selecione Nenhum na Lista de
propriedades.
Nota: Em Mac OS, a visualização de mensagens de ajuda não é suportada em janelas de tipo pop-up.
Seleção sempre visível
Esta propriedade está disponível para os campos ou variáveis de tipo Alfa ou Texto nos formulários. Essa propriedade
conserva a visibilidade da seleção ao interior do objeto depois de perder o foco. Isso facilita a implementação de
interfaces que permitam modificar o estilo do texto (ver Multiestilo (área Rich text)).
Permitir seletores de cor e de fonte
Os comandos OPEN FONT PICKER e OPEN COLOR PICKER mostram as janelas do sistema de seleção de cor e
de fonte. Os usuários podem mudar o cor ou a fonte do objeto que tem o foco no formulário diretamente fazendo clique
em uma destas janelas.
Para que possa controlar as ações usuário, esta função está sujeita ao valor da nova propriedade Autorizar seletor
fonte/cor do tema “Texto”:
Esta propriedade está disponível para os objetos de formulário de tipo campo, variável e combo box. Por padrão, está
desativada para todos os objetos dos formulários. Deve selecionar ela de forma explícita para cada objeto no que
deseje que a fonte e/ou cor seja modificável utilizando a janela do seletor de sistema.
- 357 -
Formatos de saída
Os formatos de saída oferecidos por 4D lhe dão muitas opções para a impressão e visualização de dados. Os formatos
de saída podem ser aplicados a campos e a variáveis (editáveis e não editáveis). O formato que você utiliza para
mostrar o conteúdo de um campo não afetam o valor real salvo por 4D.
O formato de saída de um campo pode ser diferente para cada formulário. Por exemplo, você pode querer mostrar um
valor sem o símbolo de moeda em um formulário de entrada e com o símbolo de moeda no formulário de saída. Os
formatos de saída são definidos no tema “Exibir” da Lista de propriedades
Os combo-box permitem mostrar a seleção e a entrada de um formato. O botão [...] oferece acesso à janela de Editor
de Filtros e Formatos).
O combo box permitem mostrar diferentes formatos de saída, dependendo do tipo de campo ou variável selecionada.
Nota: O tipo de uma variável é definido utilizando a propriedade Tipo de variável do tema “Objetos” na Lista de
propriedades.
Os formatos integrados para o tipo definido sempre são exibidos. Os formatos criados utilizando o editor de Filtros e
formato da Caixa de ferramentas aparecem ao começo da lista, precedidos por uma barra vertical "|" (consulte Editor
de Filtros e Formatos).
Nota: no editor de formulários, pode mostrar o formato de saída para objetos no lugar de suas etiquetas selecionando
o comando Mostrar formato no menu Objeto.
Formatos de campos de tipo data
Os formatos de data controlam a maneira como aparecem as datas quando são exibidas ou impressas. Ao introduzir
datas, você introduz as datas com o formato DD/MM/AAAA, sem importar o formato de saída selecionado.
A imagem a seguir mostra os formatos de data no menu suspenso formato.
Nota: Diferentemente dos formatos numéricos e alfa, os formatos de saída de datas só podem utilizar os formatos
integrados de 4D.
A tabela a seguir mostra os formatos de saída para dados tipo data e dá um exemplo de cada formato.
- 358 -
Formato
Exemplo
Data do sistema curta
Data do sistema abreviada (1)
Data do sistema comprida
Data interna curta especial
Data interna comprida
Data interna abreviada (1)
Data interna curta
Data Hora ISO(3)
3/25/99
qui. 25 mar, 1999
quinta 25 março 1999
03/25/99 mas 04/25/2032 (2)
25 março 1999
25 mar 1999
25/03/1999
1999-03-25T00:00:00
(1) Para evitar ambigüidade e conforme a prática atual, os formatos abreviados de data agora são “jun” para junho e
“jul” para julho (em vez de “jui” para ambos como era anteriormente). Isto se aplica particularmente a versões em francês
de 4D.
(2) O ano é mostrado utilizando os dígitos quando está dentro do intervalo (1930;2029) ou quatro dígitos se não estiver.
Este é o intervalo padrão, mas é possível modificar utilizando o comando SET DEFAULT CENTURY.
(3) O formato ISO Data/Hora corresponde à representação padrão XML para valores tipo data e hora (ISO8601). Este
formato está desenhado especialmente para importar e/ou exportar dados em formato XML e em serviços web.
Nota Qualquer que seja o formato de saída, se você introduzir um ano com dois dígitos, 4D assume que corresponde
ao século 21 se for um valor entre (00;29) e que corresponde ao século 20 se for um valor entre (30;99). Esta é a
configuração padrão, mas pode ser modificada utilizando o comando SET DEFAULT CENTURY.
Vazio se null
Por padrão, uma data nula geralmente é mostrada como “00/00/00.” A opção vazio se null da Lista de propriedades
(tema “Mostrar”) permite mostrar uma área vazia se a data for nula ou contém o atributo SQL NULL.
Formatos de campos tipo hora
Os formatos tipo hora controlam a forma em que são exibidas ou impressas os dados tipo hora. Para introduzir horas, é
possível utilizar o formato 24 horas HH:MM:SS ou o formato 12-horas HH:MM:SS AM/PM, sem importar o formato de
saída escolhido.
Nota Diferentemente dos formatos de saída alfa e numéricos, o formato de saída da hora deve ser selecionado
somente no menu de seleção dos formatos.
A tabela a seguir mostra os formatos de hora disponíveis assim como alguns exemplos:
- 359 -
Formato
Exemplo
para
04:30:25
Comentários
HH:MM:SS
HH:MM
Horas Minutos
Segundos
Hora Minutos
HH:MM AM/PM
MM SS
Hora expressa como duração desde 00:00:00
04:30:25
04:30
4 horas 30
minutos 25
segundos
4 horas 30
minutos
4:30 a.m.
270:25
270 Minutos
25 Segundos
Min Segundos
Hora expressa como duração desde 00:00:00
ISO Date Time
Corresponde a norma XML de representação dos dados temporais. Está
destinada principalmente a ser utilizada na importação/exportação de dados em
formato XML.
0000-0000T04:30:25
Formato de hora padrão definido no sistema
04:30:25
Mac OS apenas: formato de hora abreviado definido no sistema. Em Windows,
4•30•25 AM
Sistema hora
curto
Sistema hora
comprido
abreviado
Sistema hora
comprido
este formato é o mesmo que o formato Sistema hora curto
Mac OS apenas: formato de hora comprido definido no sistema. Em Windows,
este formato é o mesmo que o formato Sistema hora curto
4:30:25 AM
HNEC
Vazio se null
Por padrão, uma hora nula é mostrada como “00:00:00” (a visualização depende do formato aplicado ao objeto). A
opção vazio se null da Lista de propriedades (tema “Mostrar”) permite mostrar uma área vazia se a hora for nula ou
contiver o atributo SQL NULL.
Formatos de campos numéricos
Nota preliminar: os campos numéricos incluem os campos de tipo Inteiro, Inteiro longo, Inteiro 64 bits, Real e flutuante.
Os formatos numéricos controlam a forma de distribuição e impressão de dados numéricos. Para a entrada deste tipo
de dados, você introduz somente os números (incluindo um ponto decimal ou o sinal de menos se você precisar), sem
importar o formato de saída que você tenha escolhido.
4D oferece diferentes formatos numéricos por padrão na Lista de propriedades (tema "Exibir"). Pode selecionar o
formato no menu suspenso ou escrever ou modificar o formato nol combo box da Lista de propriedades. Também pode
selecionar o nome de um formato personalizado no editor de Filtros e formatos da caixa de ferramentas. Nesse caso,
o formato não pode ser modificado nas propriedades do objeto. Pode acessar ao editor clicando no botão [...] à direita
do combo box de formatos.
Os nomes dos formatos (e filtros) personalizados aparecem ao início das listas de formatos numéricos e alfanuméricos,
precedidos de uma barra vertical (|).
Criação de um formato numérico personalizado
Em cada um dos formatos de saída numéricos, o sinal numeral (#), zero (0), o caractere (^), e asterisco (*) são utilizados
como guias. Você pode criar seus próprios formatos numéricos utilizando uma guia para cada digito a ser exibido.
Por exemplo, se for mostra três números, você pode utilizar o formato ###. Se o usuário introduzir mais dígitos do que
os permitidos pelo formato, 4D mostra <<< no campo para indicar que foram introduzidos mais dígitos que os
especificados no formato de saída.
Se o usuário introduzir um número negativo, o primeiro caractere à esquerda é o sinal de menos (a menos que tenha
sido especificado um formato de saída negativo). Se o formato for ##0, aparece "menos 26" como "–26" e "menos
260" como "<<<" porque o sinal menos ocupa uma guia e somente existem três guias.
Nota Sem importar o formato de saída, 4D aceita e armazena o número introduzido no campo. Não se perde
informação.
Cada caractere guia tem um efeito diferente sobre a fixação de zeros situados ao início ou ao final do número. Um zero
inicial é um zero que se coloca antes da parte inteira de um número (na frente do ponto); um zero final é um zero que se
coloca atrás do decimal de um número (depois da vírgula).
Suponha que você utilize o formato ##0 para mostrar três cifras. Se o usuário não introduz nada no campo, o campo
mostra 0. Se o usuário escreve 26, o campo mostra 26.
A tabela a seguir explica o efeito de cada guia nos zeros iniciais e finais.
- 360 -
Guias Efeito sobre os zeros iniciais e finais
#
0
^
*
Não mostra nada
Mostra 0
Mostra um espaço (1)
Mostra un asterisco
(1) O caractere (^) gera um espaço equivalente a largura de um dígito na maioria das fontes
Separadores
Os formatos de saída numéricos (exceto para notações científicas) são baseados automaticamente nos parâmetros
sistema regionais. 4D substitui os caracteres “.” E “,” por, respectivamente, os separadores decimal e o separador de
milhares definido no sistema operacional. O ponto e vírgula é considerado então como caracteres guias, seguindo o
exemplo de 0 ou #.
Nota de compatibilidade: nas versões anteriores de 4D, os formatos de visualização numéricos não levam em
consideração os parâmetros regionais do sistema. Em bancos de dados convertidos, uma opção de compatibilidade
permite controlar este funcionamento (ver Página Compatibilidade).
Pontos decimais e outros caracteres de saída
Você pode utilizar um ponto decimal no formato. Se quiser que o ponto apareça sem importar se o usuário o escreveu,
você deve colocá-lo entre os zeros.
Você pode utilizar qualquer outro caractere no formato. Quando se utiliza somente ou na frente de guias, o caractere
sempre aparece. Por exemplo, se você utilizar o formato a seguir:
$##0
um sinal $ sempre aparece porque está localizado na frente dos caracteres guia.
Se os caracteres são localizados entre caracteres guia, aparecem somente se existirem dígitos em ambos os lados.
Por exemplo, se você definir o formato
###.##0
Os espaços são tratados como caracteres em formatos de saída numéricos.
Formatos para números positivos e negativos e zero
Um formato de saída numérico pode ter até três partes que lhe permitem definir formatos de saída para os números
negativos, positivos e zero. As três partes estão separadas por ponto e vírgula como indicado a seguir:
Positivo;Negativo;Zero
Não é necessário especificar as três partes do formato. Se você utilizar somente uma parte, 4D a utiliza para todos os
números, colocando um sinal menos na frente dos números negativos.
Se você utilizar duas partes, 4D utiliza a primeira parte para os números positivos e zero e a segunda para números
negativos. Se você utilizar três partes, a primeira é para números positivos, a segunda para números negativos e a
terceira para zero.
Nota A terceira parte (zero) não é interpretada e não aceita caracteres de substituição. Se você escrever o formato
###;###;# o valor zero aparecerá como “#”. Em outras palavras, o valor que você introduza é o que aparecerá para o
valor zero.
Este é um exemplo de um formato numérico que mostra o sinal $ e vírgulas, coloca os números negativos entre
parêntesis, e não mostra zeros:
$###,##0.00;($###,##0.00);
Observe que a presença do segundo ponto e vírgula lhe indica a 4D que não utilize nada para mostrar o zero. O formato
a seguir é similar, exceto que a ausência do segundo ponto e vírgula indica a 4D que utilize o formato de números
positivos para zero:
$###,##0.00;($###,##0.00)
Neste caso o formato de saída de zero será $0.00.
Notação científica
Se você quer mostrar os números em notação científica, utilize o caractere (&) seguido por um número que defina o
número de dígitos que você quer mostrar. Por exemplo, o formato:
&3
mostra 759.62 como
7.60e+2.
O formato de notação científica é o único formato que arredonda automaticamente o número mostrado. Observe no
exemplo anterior que o número é arredondado ao valor 7.60e+2 e não trunca a 7.59e+2.
Formato hexadecimal
- 361 -
É possível mostrar um número em hexadecimal utilizando os formatos de saída a seguir:
&x: mostra os números em hexadecimal com o formato “0xFFFF”.
&$: mostra os números em hexadecimal com o formato “$FFFF”.
Notação XML
O formato &xml permite fazer com que todo número cumpra com as normas xml. Em particular, o caractere separador
sempre será o ponto "." em todos os casos, sem importar a configuração do sistema.
Mostrar um número como uma hora
É possível mostrar um número como uma hora (com um formato de hora) utilizando “&/” seguido de um dígito. A hora é
determinada calculando o número de segundo desde a meia noite que o valor representa. O dígito no formato
corresponde a ordem na qual o formato de hora aparece no menu suspenso Formato.
Por exemplo, o formato:
&/5
corresponde ao quinto formato de hora do menu suspenso, especificamente a hora AM/PM. Um campo numérico com
este formato mostraria 25000 como:
6:56 AM.
Exemplos
A tabela a seguir mostra como os diferentes formatos afetam a visualização dos números. As três colunas, Positivo,
Negativo e Zero, indicam como são mostrados os números 1,234.50, –1,234.50 e 0.
Formato introduzido
Positivo
Negativo
###
####
#######
#####.##
####0.00
#####0
+#####0;–#####0;0
#####0DB;#####0CR;0
#####0;(#####0)
###,##0
##,##0.00
^^^^^^^
^^^^^^0
^^^,^^0
^^,^^0.00
*******
******0
***,**0
**,**0.00
$*,**0.00;–$*,**0.00
$^^^^0
$^^^0;–$^^^0
$^^^0 ;($^^^0)
$^,^^0.00 ;($^,^^0.00)
&2
&5
&xml
<<<
1234
1234
1234.5
1234.50
1234
+1234
1234DB
1234
1,234
1,234.50
1234
1234
1,234
1,234.50
***1234
***1234
**1,234
*1,234.50
$1,234.50
$ 1234
$1234
$1234
$1,234.50
1.2e+3
1.23450e+3
1234.5
<<<
<<<<
-1234
-1234.5
-1234.50
-1234
-1234
1234CR
(1234)
-1,234
-1,234.50
-1234
-1234
-1,234
-1,234.50
**-1234
**-1234
*-1,234
-1,234.50
-$1,234.50
$–1234
–$1234
($1234)
($1,234.50)
-1.2e+3
-1.23450e+3
-1234.5
Zero
0.00
0
0
0
0
0
0.00
0
0
0.00
*******
******0
******0
*****0.00
$****0.00
$ 0
$ 0
$ 0
$ 0.00
0.0e+0
0.00000
0
Formatos de campos alfa
Os formatos alfa controlam a apresentação dos campos e variáveis alfanuméricas quando são exibidas ou impressas.
A imagem a seguir mostra um formato alfa escolhido do menu suspenso.
- 362 -
Você pode escolher um formato dessa lista, escrever ou modificar o formato no combo Box da lista de propriedades
("Visualização"). O menu suspenso Formato contém formatos para alguns dos campos alfa mais comuns que
necessitam formatos: números telefônicos (local e longa distância), números de segurança social e códigos postais. A
tabela a seguir mostra os formatos de campos alfa e o tipo de campos onde geralmente são usados. Do mesmo modo
pode selecionar um nome de um formato personalizado definido na janela do editor de Filtros e formatos da caixa de
ferramentas.
Neste caso, o formato não pode ser modificado nas propriedades do objeto. É possível acessar ao editor clicando no
botão [...] localizado a direita do combo box de formatos. Os formatos ou filtros personalizados aparecem ao início das
listas de formatos numéricos e alfanuméricos, precedidos por uma barra vertical (|).
O sinal numeral (#) é a guia para um formato de saída de um campo alfa. É possível incluir os hífens apropriados,
espaços e qualquer outro sinal de pontuação que você queira mostrar. Você pode utilizar os sinais de pontuação atuais
que quiser e o sinal número para cada caractere a ser exibido.
Por exemplo, considere um número de peça com um formato como este:
RB-1762-1.
O formato alfa seria o seguinte:
##-####-#.
Quando o usuário introduzir “RB17621,” o campo mostra:
RB-1762-1.
O campo, de fato, contém “RB17621.”
Se o usuário introduzir mais caracteres dos que o formato permite, 4D mostra os últimos caracteres. Por exemplo, se o
formato for:
(###)
E o usuário introduzir “FELIZ”, o campo “FELIZ,” mostra:
(LIZ).
O campo, de fato, contém "FELIZ.” 4D aceita e armazena a informação, independente do formato de saída. Não se
perde informação.
Formatos de campos de tipo booleano
Os campos de tipo booleano podem conter um dos dois valores: TRUE ou FALSE. Um campo booleano pode ser
exibido como um par de botões de opção ou como uma caixa de seleção.
Você pode definir a forma e as etiquetas de um campo booleano nas propriedades do campo. Se você quiser mostrar
somente os botões ou caixas de seleção e não o nome do campo, você pode excluir a etiqueta do campo no formulário.
Dar formato a um campo booleano como botões
A aparência de campos booleanos é definida utilizando a lista suspensa “Mostrar como” no tema “Aparência”. Uma vez
que você tenha selecionado o Botão de opção dessa lista, você pode introduzir as etiquetas para cada valor nas áreas
Texto se Verdadeiro e Texto se Falso do tema “Mostrar”.
- 363 -
Os botões são exibidos no editor de formulário um junto ao outro como se mostra na imagem a seguir.
Se você utilizar etiquetas com iniciais diferentes, você pode selecionar o botão de opção escrevendo a letra inicial
durante a entrada de dados. Por exemplo, você pode pressionar “M” para selecionar Masculino ou “F” para selecionar
Feminino quando o campo estiver selecionado.
As regras a seguir se aplicam quando o campo é utilizado para o armazenamento de dados: se o primeiro botão estiver
selecionado, o campo é verdadeiro, se o segundo botão estiver selecionado, o campo é falso. O campo é falso por
padrão.
Caixas de seleção
Selecione a opção Caixa de seleção da lista “Mostrar como” no tema “Aparência”. Uma vez que você tenha
selecionado esta opção, se mostra uma área de entrada “Título” no tema “Objetos”. Esta é a área de entrada na qual se
introduz a etiqueta da caixa de seleção. Por padrão, o nome do campo é o nome da etiqueta.
As regras a seguir se aplicam quando o campo é utilizado para armazenar informação: se a caixa de seleção estiver
selecionada, o campo é verdadeiro; se a caixa de seleção não estiver selecionada, o campo é falso. O campo é falso
por padrão.
Durante a execução, este campo é exibido como uma caixa de seleção:
Você pode dar um formato de caixa de seleção sem etiqueta a um campo booleano introduzindo um espaço na área
Título e definindo um estilo de borda transparente. Neste caso, é possível adicionar a etiqueta para a caixa de seleção
como um objeto independente. Logo você pode colocar a etiqueta onde quiser, desenhar um retângulo e inserir
referências dinâmicas na etiqueta (consulte Usar referências em texto estático). No exemplo a seguir, o campo
booleano está sobre o objeto de texto.
Formatos Imagem
Os formatos de campos tipo imagem controlam a aparência das imagens quando estas são mostradas ou impressas.
Durante a entrada de dados, o usuário sempre introduz imagens colando-as desde a área de transferência ou
arrastando-as e soltando-as, sem importar o formato de saída. Os formatos de imagem disponíveis estão na lista
Formatos de imagens da lista de propriedades. (tema “mostrar”).
As opções de truncado e de ajuste não afetam a imagem armazenada. O conteúdo de um campo tipo imagem sempre
é salvo. Somente a visualização da imagem em um formulário em particular se vê afetada pelo formato da saída.
Redimensionar
Os formatos de ajuste fazem que 4D redimensione a imagem para que se ajuste às dimensões da área do campo.
Truncado (Centralizado e não centralizado)
O formato truncado (centralizado) faz com que 4D centralize a imagem no campo e trunque as bordas que não se
ajustam dentro da área do campo. 4D trunca igualmente cada esquina e de cima para baixo.
O formato truncado (não centralizado) faz com que 4D localize a parte superior esquerda da imagem na esquina
superior esquerda do campo e trunca todas as partes que saiam da borda da área do campo. 4D trunca de direita e
parte superior.
Nota; Quando o formato de imagem está Truncado (não centralizado), é possível adicionar barras de rolagem a área
do campo ou da variável. Para maiores informações, consulte o parágrafo Barra de rolagem.
- 364 -
Truncado centrado
Truncado não centrado
Ajustado
Quando se utiliza Ajustado (Proporcional), a imagem se reduz proporcionalmente por todos os lados para que se ajuste
a área criada para a imagem. A opção de Ajustado centralizado (proporcional) faz o mesmo mas centraliza a imagem
na área da imagem.
Se a imagem é menor que a área definida no formulário, a imagem não será modificada.
Se a imagem é maior que a área definida no formulário, a imagem se reduz proporcionalmente. Como a imagem se
reduz proporcionalmente, não aparece distorcida.
Se aplicou o formato Imagem proporcional centrada, a imagem se centra na área do campo:
Ajustado (proporcional)
Ajustado proporcional centrado
Sobre o fundo
O formato imagem sobre fundo faz com que a imagem seja transparente. Todos os objetos localizados atrás da
imagem tais como campos ou variáveis são visíveis através da imagem.
Nota: Se você imprimir imagens com o formato Sobre fundo, serão impressas como mapa de bits.
Quando um campo tipo imagem está neste formato, o usuário pode mover a imagem dentro do campo imagem
arrastando-a. 4D lembra a posição do objeto sobre o fundo. A imagem a seguir mostra um formulário que inclui uma
imagem com o formato Sobre fundo.
Repetido
Quando a área que contém uma imagem com o formato Repetido é aumentada, a imagem não se deforma, mas se
repete quantas vezes forem necessárias para preencher a área completamente.
- 365 -
->
Se o campo se reduz a um tamanho menor que a imagem original, a imagem é truncada (não centralizada).
- 366 -
Guardar como Valor ou Referência
A opção Guardar como valor/referência se encontra no tema "Fontes de dados" para os objetos de tipo campo,
variável e menus emergentes/listas deslocadas:
Esta opção define, no contexto de um campo ou de uma variável associada a uma lista de valores (enumeração), o tipo
de conteúdo a armazenar no campo:
Guardar como Valor (opção por padrão): O valor do elemento escolhido na lista pelo usuário se guarda
diretamente. Por exemplo, se o usuário seleciona o valor "Blue", este valor é salvo no campo. Este funcionamento
é o das versões anteriores de 4D.
Guardar como Referência: a referência do elemento da lista de seleção que será guardado no objeto. A
referência de um elemento de lista é um valor numérico associado com cada elemento via o parâmetro
refElement dos comandos APPEND TO LIST ou SET LIST ITEM, ou no editor de listas:
Esta opção permite otimizar o uso de memória: O armazenamento de valores numéricos nos campos utiliza menos
espaço que o armazenamento de cadeias de caracteres. Também faz com que seja mais fácil a tradução das
aplicações: Pode criar múltiplas listas em diferentes idiomas, mas com as mesmas referências de elementos e
carregar a lista em função da linguagem da aplicação.
O uso da opção Guardar como Referência exige o cumprimento dos seguintes princípios:
Para poder armazenar a referência, o campo ou variável devem ser de tipo numérico (independentemente do tipo
de valor mostrado na lista).
Referências válidas e únicas devem estar associadas aos elementos da lista.
Se ativar esta opção para um objeto pop-up menu/lista deslocada, deve estar associado a um campo (ver Utilizar
uma lista de seleção).
Esta opção é compatível com as listas de opções definidas na estrutura. Neste caso, só pode ser selecionado
uma opção em cada formulário onde se utiliza o campo enumerado.
Example
Você deseja utilizar um campo "Título" para as pessoas: Sr., Sra., Dr., Monsenhor, etc. Para isso, é criado um campo
de tipo inteiro longo chamado "Título". Se define uma lista de opções (chamado "Títulos") que contém todos os títulos
possíveis e se associam ao campo.
No formulário de entrada, se mostra o campo "Título " duas vezes com a finalidade de ilustrar o mecanismo
implementado: Uma vez como um pop -up e outra vez como uma área de entrada. Ambos objetos se associam a
mesma lista de opções e os dados se guardam como referência:
- 367 -
Durante a entrada, pode ser selecionado um valor no menu emergente e se mostra corretamente em ambos objetos:
Nota: neste formulário, se mostra a janela "Lista de opções " quando a área de entrada tem o foco. Para não mostrar
mais esta janela, pode utilizar um menu deslocado para a entrada (e a visualização) do valor. Menus
suspensos/Listas suspensas).
Pode configurar o formulário de saída com o mesmo princípio: se seleciona a opção Referência para guardar o campo
Título:
Durante a execução, o valor se mostra corretamente:
- 368 -
Arrastar e soltar
Diversas propriedades estão disponíveis no tema "Ação" da Lista de propriedades para configurar o arrastar e soltar
nos formulários. O número e a ação dessas propriedades dependem do tipo de objeto ao qual se aplicam.
Arrastável e soltável
Estas propriedades controlam a possibilidad do usuário, de arrastar e soltar o objeto e de se o objeto pode reciber
dados que o usuário arraste.
Se quer permitir arrastar e soltar um objeto em particular, selecione a propriedade correspondente. Neste caso, toda
operação de arrastar e soltar efetuada no objeto durante a execução do formulário desencadeará o evento de
formulário correspondente. Após isso deve administrar a ação de arrastar e soltar utilizando um método. Para mais
informação, consulte Arrastar e Soltar no manual Linguagem de 4D.
Nota: a propriedade Arrastável pode ser atribuída a objetos não editáveis. Este princípio permite ao desenvolvedor
programar a resposta ao soltar um objeto em um campo ou uma variável não editável.
Arrastar e soltar automático
As áreas de texto ativas (campos e variáveis), combo boxes e as áreas de imagens (campos e variáveis) incluem
opções adicionais destinadas a gestão de arrastar e soltar automática. O arrastar e soltar automático permite copiar ou
excluir diretamente do texto ou das imagens entre as áreas de formulários. Pode ser utilizada na mesma área 4D, entre
duas áreas 4D ou entre 4D e outra aplicação por exemplo,
WordPad®.
Por exemplo, o arrastar e soltar automáticos permite copiar um valor entre dois campos sem utilizar programação:
Para ativar o arrastar e soltar automático, deve selecionar as propriedades correspondentes no tema "Ação" da Lista
de propriedades para o objeto.
Para mais informação, consulte Arrastar e Soltar no manual Linguagem 4D.
- 369 -
Ações padrões
Esta seção descreve todas as ações automáticas que podem ser atribuídas a um botão e a certos objetos ativos dos
formulários (ou a comandos de menu, consulte o parágrafo Especificar a ação do menu).
Sem ação: use um botão Sem ação para um botão que não realize uma ação automática. Escolha Sem ação
quando necessite escrever um método para controlar um botão. Por exemplo, um botão que mostre uma caixa de
diálogo de pesquisa personalizada em uma aplicação teria Sem ação como ação automática porque é
necessário definir um método para abrir a caixa de diálogo de pesquisa personalizada.
Ações aceitar e cancelar: clicar em um botão Aceitar salva o registro e dispara o evento On Saving New Record
Event ou On Saving Existing Record Event além de On Validate. . Clicar em um botão Cancelar sai do registro
atual sem salvar as alterações.
Eliminar registro: clicar em um botão Eliminar registro mostra um alerta pedindo ao usuário confirmar a
eliminação. Ao clicar em Sim no alerta, o registro atual é eliminado. Se o usuário estiver utilizando o formulário de
entrada para um subregistro, Eliminar registro eliminar o subregistro atual.
Uma vez que o usuário clique no botão Eliminar registro, 4D automaticamente volta ao formulário de saída.
Nota: Um botão com esta ação é desativado automaticamente quando se adiciona um novo registro.
Ações de navegação entre registros: os botões Próximo registro, Registro anterior, Primeiro registro e
último registro primeiro aceitam o registro atual e logo tornam o registro especificado como atual. O registro
específico que será convertido em registro atual por um destes botões depende da ordem de seleção.
Estas ações são apropriadas em subregistros quando o usuário está introduzindo subregistros.
Um objeto deste tipo é desativado automáticamente quando sua ação não é apropriada. Por exemplo, se o
usuário mostra o primeiro regitro, o botão Registro anterior é desativado.
Ações de navegação entre páginas: os botões Primeira página, Última página, Próxima página e Página
anterior mostram a página especificada em um formulário multipáginas. Se o formulário tem somente uma
página, estes botões são desativados.
Um botão deste tipo é desativado automaticamente quando sua ação não é apropriada. Por exemplo, se o
usuário mostra a primeira página, o botão Primeira Página é desativado.
Modificar subregistro: esta ação pode ser utilizada em três contextos: os list box, os subformulários e os
formulários listados mostrados utilizando os comandos MODIFY SELECTION / DISPLAY SELECTION ou no
modo Desenho.
List box: um botão associado a ação estandarte Modificar subregistro se ativa automaticamente quando
pelo menos uma linha de list box de tipo "selection" está selecionada (ver Utilizar ações estandarte).
Subformulario: localizado no formulário de um registro pai, este botão está ativo quando o registro do
subformulário estiver selecionado.
Se o usuário seleciona um subregistro e logo clica no botão Modificar subregistro, o subregistro passa ao
modo edição, seja diretamente na lista, ou no formulário detalhado associado (dependendo das
propriedades do subformulário).
Formulários listados: este botão está ativo quando um registro está selecionado na lista. Quando um usuário
clica neste botão, o registro passa ao modo edição. Com as listas mostradas através dos comandos
MODIFY SELECTION / DISPLAY SELECTION a modificação é efetuada na lista ou na página detalhada
dependendo do valor do parâmetro enterList. Na janela de visualização de registros, a modificação é
efetuada na página detalhada (a ação é equivalente a um clique duplo).
Adicionar subregistro: esta ação pode ser utilizada em três contextos: os list box, os subformulários e
formulários listados suspensos utilizando os comandos MODIFY SELECTION / DISPLAY SELECTION ou na
janela de visualização de registros no modo Desenho.
List box: um botão associado a ação estandarte Adicionar subregistro se ativa automaticamente quando
pelo menos um list box de tipo "selection" está presente no formulário (ver Utilizar ações estandarte).
Subformulário: localizado no formulário de um registro pai, este botão está ativado quando um registro do
subformulário estiver selecionado.Quando o usuário clicar neste botão, 4D cria um novo registro na tabela
ou subtabela relacionada, seja diretamente na lista, ou no formulário detalhado associado (em função das
propriedades do subformulário).
Formulários listados: este botão está ativado sempre. Quando o usuário clica neste botão , é criado um
novo registro vazio, Com as listas suspensas utilizando os comandos MODIFY SELECTION / DISPLAY
SELECTION o registro é adicionado na lista o una página detalhada dependendo do valor do parâmetro
enterList.. Na janela de visualização de registros, o registro é adicionado à lista.
Eliminar subregistro: esta ação pode ser utilizada em três contextos: os list box, os subformulários e formulários
listados mostrados utilizando os comandos MODIFY SELECTION/ DISPLAY SELECTION ou na janela de
visualização dos registros em modo Desenho.
List box: um botão associado a ação estandarte Eliminar subregistro se ativa automaticamente quando
- 370 -
pelo menos uma linha de list box de tipo "selection" está selecionada no formulário (ver [#title id="3411"/]).
Subformulário: localizado no formulário de um registro pai, este botão está ativo quando um subregistro tiver
sido selecionado em um subformulário.
Formulários listados: este botão está ativo quando pelo meno um registro estiver selecionado na lista.
Quando o usuário clica neste botão, aparece uma caixa de diálogo, que permite confirmar ou cancelar a
eliminação
Para maiores informações sobre a utilização de botões em subformulario, consulte o parágrafo .
Separador automático: esta ação automática permite criar separadores personalizados em seus formulários.
Esta ação só pode ser atribuída a um botão invisível (ver Botões). Quando se atribui esta ação a um botão
invisível, este se comporta como um separador. Colando uma imagem no botão invisível, é possível criar qualquer
tipo de interface personalizada para seus separadores. Para maiores informações sobre separadores, consulte
Separador..
Desfazer: cancela a última ação efetuada (= ao comando Desfazer do menu Edição). Não se deve confundir
Desfazer com Cancelar (= cancela as modificações realizadas a um registro durante sua visualização e retorna
ao formulário de saída).
Refazer: repete a última ação cancelada (= ao comando Refazer do menu Edição).
Cortar: apaga a seleção e a guarda na área de transferência
Copiar: guarda uma cópia da seleção na área de transferência
Colar: insere o conteúdo da área de transferência onde se encontra o cursor.
Excluir: apaga a seleção. Se não existe nada selecionado, apaga a totalidade da área que contém o cursor
(somente áreas editáveis).
Selecionar tudo: seleciona todos os elementos selecionáveis no contexto.
Mostrar área de transferência: abre uma nova janela que mostra o conteúdo atual da área de transferência.
Propriedades do banco: mostra a caixa de diálogo padrão de Propriedades do banco. (ver nota na parte
inferior).
Aplicação: passa ao primeiro plano a janela e a apaga de menus do modo Aplicação de 4D.
Sair: mostra uma caixa de diálogo de confirmação “Tem certeza?”, logo sai da aplicação 4D em caso de
validação. Caso contrário, a operação é cancelada.
Quando esta ação é atribuída a um botão com o qual um método de objeto também está associado, se executa a
seguinte seqüência: primeiro, aparece a caixa de diálogo de confirmação. Se for validada, 4D executa o método
do objeto. Depois de sua execução, a aplicação se fecha.
Nota Mac OS: em Mac OS X, os comandos de menus personalizados associados às ações Propriedades do
banco e Sair se localizam automaticamente no menu da aplicação, quando o banco de dados é executado neste
ambiente. Este mecanismo simplifica o controle do comando Quit sob Mac OS X
Retorno ao modo Desenho: passa ao primeiro plano as janelas e a barra de menus do modo Desenho de 4D.
Quando o banco se executa em modo interpretado, esta ação provoca a visualização da janela atual do modo
Desenho. Quando o banco se executa em modo compilado, esta ação provoca a visualização da janela de
registros da tabela atual (em modo compilado, somente o acesso aos registros é possível).
CSM: mostra a janela do Centro de segurança e manutenção.
Ir a página: esta ação está disponível apenas para objetos do tipo Abas. Quando essa opção estiver ativa, 4D
mostra automaticamente a página do formulário correspondente ao número de aba selecionada. Para mais
informação, consulte Ação Goto Page
As seguintes ações são utilizadas no contexto de um formulário que contém uma área web (para maiores informações
sobre este tipo de objeto, consulte o parágrafo Área Web).
Abrir URL anterior: provoca a abertura da URL anterior entre a seqüência de navegação efetuada pelo usuário
na área web. Se não existe uma URL anterior, ou seja, se o usuário só mostrou uma página na área, o botão ou o
comando de menu associado se desativa.
Abrir próxima URL: provoca a abertura da URL seguinte entre a seqüência de navegação efetuada pelo usuário
na área web. Se não existe uma URL seguinte, ou seja, se o usuário não retrocedeu uma página na seqüência, o
botão ou o comando de menu associado se desativa.
Atualizar URL atual: recarrega o conteúdo atual da área web.
Parar carga URL: para a carga da página e/ou os objetos presentes na URL atual na área web.
- 371 -
Efeito espelho (Windows)
A opção Efeito espelho (windows) (no tema "Imagem" da lista de propriedades) pode ser aplicada a qualquer objeto
ativo que utilize imagens:
Esta opção faz com que a imagem associada com o objeto seja invertida quando apareça em uma aplicação em modo
"direita - esqueda" em Windows. Está disponível para campos e variáveis de tipo Imagem, Botões Imagem e Menus
suspensos (pop up) de imagem, Botões 3D, caixas de seleção 3D e Botões de opção 3D, Botões opção imagem,
assim como em imagens estáticas.
Esta opção é detalhada em Usar imagens estáticas.
- 372 -
Multiestilo (área Rich text)
Visão Geral
4D permite o uso das áreas de texto enriquecido com variações de estilo individuais. Por exemplo, agora é possível ter
palavras em negrito e cursiva ou coloridas dentro de uma área de texto:
Esta função se aplica aos campos e variáveis do tipo Alfa e texto, e também as listbox. Tem suporte para formulários
página, lista, tanto para visualização quanto para impressão.
Nota: não pode ser utilizada áreas de texto enriquecido nos seguintes contextos: filtros de entrada, relatórios rápidos e
editor de etiquetas.
As opções específicas na Lista de propriedades configuram o funcionamento das áreas de texto enriquecido.
Os atributos disponíveis são fonte, tamanho, estilo, cor do texto e (apenas em Windows) cor de fundo. Para modificar os
atributos de estilo em uma área de texto enriquecido, há duas possibilidades diferentes:
Durante a execução, utilize um menu pop up automático (a disponibilidade desse menu se configura na lista de
propriedades)
Por programação, usando o comando ST SET ATTRIBUTES.
Nas áreas de texto enriquecido, os atributos de estilo são armazenados como etiquetas HTML de tipo <SPAN>.
Quando são mostradas na área texto, estas etiquetas são interpretadas por 4D. Isto significa que o desenvolvedor pode
especificar e modificar os atributos de estilo em um texto por programação. Os atributos <SPAN>; suportados por 4D
estão descritos a seguir. O comando ST Get plain text recupera o texto plano sem etiquetas de estilo.
Para una descrição dos comandos que manipulam as áreas de texto enriquecido e as etiquetas <span> suportadas,
consulte o capítulo no manual de Linguagem de 4D.
Propriedades de texto enriquecido
As propriedades de gestão de texto enriquecido estão disponíveis para as variáveis editáveis, os capos e as células de
listbox de tipo alfa ou texto.
Multiestilo
Esta opção (tema "Texto") ativa a possibilidade de utilizar estilos específicos na área selecionada. Quando esta opção
estiver ativa, 4D interpreta as possíveis etiquetas HTML <SPAN> presentes na área.
Por padrão, esta opção não está selecionada.
Guardar com etiquetas de estilo padrão
Esta opção só aparece quando Multiestilo estiver selecionado. Também se encontra no tema "Texto".
Quando esta opção estiver selecionada, a área armazenará as etiquetas de estilo com o texto, inclusive se não tiver
feito nenhuma modificação. Neste caso, as etiquetas correspondem ao estilo padrão. Quando esta opção não estiver
selecionada, só se guardam as etiquetas de estilo modificadas.
Por exemplo, este é um texto que inclui uma modificação de estilo:
- 373 -
Se a opção "Guardar as etiquetas padrão " não estiver selecionada, a área só guarda a modificação.O conteúdo
armazenado é então:
Que <SPAN STYLE="font-size:13.5pt">bonito</SPAN> dia!
Se a opção estiver selecionada, a área guarda toda a informação de formato. Uma primeira etiqueta genérica descreve
o estilo por padrão assim que cada variação é objeto de um par de etiquetas adicionadas. O conteúdo armazenado na
área é portanto:
<SPAN STYLE="font-family:'Arial';font-size:9pt;text-align:left;fontweight:normal;font-style:normal;text-decoration:none;color:#000000;backgroundcolor:#FFFFFF">Que <SPAN STYLE="font-size:13.5pt">bonito</SPAN> dia!</SPAN>
Menu contextual
Esta opção (tema "Entrada") só aparece quando a opção Multiestilo foi selecionada.
A opção Menu contextual ativa para o usuário a possibilidade de chamar durante a entrada de dados a um menu
emergente com um clique direito na área.
Este menu pop-up oferece os seguintes comandos:
comandos padrão de edição de texto (cortar, copiar, colar)
Fontes...: mostra a caixa de diálogo sistema de gestão de fontes
Fontes recentes: mostra os nomes das últimas fontes selecionadas durante a sessão. A lista pode armazenar
até 10 fontes (mais além disso, a última fonte utilizada substitui a mais antiga). Por padrão, a lista estará vazia e a
opção não será mostrada. Pode administrar esta lista utilizando os comandos SET RECENT FONTS e FONT
LIST.
comandos de modificação de estilo suportados: fonte, tamanho, cor, estilo e cor de fundo:
Quando o usuário modifica um atributo de estilo através deste menu emergente, 4D gera o evento de formulário On
After Edit.
- 374 -
Notas:
Também é possível modificar os estilos através do comando ST SET ATTRIBUTES. Leve em consideração que
neste caso, não se gera nenhum evento formulário.
O estilo "tachado" não é compatível com Mac OS. Entretanto, a etiqueta correspondente pode ser utilizada por
programação.
Processamento de texto enriquecido
Copiar-colar e arrastar-soltar
Os atributos de estilo suportados (fonte, tamanho, estilo e cor) são conservados em caso de arrastar-soltar ou copiarcolar texto com estilo entre:
diferentes áreas de texto enriquecido em 4D (variáveis/campos texto e list boxes),
uma área 4D Write e uma área de texto enriquecido 4D,
um texto externo com estilo e uma área de texto enriquecido 4D.
Nos outros casos, os estilos se manterão dependendo do contexto.
Mouseover
São propostas duas novas funções automáticas quando o mouse se move sobre uma área multi estilo:
Quando se move sobre uma seleção de texto, o cursor se converte em uma flecha:
Quando se move sobre um URL, aparece uma mensagem de ajuda que contém o endereço:
Nota: pode inserir links URL usando o comando ST INSERT URL.
- 375 -
Multilinha
As propriedades específicas do tema "Controle de entrada" permitem controlar dois parâmetros relacionados com a
visualização e impressão das áreas de texto (campos e variáveis) nos formulários:
Visualização de palavras localizadas no extremo da linha nas áreas de uma linha apenas.
Inserção automática de retornos de linha nass áreas de texto
Nota: os retornos de carro não podem ser usados em objetos de tipo Alfa.
Multilinha
Esta propriedad está disponível para as variáveis e campos de tipo alfa e texto, editáveis e não editáveis. Pode ter três
valores diferentes: Sim, Não, Automática.
Multilinha = Automático
Nas áreas de uma linha só, as palavras localizadas no final de linhas são truncadas e não há retornos de linha.
Nas áreas de várias linhas, 4D realiza os retornos de linha automáticos:
Multilinha = Não
Nas áreas de uma só linha, as palavras localizadas ao final de linhas são truncadas e não há retorno de linha.
Não há retornos de linha: o texto é mostrado sempre com uma só linha. Se o campo ou a variável Alfa ou Texto contém
retornos de carro, o texto situado atrás do primeiro retorno de carro é eliminado logo que a área seja modificada:
Multilinha = Sim
Aol selecionar este valor, aparece uma opção adicional Ajuste de linha. Deve estabelecer um valor para esta opção.
Ajuste de linha
Esta propriedade só está disponível quando a opção Multilinha estiver em Sim. Essa propriedade pode ter três
valores: Sim, Não e Automático.
Nota: para que estas propriedades sejam consideradas corretamente, os objetos de texto não deven ter Barra de
- 376 -
rolagem.
Ajuste de linha= Automático
Nas áreas de uma só linha, o texto é mostrado até o primeiro retorno de carro ou até que a última palavra se possa
mostrar completa. 4D insere os retornos de linha, é possível deslocar o conteúdo da área pressionando a tecla flecha
para baixo.
Nas áreas de várias linhas, 4D realiza os retornos de línea automaticamente:
Ajuste de linha = Sim
Nas áreas de uma só linha, o texto é mostrado até a última palabva que se possa mostrar por completo. 4D insere os
retornos de linha, é possível deslocar o conteúdo da área pressionando a tecla flecha para baixo..
Nas áreas de várias linhas, 4D realiza os retornos de línea automaticamente:
Ajuste de linha = Não
4D não faz nenhum retorno de linha automático e a última palavra que se pode mostrar pode estar truncada. Nas áreas
tipo texto, se suportam os retornos de carro:
- 377 -
- 378 -
Barra de rolagem
Pode associar barras de rolagem a vários tipos de objetosObjetos de campo e variáveis de tipo Texto ou
Imagem,listas hierárquicas, list boxes e subformulários. Essas propriedades podem ser administradas usando a Lista
de propriedades ou por programação com a ajuda do comando SET SCROLLBAR VISIBLE.
As propriedades Barra de rolagem horizontal e Barra de rolagem vertical são ativadas no tema “Aparência” da
Lista de propriedades.
Para os objetos de tipo imagem, as listas hierárquicas e list boxes, estas propriedades se definem via um menu e
suportam o modo automático.
Para os objetos de tipo Texto e os subformulários, estas propriedades se definem utilizando as caixas de
seleção.
Nota: Se um campo ou objeto de tipo texto não tem barra de rolagem, o usuário pode navegar através do conteúdo
utilizando as teclas de movimento (setas).
Barras de rolagem para imagens
Os objetos de tipo imagem, lista hierárquica e list box podem ter barras de deslocamento em modo automático.
Nota: os objetos imagem podem ter barras de deslocamento quando o formato de visualização da imagem é
"Truncado (não centrado)." Para obter mais informação sobre os formatos de visualização das imagens, consulte o
parágrafo "Formatos imagem" na seção [#title id="985"/].
Neste caso, as propriedades Barra de rolagem horizontal e Barra de rolagem vertical se definem com a ajuda de
um menu de três opções:
Sim: a barra de rolagem está sempre visível, inclusive quando não é necessário (em outras palavras, quando o
tamanho da imagem é menor que a moldura).
Não: a barra de rolagem nunca está visível.
Automática: a barra de rolagem aparece automaticamente quando é necessário (em outras palavras, quando o
tamanho da imagem é maior que a moldura).
Teclas de deslocamento
Quando um objeto de tipo Imagem tem uma barra de deslocamento, o usuário dispõe automaticamente de comandos
de deslocamento no teclado. As seguintes teclas são suportadas:
- 379 -
Tecla(s)
Ação
Teclas de flecha
Alt + Teclas de flecha
Re Pág / Av Pág
Maius + Re Pág / Av Pág
Inicio
Fin
Maius + Inicio
Maius + Fim
Roda do mouse
Maius + Roda do mouse
Deslocamento no endereço da flecha (= clique no cursor de deslocamento)
Deslocamento pixel por pixel na direção da flecha
Deslocamento vertical página por página (relacionado com a altura da área)
Deslocamento horizontal página por página (relacionado com a largura da área)
Visualização do limite superior da imagem
Visualização do limite inferior da imagem
Visualização do limite esquerdo da imagem
Visualização do limite direito da imagem
Deslocamento vertical (disponível em 4D v12)
Deslocamento horizontal (disponível em 4D v12)
Note que a partir de 4D v13.2, o deslocamento de imagens dispara o Form event On Picture Scroll.
- 380 -
Menu contextual (imagens)
É possível associar um menu contextual automático às variáveis e campos de tipo Imagem. Para fazer isso,
simplesmente selecione a opção Menu contextual no tema “Texto e imagem” da Lista de propriedades:
Uma vez selecionada esta opção, a área terá um menu contextual quando o formulário for executado em modo Desenho
ou em modo Aplicativo. O usuário dispõe dos comandos de edição e visualização ao clicar na imagem com o botão
direito do mouse:
O menu também pode ser utilizado para modificar o formato de visualização da imagem: são oferecidas as opções
Truncado não centrado, Ajustado e Ajustado centrado (prop).
Além dos comandos de edição padrão (Cortar, Copiar, Colar e Apagar), o menu também contém o comando
Importar..., que permite importar uma imagem salva em um arquivo, como também o comando Salvar como..., que
permite salvar a imagem no disco. Estes dois comandos aproveitam a gestão nativa de imagens: permitem
respectivamente abrir e salvar imagens em qualquer formato nativo suportado por 4D. A modificação do formato de
visualização utilizando este menu é temporária; não é salva com o registro. Para maiores informações sobre os
formatos de visualização de imagens, consulte o parágrafo GET LIST ITEM PARAMETER.
Se a variável ou o campo imagem não é editável, somente os comandos Copiar, Salvar... e os comandos de formato
estão disponíveis.
Nota: a propriedade Menu contextual também pode estar disponível para os campos e as variáveis de tipo Texto.
Neste caso, depende da propriedade Multiestilo (ver Multiestilo (área Rich text)).
- 381 -
Atalho de teclado
Pode criar um atalho de teclado a Botões e Caixas de seleção. O usuário pode ativar o botão ou selecionar a caixa
de selecão utilizando o teclado no lugar do mouse.
Pode configurar esta opção clicando no botão [...] localizado na propriedade Atalhos do tema “Controles de entrada” da
Lista de propriedades:
Aparece a seguinte caixa de diálogo:
Escreva o atalho de teclado. Por exemplo, se você quer utilizar Ctrl+H, mantenha pressionada a tecla Ctrl e pressione
H. A letra h aparecerá então na área tecla associada e a caixa de seleção debaixo da tecla Ctrl será marcada. Não é
necessário utilizar modificadores. Você pode utilizar qualquer tecla apenas como atalho, ainda que não é recomendável
na maioria dos casos. Se você desejar, pode modificar manualmente a seleção de teclas modificadoras selecionando
ou deselecionando qualquer das caixas de seleção das teclas modificadoras.
Para começar novamente, clique em Excluir. Quando terminar, clique em Aceitar.
A lista de propriedades indica o atalho de teclado que foi atribuído ao objeto. Se mais adiante você quiser mudar o
atalho, simplesmente abra a caixa de diálogo Atalhos e escreva a combinação de teclas a ser utilizada.
Nota: também pode associar um atalho para um comando de menu personalizado. Se houver conflito entre dois
atalhos, o objeto ativo tem a propriedade. Para mais informação sobre atalhos associados a menus, consulte Definir
as propriedades dos menus.
- 382 -
Memorização da geometria das janelas
4D v14 inclui novas funções automáticas de memorização da aparência precisa das janelas quando se fecham (sua
"geometria”), permitindo aos usuários encontrar seu entorno de trabalho no mesmo estado que o deixaram.
Estas funções automáticas interessam as coordenadas das janelas, a posição dos diferentes objetos que contém,
assim como o estado atual de certos objetos, tais como Controle de abas.
Nota: As novas funções automáticas só se suportam se os formulários voltam a se abrir com o mesmo tamanho que
tinham ao ser fechados. Consequentemente, que tem base principalmente no uso do comando Open form window
com o parâmetro *.
Opção de formulário Guardar Geometria
Para ativar o mecanismo de memorização automática, deve selecionar a opção Guardar Geometria que se encontra
nas Propriedades de formulário:
Quando se ativa esta opção, vários parâmetros do formulário são salvos automaticamente por 4D quando a janela se
fecha, independentemente da forma em que se modificaram durante a sessão:
a página atual,
a posição, o tamanho e a visibilidade de cada objeto do formulário (incluindo o tamanho e a visibilidade das
colunas de list box).
Nota: esta opção não leva em conta os objetos gerados mediante o comando [#cmd id="1111"/]. Para que o usuário
recupere seu entorno quando utiliza este comando, o desenvolvedor deve repetir a sequência de criação, definição e
posicionamento dos objetos.
Quando esta opção está selecionada, a opção Guardar valor também está disponível para alguns objetos (ver o
seguinte parágrafo).
Opção Guardar Valor
A opção Guardar valor se encontra na seção "Objetos" da Lista de propriedades:
- 383 -
Esta opção está disponível quando:
Opção de formulário Guardar Geometria está selecionada para o formulário,
o objeto selecionado contribui a geometria global do formulário. Por exemplo, esta opção está disponível para as
caixas de seleção, já que seu valor pode ser utilizado para ocultar ou mostrar áreas adicionais na janela (ver
exemplos mais à frente).
Aqui está a lista de objetos cujo "valor" pode ser memorizado:
Objeto
Valor guardado
Botão de rádio
Botão de rádio 3D
Caixa de seleção
Caixa de seleção 3D
Guias
Pop-up/Lista deslocável
Menu imagem deslocável
Valor da variável associada (1, 0, True ou False para botões de acordo a seu tipo)
Valor da variável associada (0, 1)
Valor da variável associada (0, 1, 2)
Valor da variável associada (0, 1)
Número de guia selecionada
Número de linha selecionada
Número de linha selecionada
Armazenamento e uso de informação
4D v14 conserva as coordenadas das janelas quando se fecham, assim como seu estado maximizado sob Windows
quando foram gerados utilizando a instrução Open form window (nomeFormulário; *).
Esta informação, assim como a que pode ser salva opcionalmente (geometria e valor) se salva em formato JSON na
pasta do usuário atual da máquina, ao momento de fechar a janela. Graças a este princípio, inclusive quando se utiliza a
conta "Usuário por padrão", cada usuário que se conecta com sua própria máquina pode manter seu próprio entorno.
Esta informação só se utiliza se o formulário se torna a abrir com as mesmas dimensões e que quando se fechou. Este
princípio implica seja a que instrução Open form window(*) se utilizou ou que o desenvolvedor estabeleceu um
sistema personalizado para salvar as coordenadas.
A informação salva se restaura e volta a ser aplicada na seguinte ordem:
o tamanho e a posição das janelas se restauram quando o comando Open form window se executa
a página atual se restaura antes de chamar ao evento On Load
a posição, tamanho e visibilidade de cada objeto se restauram depois do evento On Load.
As propriedades dos objetos de sub-formulários se salvam e voltam a ser aplicados automaticamente da mesma forma.
Atenção: a informação salva sob as opções "Memorizar geometria " e " Memorizar valor" se reinicializam cada vez
que se modificam os objetos do formulário em modo Desenho (redimensionar, deslocar, adicionar, eliminar ou
mudar de nome). Portanto, é recomendado não utilizar esta funcionalidade da interface para salvar valores
recorrentes, tais como as preferências do usuário.
Exemplos
Memorização de separadores
Você deseja salvar as posições relativas dos separadores do formulário. Neste caso, basta com marcar a opção
Guardar geometria. Quando se abre o formulário, é visto como este:
- 384 -
O usuário muda o tamanho da janela e move os separadores. Os objetos se redimensionam de acordo a suas próprias
propriedades. Logo o usuário fecha a janela. Ao reabrir ela, os objetos conservam sua nova aparência:
Memorização de uma área retrátil
Em um formulário, foi colocado uma ou várias áreas alcançáveis administradas utilizando caixas de seleção 3D. Cada
caixa mostra um triângulo apontando a direita quando a área está contraída e apontando para baixo quando está
estendida. Há várias formas de configurar estas áreas (movimento ou visibilidade dos objetos, utilizando diferentes
páginas de formulário, etc.), e em todos os casos, o tamanho da janela pode variar.
Para que o estado das áreas alcançáveis se conserve entre duas sessões, deve:
selecionar a opção Guardar geometria para o formulário para que a página atual, posições e estados de
visibilidade dos objetos se conservem,
selecione a opção Guardar valor para a caixa de seleção de objetos 3D para que o valor da variável associada
se conserve (0 ou 1 para estado contraído ou expandido).
Memorizar Bordas
Em um formulário, você colocou as bordas com a ação padrão "Ir a página":
- 385 -
Neste caso, para que o mecanismo de memorização funcione corretamente, deve selecionar a opção Memorizar
geometria para o formulário e Memorizar valor para o objeto borda:
- 386 -
List boxes
Visão Geral
Propriedades específicas dos list Box
Propriedades específicas de colunas de list box
Propriedades específicas dos títulos de list box
Specific properties of List box footers
Criar e usar list box hierárquicas
Utilizar ações estandarte
Visualização de campos em list boxes
Visualização do resultado de uma petição SQL em um list box
- 387 -
Visão Geral
Os List box são objetos ativos complexos que permitem mostrar e introduzir dados em forma de colunas sincronizadas.
Estes objetos tem as mesmas características básicas das “áreas de rolagem agrupadas”, assim como novas
possibilidades estendidas (entrada de valores, classificação de colunas, aparência personalizada, rolagem de colunas,
etc.). Um objeto tipo List Box pode ser definido completamente utilizando o editor de formulários de 4D e também pode
ser controlado por programação.
Este parágrafo detalhas as novas características relacionadas com a criação e definição de objetos tipo List Box no
editor de formulários. Para maiores informações sobre o controle programado destes objetos, consulte o capítulo List
Box do manual de Linguagem 4D.
Tipo Seleção e tipo Array
Existem dois tipos de list boxes: os list box de tipo seleção e os list Box de tipo array.
List Box de tipo seleção: o número de linhas está baseado na seleção atual ou em uma seleção temporária.
Cada coluna está associada a um campo (por exemplo [Empregados]Nome) ou uma expressão 4D. A expressão
pode ser baseada em um ou mais campos (por exemplo [Empregados]Nome+“ ”[Empregados]Nome) ou a uma
fórmula (por exemplo Cadeia(Milisegundos)). A expressão também pode ser um método de projeto, uma variável
ou um elemento de array.
No caso de uma list Box baseada na seleção atual, qualquer modificação efetuada do lado do banco se
reflete automaticamente na list Box e vice versa. A seleção atual é portanto sempre a mesma nos dois
lugares.
List box de tipo array: o número de linhas está baseado no número de elementos do array. Cada coluna do list
box está associada com um array 4D. Por padrão, 4D atribui o nome “ColunaX” a cada variável de coluna e a
cada array associado. É possível mudar o nome nas propriedades da coluna. Com este tipo de list Box, a gestão
dos valores introduzidos ou mostrados nos list box são efetuados através da linguagem de 4D. Você também
pode associar uma lista de seleção a uma coluna para controlar a entrada de dados (ver o parágrafo
Propriedades específicas de colunas de list box).
Não é possível combinar em um mesmo list Box colunas associadas a campos (ou expressões) e colunas associadas
com arrays no mesmo list Box.
Descrição
Um list box contém uma ou mais colunas cujo conteúdo é sincronizado automaticamente. Por padrão, quando se cria
uma list box, esta contém apenas uma coluna. É possível modificar o número de colunas (adicionar, duplicar ou apagar
- 388 -
uma coluna) utilizando o menu contextual (clique na coluna ou no cabeçalho de uma coluna) ou nas propriedades do list
Box.
O número de colunas é, em teoria, ilimitado (depende dos recursos do computador).
Um list Box está composto de três partes distintas: o objeto list box em seu conjunto, as colunas os títulose os pés de
colunas. No editor de formulários, esta partes podem ser selecionadas separadamente. Cada uma dispõe do seu
próprio nome de objeto e de variável assim como de propriedades específicas. Por exemplo, o número de colunas ou a
cor alternada de cada linha é definida nas propriedades do objeto list Box, a largura de cada coluna é definida nas
propriedades da coluna e a fonte do título é definida nas propriedades do título.
Nota: Nos list Box de tipo seleção, as colunas não tem um nome de variável.
Um list box de tipo array pode ser visualizado em modo padrão ou em modo hierárquico. Os list boxes mostrados
em modo hierárquico utilizam os mecanismos específicos, descritos a seguir.
Utilizando list boxes
Durante a execução, os list box permitem mostrar e introduzir dados em forma de listas.
Para passar de uma célula a modo edição (se a entrada estiver autorizada para a coluna), simplesmente clique duas
vezes no valor que a contém:
Nota: para maior informação, consulte o parágrafo Gestão de entrada no manual de Linguagem de 4D.
É possível introduzir e mostrar o texto em várias linhas dentro de uma célula de list Box. Para adicionar um retorno à
linha:
em Windows, pressione as teclas Ctrl+Enter,
em Mac Os, pressione as teclas Opção+Enter.
Note que a altura das linhas não se redimensionam automaticamente.
É possível ordenar valores de colunas por meio de um clique em um título (ordenação padrão). A ordenação é
alfanumérica e alternativamente ascendente/descendente com cliques múltiplos. Todas as colunas se sincronizam
automaticamente.
Nota: para maior informação, consulte o parágrafo Gestão de ordenações no manual de Linguagem de 4D.
Também é possível redimensionar cada coluna:
O usuário pode modificar a ordem das linhas e colunas utilizando o mouse (se esta ação estiver autorizada):
- 389 -
Nota: Nos list box de tipo seleção, não é possível mudar a ordem das linhas movendo-as com o mouse.
O usuário pode selecionar uma ou várias linhas utilizando os atalhos padrões: Shift+clique para uma seleção contínua
e Ctrl+clique (Windows) ou Comando + clique (Mac OS) para uma seleção não adjacente.
Todas estas características podem ser controladas utilizando as propriedades do list Box, das colunas, dos cabeçalhos
e dos pés, as quais são detalhadas nos parágrafos a seguir.
Nota: as características específicas dos list boxes utilizados em modo hierárquico são descritas na seção Criar e usar
list box hierárquicas]
Imprimir list boxes
Os list boxes podem ser impressos em forma modo "pré-visualização" (impressão de uma imagem da área do list box)
ou em modo "avançado" (impressão dinâmica de tamanho variável). Para mais informação, consulte Imprimir list
boxes no Manual de Linguagem de 4D.
- 390 -
Propriedades específicas dos list Box
Quando se seleciona um objeto List Box do editor de formulários, a lista de propriedades mostra as seguintes
propriedades específicas. Note que as propriedades especificas adicionais estão disponíveis quando seleciona uma
coluna de list box (ver Propriedades específicas de colunas de list box), um título de coluna (ver Propriedades
específicas dos títulos de list box) ou um rodapé de coluna (ver Specific properties of List box footers).
Tema Objetos
Este tema inclui a propriedade Fonte de dados que é utilizada para especificar o tipo de list box:
Selecione a opção Seleção atual se você quiser utilizar expressões, campos ou métodos cujos valores serão
avaliados para cada registro da seleção atual de uma tabela.
Selecione a opção Seleção temporária se você quiser utilizar expressões, campos ou métodos cujos valores
serão avaliados para cada registro de uma seleção temporária.
Selecione a opção arrays se você quiser utilizar elementos do array como linhas do list Box.
A opção arrays é necessária se você quiser recuperar o resultado de uma consulta SQL em um list Box (ver
o parágrafo Visualização do resultado de uma petição SQL em um list box).
Tema Fonte de dados
Este tema aparece somente para os list box de tipo seleção. Contém a propriedade tabela principal para os list Box
de tipo seleção atual ou seleção temporária para os list Box de tipo seleção temporária.
Tabela principal: permite especificar a tabela cuja seleção atual será utilizada. Esta tabela e sua seleção atual
serão a referência para os campos associados com as colunas do list Box (referências de campos ou expressões
que contém campos). Inclusive se algumas colunas contem campos de outras tabelas, o número de linhas
mostradas será definido pela tabela principal.
O menu associado a esta propriedade mostra todas as tabelas do banco, sem importar se o formulário está
relacionado a uma tabela (formulário tabela) ou não (formulário projeto). Por padrão, a propriedade mostra a
primeira tabela do banco. Para maiores informações sobre o comportamento desta propriedade, consulte o
parágrafo Visualização de campos em list boxes.
Seleção temporária: permite especificar a seleção temporária a ser utilizada. Você deve introduzir o nome de
uma seleção temporária válida. A seleção temporária pode ser processo ou interprocesso. O conteúdo do listbox
será baseado nesta seleção. A seleção temporária escolhida deve existir e ser validada no momento da
visualização do list Box, caso contrário o list Box será mostrado vazio. Se você deixar vazia a área do nome, o list
Box será mostrado vazio.
Nota As seleções temporárias são listas ordenadas de registros. São utilizadas para conservar em memória a
ordem e o registro atual de uma seleção. Para maiores informações, consulte Seleções temporárias no manual
de Linguagem de 4D.
Tema List Box
Este tema agrupa as propriedades fundamentais do objeto.
Número de colunas: número de colunas mostradas no list box (1 por padrão). É possível modificar o número de
- 391 -
colunas (adicionar, duplicar ou apagar uma coluna) utilizando o menu contextual (clique em uma coluna ou em um
título de coluna):
Número de colunas bloqueadas: número de colunas que devem ser mostradas permanentemente na parte
esquerda do list box, inclusive se o usuário se desloca pelas colunas horizontalmente. Uma coluna bloqueada
pode redimensionar-se, editar-se, etc. como toda coluna. Só sua posição no list box está bloqueada (não se
desloca). Isto pode ser útil, por exemplo, para mostrar os "títulos" das linhas em um array de grande tamanho.
Esta propriedade define uma "área bloqueada". Se uma coluna bloqueada se apagar por programação, o número
de colunas bloqueadas no list box diminui em 1. Da mesma forma, se uma coluna se penetra por programação na
área bloqueada, esta coluna se bloqueia automaticamente.
Nota: consulte a seção "Colunas bloqueadas e colunas fixas" para uma comparação de duas funcionalidades.
Número de colunas fixas: número de colunas que não podem se mover durante a execução. Este valor indica o
número de colunas fixas a partir da primeira coluna do list Box. Para evitar toda movimentação de colunas, este
valor deve ser igual ao número total de colunas. Esta propriedade leva em consideração as colunas invisíveis.
Por padrão, se o modo hierárquico não estiver ativo (Opção List box hierárquico não selecionada) o valor da
propriedade é 0, o que significa que todas as colunas podem se mover. Quando o modo hierárquico estiver ativo
(list boxes de tipo array unicamente), esta opção sempre é pelo menos 1.
Nota: consulte a seção "Colunas bloqueadas e colunas fixas" para uma comparação de duas funcionalidades.
Seleção múltipla: esta propriedade é adicionada para os list Box de tipo seleção somente. Permite especificar o
conjunto a ser utilizado para controlar os registros selecionados no list Box (quando está selecionada a fonte de
dados Arrays, é utilizado um array booleano com o mesmo nome que o list Box).
4D cria um conjunto padrão, chamado ListBoxSetN (N começa em 0 e aumenta em função do número de list
boxes no formulário), que pode modificar se for necessário (por ser um conjunto processo ou inter processo). O
conjunto é automaticamente mantido por 4D. Se o usuário seleciona uma ou mais linhas no list Box, o conjunto se
atualiza imediatamente. Se você quiser selecionar uma ou mais linhas por programação, aplique os comandos do
tema “Conjuntos” a este conjunto.
Notas
O estado ressaltado das linhas do list Box e dos registros da tabela são totalmente independentes.
Se a propriedade “Seleção múltipla” não contém um nome, não será possível realizar seleções no list Box.
Array linhas ocultas (list box de tipo array unicamente): permite ocultar uma ou várias linhas no listbox. Deve
introduzir o nome de um array de tipo Booleano. O array deve ter o mesmo número de elementos que o listbox.
Cada elemento do array representa o estado mostrado/oculto da linha correspondente no list box:
Para ocultar a linha, passe True,
Para mostrar a linha, passe False.
Se não foi definido um array ou se o array está vazio, todas as linhas do list box são visíveis. Por padrão, as linhas
adicionadas são visíveis.
Ocultar as linhas afeta unicamente a visualização do listbox. As linhas ocultas estão presentes nos arrays e podem
ser manipuladas por programação. Os comandos da linguagem, especialmente Get number of listbox rows ou
GET LISTBOX CELL POSITION, não levam em conta o estado oculto/mostrado das linhas. Por exemplo, em um
list box de 10 linhas onde 9 linhas estão ocultas, Get number of listbox rows devolve 10.
Desde o ponto de vista do usuário, a presença de linhas ocultas em um list box não é visível. Só as linhas visíveis
são selecionáveis (por exemplo via o comando Select All).
Modo de seleção: permite definir o modo de seleção das linhas no list box. Há três modos disponíveis:
Nenhum: não pode ser selecionada nenhuma linha e não é possível introduzir dados. A seleção e gestão de
dados pode ser realizada unicamente por programação. O clique ou o duplo clique na lista não tem nenhum efeito
(inclusive se a opção Editável está selecionada para as colunas) porém podem ser gerados os eventos On
Clicked e On Double Clicked. Neste modo, o desenvolvedor tem controle total das seleções (utilizando o conjunto
ressaltado) e da entrada de dados (utilizando o comando EDIT ITEM). Não são gerados os eventos de formulário
On Selection Change e On Before Data Entry. Por outra lado, o evento On After Edit pode ser gerado quando os
dados são introduzidos pelo usuário por meio do comando EDIT ITEM.
Linha única: uma só linha pode ser selecionada por vez.
Multilinhas: várias linhas (adjacentes ou não) utilizando atalhos padrão: Shift+clique para uma seleção contínua
e Ctrl+clique (Windows) ou Comando+clique (Mac OS) para uma seleção descontínua.
Clique duas vezes em uma fila (para list box tipo “seleção” unicamente): define a ação que será levada a cabo
quando um usuário faça clique duplo sobre uma fila no listbox. As seguintes opções estão disponíveis:
Não fazer nada (por padrão): fazer clique duplo em uma linha não desencadeia nenhuma ação automática.
Modificar Registro: clique duplo em uma linha mostra o registro correspondente no formulário detalhado
definido para o list box (ver o parágrafo " Formulário Detalhado" mais adiante). O registro está aberto em
- 392 -
modo leitura e escritura podendo ser modificado.
Mostrar registro: idêntica a ação anterior, exceto que o registro é aberto em modo de só leitura de maneira
que não possa ser modificado.
Nota: Ao fazer duplo clique em uma linha vazia não passa nada.
Independentemente da ação selecionada escolhida, é gerado o evento de formulário On Double clicked.
Para as duas últimas ações, o evento de formulário On Open Detail também é gerado. On Close Detail logo
é gerado quando é mostrado um registro no formulário detalhado associado ao list box antes de ser fechado
(sem importar se o registro foi modificado ou não).
Formulário detalhado (list box de tipo seleção unicamente): especifica o formulário a utilizar para modificar ou
mostrar os registros individuais do list box. O formulário definido é mostrado:
quando utilize as ações estandarte Adicionar Sub registro e Editar Sub registro aplicadas ao list box (ver
Utilizar ações estandarte),
quando clica duas vezes em uma linha e a propriedade Clique Duplo em linha está definida para "Editar
registro" ou "Mostrar Registro" (ver a seção “Clique duplo em uma fila” acima).
Colunas bloqueadas e colunas estáticas
As colunas bloqueadas e as colunas estáticas são duas funcionalidades separadas e independentes nos list box:
as colunas bloqueadas sempre se mostram à esquerda do list box, não se deslocam horizontalmente.
as colunas estáticas não se podem mover por arrastar e soltar ao interior do list box.
Nota: pode definir as colunas estáticas e as colunas bloqueadas por programação, ver o capítulo List Box no manual
de Linguagem de 4D.
Estas propriedades interajam da seguinte forma:
Se define unicamente colunas estáticas, não se podem mover.
Se define colunas bloqueadas, mas não estáticas, pode mudar sua posição livremente na área bloqueada. No
entanto, uma coluna bloqueada não se pode mover fora desta área bloqueada.
Se define um mesmo número de colunas bloqueadas como de colunas estáticas, não poderá mover as colunas na
área bloqueada.
- 393 -
Pode definir uma combinação de colunas bloqueadas e estáticas de acordo a suas necessidades. Por exemplo,
se define três colunas bloqueadas e uma coluna estática, o usuário pode intercambiar as duas colunas mais à
direita dentro da área bloqueada (já que só a primeira coluna é estática).
Temas cabeçalhos e rodapés
Estes temas administram a visualização e a altura dos cabeçalhos e dos pés de colunas do list box. Tenha em conta
que as áreas de cabeçalhos e de rodapés não são editáveis durante seu uso. Seus conteúdos sempre se calculam.
Mostrar cabeçalhos e Mostrar rodapés: permite mostrar ou ocultar os cabeçalhos ou os rodapés das colunas.
Não há outras opções disponíveis em cada tema a menos que esta propriedade esteja selecionada.
Uma vez a área se mostre no list box, pode selecionar fazendo clique nela para entrar a suas propriedades
específicas na Lista de propriedades (ver Propriedades específicas dos títulos de list box e Specific
properties of List box footers). Você dispõe de uma área de cabeçalho e de uma área de rodapé por coluna,
configuradas por separado.
Invisível por padrão: Como para todos os objetos de formulário, esta opção facilita a gestão dinâmica da
visualização do objeto utilizando o comando OBJECT SET VISIBLE.
O comando OBJECT SET VISIBLE não tem nenhum efeito se a opção "Mostrar cabeçalhos" ou "Mostrar
rodapés" correspondente não está selecionada na lista de propriedades.
Altura: permite definir a altura da linha de cabeçalho e da linha de rodapé do list box. Pode definir a unidade
(linhas ou píxels) para o valor da altura. Para obter mais informação ao respeito, consulte o parágrafo Altura em
píxels ou linhas a continuação.
Por padrão, a altura dos cabeçalhos e dos rodapés é de uma linha.
Atenção: a altura mínima em píxels dos cabeçalhos depende do sistema. Se passa um valor muito pequeno, será
substituído pelo tamanho mínimo definido no sistema para os cabeçalhos. Não há um tamanho mínimo para os
rodapés e as linhas.
Nota de compatibilidade: em Windows 7 e Windows Vista, a altura mínima dos cabeçalhos é de 24 píxels. Os
cabeçalhos de menor altura definidos em suas bases convertidas se redimensionarão automaticamente. Neste
- 394 -
caso, poderia ser necessário retomar seus formulários.
Também pode definir dinamicamente a altura da linha dos cabeçalhos e dos rodapés utilizando os comandos
LISTBOX SET HEADERS HEIGHT e LISTBOX SET FOOTERS HEIGHT.
Altura em píxels ou linhas
Pode se definir a altura dos cabeçalhos, rodapés e linhas em unidades de píxels ou de linhas de texto. Na lista de
propriedades, a eleição da unidade se realiza utilizando o botão associado ao campo "Altura".
Também pode inserir uma "L" (de linha) ou uma "P" (de píxels) diretamente na área de valor, (por exemplo, "17 P") e a
etiqueta do botão se atualiza em consequência.
Pode inclusive utilizar os dois tipos de unidades em um mesmo list box:
Quando se utiliza a unidade "píxels", o valor da altura se aplica diretamente à linha que se trate,
independentemente do tamanho das fontes contidas nas colunas. Se a fonte é muito grande, o texto se trunca.
Além disso, as imagens se truncam ou redimensionam em função de seu formato.
Quando se utiliza a unidade "Linha", a altura se calcula tendo em conta o tamanho da fonte da linha em questão.
Se mais de um tamanho se ajusta, 4D utiliza o mais grande.
Por exemplo, se a linha contém "Verdana de 18", "Ginebra, 12 e "Arial 9", 4D utiliza "Verdana 18" para determinar
a altura da linha (por exemplo, 25 píxels). Esta altura se multiplica pelo número de linhas definidas.
Nota: este cálculo não leva em conta o tamanho das imagens nem dos estilos aplicados as fontes.
Conversão das unidades: quando se passa de uma unidade a outra, 4D realiza automaticamente a conversão e
mostra o resultado na Lista de Propriedades. Por exemplo, se a fonte utilizada é "Lucida Grande 24", a altura "1
linha" se converte em "30 píxels" e a altura "60 píxels" se converte em "2 linhas".
Note que a conversão de um lado a outro pode dar lugar a um resultado final diferente do valor de partida devido
aos cálculos realizados automaticamente por 4D. Isto se ilustra nas seguintes sequências:
(fonte Arial 18): 52 píxels-> 2 linhas -> 40 píxeles
(fonte Arial 12): 3 píxels-> 0.4 linha arredondada a 1 linha -> 19 píxels
Tema de Quadriculação
Este tema reúne todas as propriedades relacionadas com a grade mostrada no list box objeto.
Linhas horizontais: mostra ou oculta as linhas horizontais do list box (mostradas por padrão).
Cor de linhas horizontais: define a cor das linhas horizontais no list box (cinza por padrão).
Linhas verticais: mostra ou oculta as linhas verticais do list box (mostradas por padrão).
Cor de linhas verticais: define a cor das linhas verticais do list box (cinza por padrão).
Tema Hierárquico
Este tema sólo está disponível para os list boxes cuja fonte de dados é Arrays. Suas opções configuram a visualização
hierárquica do list box. Lembre que estas propriedades se modificam automaticamente quando se define a hierarquia
utilizando o menu emergente do objeto list box (ver Criar e usar list box hierárquicas).
List box hierárquico: se utiliza para especificar que o list box devem ser mostrado em forma hierárquica.
Variável 1 ... 10: estas opções adicionais aparecem quando a opção List box hierárquico está selecionada.
Cada vez que se introduz um valor em um campo, se agrega uma nova fila. Podem ser especificadas até 10
variáveis.
Estas variáveis definem os níveis hierárquicos que se mostrarão na primeira coluna.
A primeira variável sempre corresponde ao nome da variável da primeira coluna do list box (os dois valores são
linkados automaticamente). Esta primeira variável é sempre visível e editável. Por exemplo: país.
- 395 -
A segunda variável é sempre visível e editável, especifica o segundo nível hierárquico. Por exemplo: regiões.
Começando com o terceiro campo, cada variável depende da qual a precede. Por exemplo: departamentos,
cidades, etc. Podem ser especificados um máximo de dez níveis hierárquicos.
Se elimina um valor, toda a hierarquia se move um nível.
A última variável nunca é hierárquica, mesmo que vários valores idênticos existam neste nível. Por exemplo, em
referência à configuração ilustrada anteriormente, imagine que arr1 contém os valores A A A B B B, arr2 tem os
valores 1 1 1 2 2 2 e arr3 os valores X X Y Y Y Z. Neste caso, A, B, 1 e 2 poderia aparecer em forma contraída,
mas não X e Y:
+A
+1
X
X
Y
+B
+2
Y
Y
Z
Este princípio não se aplica quando uma só variável se especifica na hierarquia : neste caso, os valores idênticos
podem ser agrupados.
Nota: se especifica uma hierarquia baseada nas primeiras colunas de um list box existente, deve então apagar
ou ocultar estas colunas (exceto a primeira), do contrário, aparecerão dois vezes na list box. Se define a
hierarquia através do menu emergente do editor (ver Criar e usar list box hierárquicas), as colunas
desnecessárias são eliminadas automaticamente do list box.
Tema de Coordenadas e Dimensões
Este tema reúne todas as propriedades relacionadas com as coordenadas, altura e largura do list box.
A propriedade Altura de filas é específica: permite definir a altura das linhas do list box. Note que a altura da linha das
áreas de cabeçalhos e de rodapés se define separado, nos temas "Cabeçalho e Rodapés.
Pode definir uma altura em píxels ou em linhas.Para maior informação sobre a eleição da unidade, consulte o
parágrafo "Altura em píxels ou em linhas".
Por padrão, a altura das linhas está definida em função da plataforma e o tamanho da fonte.
Tema de Fundo e borda
Este tema reagrupa as propriedades relativas às cores de fundo das filas bem como com o estilo da borda.
Cor de fundo: permite definir a cor de fundo do list box. Esta cor se utiliza para todo o objeto com exceção dos
títulos (se são mostrados).
Cor de fundo alternativa: permite definir uma cor de fundo diferente para as linhas ímpares do list box. Utilizar
uma cor de fundo alternativa facilita a leitura dos arrays.
Estilo da borda: permite definir um estilo padrão para a borda do objeto de list box.
Tema Texto
Este tema junta as propriedades estandarte de definição do texto mostrado no list box:
Array de estilos (list box de tipo array) / Estilos (list box de tipo seleção): permite aplicar um estilo de caracteres
personalizado a cada linha do list box.
Para os list box de tipo array, deve introduzir o nome de um array de tipo Inteiro longo. Cada elemento deste
array corresponde a uma fila do list box; o array deve ter o mesmo tamanho que os arrays associados as
colunas. Para encher o array (utilizando um método), utilize as constantes do tema “Texto”. Somando as
constantes, pode combinar estilos. Para aplicar o estilo definido nas propriedades do list box a uma fila,
atribua o valor -255 ao elemento do array correspondente.
Para os list box de tipo seleção, deve introduzir uma expressão ou uma variável (exceto para um array). A
expressão ou a variável se avaliará para cada linha mostrada. Pode utilizar o editor de fórmulas para definir
uma expressão. Para fazer isso, faça clique no botão [...] que aparecer quando seleciona a área. Pode
utilizar as constantes do tema Estilos de fonte.
O seguinte exemplo utiliza um nome de variável: entre EstiloEmpresa na área Estilos e no método de
- 396 -
formulário, escreva o seguinte código:
EstiloEmpresa:=Choose([Empresas]ID;Bold;Plain;Italic;Underline)
Array de cores de fonte (list box de tipo array) / Cores de fonte (list box de tipo seleção): permite aplicar uma
cor de fonte personalizada a cada fila do list box. Deve utilizar os valores de cores RGB. Para maior informação
consulte a descrição do comando SET RGB COLORS no manual Linguagem de 4D.
Para os list box de tipo array, deve introduzir o nome de um array de tipo Inteiro longo. Cada elemento deste
array corresponde a uma linha do list box; o array deve ter o mesmo tamanho que os arrays associados as
colunas. Pode utilizar as constantes do tema DEFINIR CORES RVA. Para aplicar a cor de fonte definido
nas propriedades do list box a uma linha, passe o valor -255 ao elemento do array correspondente.
Para os list box de tipo seleção, deve introduzir uma expressão ou uma variável (exceto para um array). A
expressão ou variável será avaliada para cada linha mostrada. Pode utilizar o editor de fórmulas para definir
uma expressão. Para fazer isso, faça clique no botão [...] que aparece ao selecionar a área. Pode utilizar as
constantes do tema DEFINIR CORES RVA.
O seguinte exemplo utiliza um nome de variável: introduza CorEmpresa na área Cor de fonte e no método
de formulário, escreva o seguinte código:
CorEmpresa:=Choose([Empresas]ID;Default background color;Default light shadow
color;Default foreground color;Default dark shadow color)
Array de cores de fundo (list box de tipo array) / Cores de fundo (list box de tipo seleção): permite aplicar uma
cor de fundo personalizado a cada linha do list box. Deve utilizar os valores de cores RGB. Para maior
informação, consulte a descrição do comando SET RGB COLORS no manual de Linguagem 4D.
Para os list box de tipo array, deve introduzir o nome de um array de tipo inteiro longo. Cada elemento deste
array corresponde a uma linha do list box; o array deve ter o mesmo tamanho que os arrays associados as
colunas. Pode utilizar as constantes do tema DEFINIR CORES RVA. Para aplicar a cor de fundo definido
nas propriedades do list box a uma linha, passe o valor -255 ao elemento do array correspondente.
Para os list box de tipo seleção, deve introduzir uma expressão ou uma variável (exceto para um array). A
expressão ou variável será avaliada para cada linha mostrada. Pode utilizar o editor de fórmulas para
especificar uma expressão. Para fazer isso, faça clique no botão [...] que aparece quando seleciona a área.
Pode utilizar as constantes do tema DEFINIR CORES RVA.
Alinhamento horizontal: o conteúdo de cada cela se pode alinhar horizontalmente em direção a Direita,
Esquerda ou Centro.
A opção Por padrão define a alienação em função do tipo de dados que se encontram em cada coluna: os textos
e as imagens se alinham à esquerda, os dados numéricos à direita..
Alinhamento vertical: o conteúdo de cada cela se pode alinhar verticalmente em direção Em cima, Centro ou
Abaixo.
A opção Por padrão define alienação em função do tipo de dados que se encontram em cada coluna: Abaixo
para todos os dados exceto imagens, Em cima para os dados de tipo imagem.
Note que as propriedades de alienação podem aplicar-se globalmente ao list box ou por separado para cada coluna.
Eles também estão disponíveis para as áreas de cabeçalhos e rodapés.
Tema de Ação
Este tema reúne as propriedades relativas ao comportamento dinâmico do list box.
Método do objeto (Editar...): este botão mostra o método do objeto de list box (observe que cada coluna
também pode conter um método de objeto).
Arrastável e Soltável: ativa as funções arrastar e soltar do list box, permitindo arrastar uma fila do list box para
outro list box ou outro objeto 4D e vice-versa. Só as filas do list box podem ser arrastadas e soltas. Não é possível
arrastar e soltar as colunas (no entanto, é possível arrastar as colunas para o interior de um mesmo list box).
A gestão efetiva de arrastar e soltar nos list box é efetuada com a ajuda de mecanismos padrão de 4D (eventos
de formulário On Drop e On Drag Over, comandos DRAG AND DROP PROPERTIES e Drop position).
Filas deslocáveis (list box de tipo array unicamente): autoriza o deslocamento de linhas em execução. Esta
opção está selecionada por padrão. Esta opção não está disponível para os list boxes de tipo seleção nem para
os list box em modo hierárquico (opção List box hierárquico selecionada).
Ordenável: permite ordenar os dados das colunas ao se clicar no título. Esta opção está selecionada por padrão.
Os arrays de tipo imagem (colunas) não podem ser ordenados utilizando este mecanismo.
Nos list boxes baseados nas seleções de registros, só está disponível a função de ordenação padrão:
- 397 -
quando a fonte de dados é a Seleção atual,
com as colunas associadas aos campos (de tipo alfa, numérico, data, hora ou booleano).
Nos outros casos (list boxes baseados nas seleções temporais, colunas associadas com as expressões), a
função de ordenação padrão não está disponível.
A ordenação padrão do list box modifica a ordem da seleção atual no banco de dados. No entanto, os
registros selecionados e o registro atual não se alteram.
A ordenação padrão sincroniza todas as colunas do list box, incluindo as colunas calculadas.
Tema compatibilidade
A opção Área de deslocamento apresenta neste tema está desenhada para acompanhar a conversão das antigas
"áreas de deslocamento", automaticamente transformadas em list boxes a partir de 4D v13. No entanto, está disponível
para todos os list boxes:
Quando a opção Área de deslocamento é selecionada por um list box, as seguintes operações específicas se
implementam:
Se o array (único) do list box têm a propriedade "invisível, o objeto list box também é completamente invisível.
Assinalar um valor ao array seleciona a linha correspondente no list box (por exemplo: MeuArray:=5 seleciona a
quinta linha do list box).
Pelo contrário, fazer clique em uma linha do objeto modifica o valor atual do array.
Quando um soltar se realiza desde uma linha do list box em um objeto externo, o comando DRAG AND DROP
PROPERTIES executado neste objeto devolve um ponteiro ao array do list box (e não ao list box mesmo).
List boxes conectados (compatibilidade)
Os list boxes que vem da conversão das antigas áreas de deslocamento agrupadas estão conectados. Os list box
conectados funcionam de maneira coordenada:
a seleção de uma linha em um list box seleciona esta mesma linha em todos os list box que pertencem ao grupo
conectado,
o deslocamento vertical de um list box também desloca os list box que pertencem ao mesmo grupo conectado.
Nota: os list box convertidos também se agrupam no formulário (função estandarte de 4D).
Pode conectar-se e desconectar-se dos list box utilizando os comandos Conectar e Desconectar que se encontram
no menu Objeto do editor de formulários:
Estes comandos se habilitam contextualmente quando vários list box estão selecionados no formulário. Quando um list
box conectado (ou seja, que pertence a um grupo de conexão) está selecionado, uma "marca" específica se mostra em
todos os list box que pertencem ao mesmo grupo de conexão:
Nota de compatibilidade: estes princípios fazem possível reproduzir o funcionamento das áreas de deslocamento
agrupadas. No entanto, lhe recomendamos adaptar os formulários convertidos utilizando as funcionalidades
estandarte dos list box.
- 398 -
Propriedades específicas de colunas de list box
É possível selecionar uma coluna de list box no editor de formulários clicando na coluna quando o objeto de list box está
selecionado:
Pode definir para cada coluna de List box as propriedades padrão (texto, cor de fundo, etc.); estas propriedades tem
prioridade sobre as propriedades do objeto List box.
Você também tem acesso às propriedades específicas descritas nesta seção.
Tema Fonte de dados
Nota: o tema Fonte de dados não está disponível para as colunas de list box de objetos de tipo array de objetos.
Neste contexto, os conteúdos de cada célula da coluna se baseiam nos atributos que sejam encontrados no elemento
correspondente do array de objetos. Para mais informação, consulte List box, Using object arrays in columns (4D
View Pro).
Expressão: a propriedade Expressão permite definir a expressão 4D para se associar à coluna:
É possível introduzir:
uma expressão 4D (expressão simples, fórmula ou método 4D). O resultado da expressão será mostrado
automaticamente ao se passar para o modo Aplicação. A expressão será avaliada para cada registro da
seleção (atual ou temporal) da tabela principal. Se estiver vazia, a coluna não mostrará nenhum resultado.
uma variável simples (neste caso, a variável deve ser declarada explicitamente para a compilação). É
possível utilizar qualquer tipo de variável exceto BLOBs e arrays. O valor da variável será geralmente
calculado no evento On Display Detail.
Um campo utilizando a sintaxe padrão [Tabela]Campo (exemplo: [Empregados]Sobrenome). Podem ser
utilizados os seguintes tipos de campos:
Alfa
Texto
Numérico
Data
Hora
Imagem
Booleano
É possível utilizar campos da tabela principal ou de outras tabelas.
- 399 -
Em todos os casos, é possível definir a expressão com a ajuda do editor de fórmulas de 4D
clicando no botão [...] na lista de propriedades:
Caso se passe uma expressão, a coluna não será editável inclusive se a opção Editável estiver
selecionada.
Caso se utilize um campo ou variável, a coluna será editável ou não dependendo da opção
Editável (e o atributo “Não modificável” no editor de estrutura).
Em modo Desenho, o tipo de fonte de dados é mostrado na primeira linha da coluna. Por
exemplo, Campo=[Tabela1]MeuCampo. Se a expressão definida estiver incorreta, a coluna do
list box mostrará uma mensagem de erro no modo Aplicação.
Pode utilizar campos da tabela principal ou de outras tabelas.
Valores por padrão (list box de tipo array): faça clique no botão Edição... para mostrar uma caixa de diálogo de
entrada que permite associar uma lista de valores por padrão para a coluna. Estes valores serão acessíveis
automaticamente na variável array associada à coluna durante a execução do formulário.
Deve introduzir uma lista de valores separados por dois retornos de carro e depois validar a caixa de diálogo.
Para maior informação sobre esta caixa de diálogo consulte o parágrafo Valores padrão na seção Controles
de entrada de dados e ajuda de entrada.
Tipo de dados: este menu permite definir o tipo de expressão ou da variável associada à coluna. Utiliza-se para
indicar o formato de saída a ser aplicado e permite atualizar o menu Tipo de saída no tema “Mostrar”.
Se um campo é introduzido na área Expressão, não se mostra a propriedade Tipo de dados; utiliza-se o formato
de saída correspondente ao tipo de campo.
Lista de seleção: esta propriedade pode ser utilizada para associar uma Lista de valores a uma coluna do list
box. Se você desenha uma lista, o usuário pode utilizar seus valores (mostrados em um menu suspenso) para
modificar os valores da coluna e seu array associado:
Note que a entrada por teclado ainda é possível. Se você não quiser que os valores se modifiquem utilizando o
menu de seleção suspenso, escolha a lista obrigatória (ver abaixo).
Nota: Se a lista designada for hierárquica, só são levados em conta os elementos de primeiro nível.
Guardar como Valor/Referência: quando a coluna se associa a uma lista de opções, esta propriedade permite
definir o tipo de conteúdo a guardar no campo ou variável da coluna. Para obter mais informação sobre esta
opção, consulte [#title id="3416"/].
Tema Coordenadas e dimensões
Este tema agrupa as propriedades relacionadas com a largura da coluna do list box.
Largura: largura padrão da coluna (em pixels). Este valor é atualizado quando se redimensiona a coluna
utilizando o mouse no editor de formulários.
Se a propriedade Redimensionável está selecionada, o usuário também pode redimensionar
manualmente a coluna.
Largura mínima: largura mínima da coluna (em pixels). A largura da coluna não pode ser menor que este valor
em caso de redimensionamento da coluna ou do formulário.
Largura máxima: largura máxima da coluna (em pixels). A largura da coluna não pode ser maior que este valor
em caso de redimensionamento da coluna ou do formulário.
Nota: Em caso de redimensionamento do formulário, se a propriedade de redimensionamento horizontal Aumentar
estiver atribuída al list box, a coluna mais à direita aumentará além da largura máxima se for necessário.
- 400 -
Tema Opções de Redimensionamento
Este tema só contém a opção Redimensionável (selecionada por padrão). Quando esta opção está selecionada, o
usuário pode redimensionar a coluna movendo os lados da área de título.
Tema Controles de entrada
Este tema agrupa todas as propriedades relacionadas com a entrada de dados à coluna do list box.
Editável: autoriza a entrada de dados à coluna (selecionada por padrão). Para modificar o valor de uma célula, o
usuário deve fazer um clique duplo no valor. Quando esta propriedade está desmarcada, os menus suspensos
associados à coluna por meio da lista (temas “Fonte de dados” e “Faixa de valores”) são desativados.
Nota: para maior informação sobre estes mecanismos implementados para a entrada nos list box, consulte o
parágrafo Gestão de entrada no manual de Linguagem de 4D.
Filtro de entrada: associa um filtro de entrada às células das colunas. Esta propriedade não é acessível se a
propriedade Editável não estiver selecionada.
Ajuste de linha (colunas de tipo texto unicamente): gerencia a visualização do conteúdo da coluna quando se
supera a largura da coluna.
Quando se ativa esta opção, o texto da coluna se ajusta automaticamente na linha seguinte quando sua largura é
superior ao da coluna, se a altura da coluna o permite.
Quando não se marca esta opção, um texto muito longo se trunca e se mostra com uma elipse (...).
No seguinte exemplo, a opção Ajuste de linha está selecionada para a coluna esquerda, mas não para a coluna
direita:
Tenha em conta que, independentemente do valor da opção Ajuste de linha, não muda a altura da linha. Se o
texto com saltos de linha não pode ser visualizado em sua totalidade na coluna, se trunca (sem uma elipse). No
caso dos list box que mostram só uma única linha, só é mostrada a primeira linha de texto:
Tema Faixa de valores
Este tema permite designar as listas utilizadas para controlar a entrada à coluna do list box.
Lista de obrigatórios: permite designar uma lista onde somente estes valores podem ser inseridos na coluna.
Os valores da lista são acessíveis utilizando um menu suspenso associado a cada célula (favor referir-se à
propriedade “Lista de valores” no tema Fonte de dados).
Diferente da propriedade Lista de valores, quando uma lista obrigatória é definida, não é possível a
entrada de dados utilizando o teclado, somente é permitida a seleção de um valor da lista utilizando o menu
suspenso. Se várias listas são definidas utilizando as propriedades Lista de valores e Lista de
obrigatórios, a propriedade Lista de obrigatórios tem prioridade.
Lista de excluídos: permite designar uma lista cujos valores não podem ser introduzidos na coluna. Se um valor
excluído é introduzido, o valor não é aceito e uma mensagem de erro aparece.
Nota: Se a lista designada é hierárquica, só são levados em conta os elementos de primeiro nível.
Tema Mostrar
Este tema permite especificar o formato de visualização dos valores da coluna e a propriedade Invisível. O conteúdo
deste tema varia de acordo com o tipo de variável definido no tema Objetos.
- 401 -
Formato tipo: permite associar um formato de visualização aos dados da coluna. Os formatos propostos
dependem do tipo de variável (list box de tipo array) ou do tipo de dados/do campo (list box de tipo seleção). Os
formatos padrão de 4D que podem ser utilizados são: Alfa, Numérico, Data, Hora, Imagem e Booleano. O tipo de
texto não tem formato de visualização específico. Os formatos personalizados existentes também estão
disponíveis.
Nota: se a list box é mostrada em modo hierárquico, todas as propriedades deste tema são desativadas para a
primeira coluna.
Os arrays booleanos podem ser mostrados como caixas de seleção ou menus suspensos. Se você escolher a
opção Caixa de Seleção, aparecerá a propriedade Título que lhe permite introduzir o título da caixa de seleção.
Se você escolher a opção Meu Suspenso, aparecerão as propriedades Texto se verdadeiro e Texto se falso,
permitindo-lhe definir as duas etiquetados menu suspenso.
As colunas de valores numéricos podem ser mostradas como caixas de seleção de três estados. Esta opção
encontra-se na lista suspensa Tipo de saída. Se você selecionar o tipo Caixa de seleção de três estados, serão
mostrados os seguintes valores:
0 = caixa não selecionada
1 = caixa selecionada
2 (ou qualquer valor >0) = caixa cheia semi selecionada (terceiro estado). Para a entrada de dados, este
estado devolve o valor 2.
-1 = caixa invisível,
-2 = caixa não selecionada, não editável,
-3 = caixa seleccionada, não editável,
-4 = caixa semi selecionada, não editável
Neste caso, igualmente aparece a propriedade Título, permitindo-lhe introduzir o título da caixa de seleção.
A propriedade Invisível, quando está selecionada, permite ocultar a coluna no ambiente Aplicação.
No ambiente Desenho, é possível mostrar ou ocultar as colunas invisíveis utilizando o menu contextual
associado ao list box. (clique em uma coluna ou em um título de coluna):
Tema de fundo e borde
Este tema agrupa as propriedades relacionadas com as cores de fundo das células da coluna.
Cor de fundo: permite estabelecer a cor de fundo da coluna. Por padrão o valor Automático se seleciona: a
coluna utiliza a cor de fundo definido a nível do list box.
Cor de fundo alterno: permite estabelecer uma cor de fundo diferente para as filas ímpares da coluna. Por
padrão o valor Automático se seleciona:
a coluna usa a cor de fundo alterno definido a nível do list box.
Array de cores de fundo (list boxs de tipo array)/Cores de fundo (list box de tipo seleção): permite estabelecer
uma cor de fundo personalizado para cada célula da coluna. Deve utilizar valores de cores RGB.
Para os list box de tipo array, deve introduzir o nome de um array Inteiro longo. Cada elemento deste array
corresponde a uma célula da coluna, pelo que o array deve ser do mesmo tamanho que o array associado a
coluna. Pode utilizar as constantes do tema "DEFINIR CORES RVA". Se desejar que a célula herde a cor
de fundo definido no nível superior (ver Herança), passe o valor -255 ao elemento de array correspondente.
Para os list box de tipo seleção, deve introduzir uma expressão ou uma variável (à parte de um tipo de
array). A expressão ou a variável se avalia para cada célula mostrada. Pode utilizar o editor de fórmulas
para definir uma expressão. Para isso, faça clique no botão [...] que se mostra quando se seleciona a área.
Pode utilizar as constantes do tema "DEFINIR CORES RVA".
Tema texto
Array de estilos (list box de tipo array) / Estilos (list box de tipo de seleção): permite aplicar um estilo de fonte
personalizada a cada célula da coluna
Para os listboxes de tipo array, deve introduzir o nome de um array de tipo Inteiro longo. Cada elemento
deste array corresponde a uma célula da coluna, pelo que o array deve ter o mesmo tamanho que o array
- 402 -
associado a coluna. Para encher o array (utilizando um método), utilize as constantes do tema "Estilos de
fonte". Pode agregar constantes para combinar estilos. Se deseja que a célula herde o estilo definido no
nível superior (ver Herança), passe o valor -255 ao elemento do array correspondente.
Para os listboxes de tipo seleção, deve escrever uma expressão ou uma variável (exceto um array). A
expressão ou a variável é avaliada para cada célula mostrada. Pode utilizar o editor de fórmulas para definir
uma expressão. Para isso, faça clique no botão [...] que se mostra quando se seleciona a área. Pode utilizar
as constantes do tema "Estilos de fonte".
Array cores de fonte (list box de tipo array)/Cor de fonte (list box de tipo seleção): permite aplicar uma cor de
fonte personalizado a cada célula da coluna. Deve utilizar os valores de cores RGB.
Para os list box de tipo array, deve introduzir o nome de um array de tipo Inteiro longo. Cada elemento deste
array corresponde a uma célula da coluna, pelo que o array deve ser do mesmo tamanho que o array
associado a coluna. Pode utilizar as constantes do tema "DEFINIR CORES RVA". Se deseja que a célula
herde a cor de fonte definido no nível superior (ver Herança), passe o valor -255 ao elemento do array
correspondente.
Para os list box de tipo seleção, deve escrever uma expressão ou uma variável (exceto um array). A
expressão ou a variável é avaliada para cada célula mostrada. Pode utilizar o editor de fórmulas para
definir uma expressão. Para isso, faça clique no botão [...] que se mostra quando seleciona a área. Pode
utilizar as constantes do tema "DEFINIR CORES RVA".
- 403 -
Propriedades específicas dos títulos de list box
Nota preliminar: para poder acessar as propriedades dos cabeçalhos de um list box, deve selecionar a opção
Mostrar cabeçalhos na Lista de propriedades do list box (ver Propriedades específicas dos list Box).
Quando os cabeçalhos são mostrados, pode selecionar um cabeçalho de list box no editor de formulários fazendo clic
nele quando o objeto list box esteja selecionado:
Pode definir para cada título de coluna de list box propriedades padrão de texto; nesse caso, essas propriedades têm
prioridade sobre as da coluna ou as da list box.
Igualmente pode acessar a lista de propriedades, descritas a seguir.
Tema Objetos
Este tema contém as propriedades utilizadas para definir o título.
Nome do objeto: nome do objeto de título.
Nome da variável: nome da variável associada ao objeto de título. Esta variável (numérica) permite manejar por
programação a ordem atual da coluna e a visualização da seta de ordem (ver a seção Gestão de objetos List
Box no manual Linguagem 4D).
Título: etiqueta que aparece no cabeçalho.
Tema Imagem
Este tema contém a propriedade que permite mostrar uma imagem no cabeçalho da coluna (opcional). Um ícone pode
ser visualizado no cabeçalho junto ou no lugar do título da coluna, especialmente no caso de ordenamentos
personalizados.
Ícone: define a fonte da imagem a ser inserida no cabeçalho. Assim como para os botões de imagem de 4D, é
possível utilizar uma imagem proveniente de uma variável, da biblioteca de imagens ou de um arquivo de recursos
ou de uma arquivo.
Nome/ID: permite designar a imagem a ser utilizada na fonte anteriormente definida. A informação a ser
introduzida neste campo depende da fonte selecionada: nome (se a imagem é uma variável), número (se a
imagem é da biblioteca de imagens ou de um arquivo de recursos) ou rota de acesso (se a imagem é de um
arquivo de imagem); neste último caso, a rota deve ser relativa à pasta Resources do banco de dados (ver o
parágrafo Referenciar automaticamente arquivos de imagem).
Localização do ícone: posição do ícone no cabeçalho. É possível localizá-lo à Esquerda ou à Direita do
cabeçalho.
Efeito espelho (Windows): permite reservar a visualização do ícone em modo "direita a esquerda" (ver Efeito
espelho (Windows)).
Tema Ajuda
Cada área de cabeçalho pode ter seu próprio Mensagens de ajuda.
- 404 -
Specific properties of List box footers
List boxes can contain non-enterable "footers" displaying additional information. For data shown in table form, footers are
usually used to display calculations such as totals or averages.
Preliminary note: To be able to access footer properties for a list box, you must check the Display Footers option in
the Property list of the list box (see List box specific properties).
If footers are displayed, you can click to select one when the list box object is selected in the Form editor:
For each List box column footer, you can set standard text properties: in this case, these properties take priority over
those of the column or of the list box.
You can also access specific properties which are described in this section.
Objects Theme
This theme includes properties for defining footers.
Object Name and Variable Name: The footer area is a specific object with its own object name (that must be
unique in the page) and an associated variable. By default, the variable name is empty and 4D uses dynamic
variables.
Variable Type: This menu sets the type of variable and updates the options of the Property List. Note that if you
use a non-dynamic variable (when you name the variable), you must use the language for typing the variable.
Variable Calculation: This option sets the type of calculation to be done in the footer area. There are several types
of calculations available as well as the Custom option:
Minimum, Maximum, Sum, Count, Average, Standard deviation(*), Variance(*) and Sum squares(*).
These calculations are described in the “Automatic calculations” section below. When a calculation is
selected, it is applied automatically to all the values found in the list box column. Note that the calculation does
not take the shown/hidden state of list box rows into account. If you want to restrict a calculation to only visible
rows, you must use a custom calculation.
When an automatic calculation has been assigned to a footer areas, a "standard action" shield is then
associated with it:
Custom: When you select this option, no automatic calculations are performed by 4D and you must assign
the value of the variable in this area by programming.
Automatic calculations
You can associate various automatic calculations with a footer area. The following table shows which calculations can be
used according to the type of data found in each column and indicates the type automatically affected by 4D to the footer
variable (if it is not typed by the code):
- 405 -
Numeric Text Date Time Boolean Picture Footer variable type
Minimum
Maximum
Sum
Count
Average
Standard deviation(*)
Variance(*)
Sum squares(*)
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
Same as column type
Same as column type
Same as column type
Longint
Real
Real
Real
Real
(*) Only for array type list boxes.
Note: You cannot associate automatic calculations with column footers based on formulas. In this case, you must perform
custom calculations.
Help Theme
Each footer area can have its own Help messages.
- 406 -
Criar e usar list box hierárquicas
4D v12 permite especificar e usar list box hierárquicos. Um list box hierárquico é um list box no qual o conteúdo da
primeira coluna aparece em forma hierárquica. Este tipo de representação se adapta à apresentação de informação
que inclui valores repetidos ou valores que dependem hierarquicamente (país, região ou cidade, etc.).
Apenas os list box de tipo array podem ser hierárquicos
Os list box hierárquicos constituem um modo particular de representar dados, mas não modificam a estrutura dos dados
(arrays). Os list box hierárquicos se manejam da mesma maneira como os list box regulares.
Para especificar um list box hierárquico, há três possibilidades diferentes:
Configurar manualmente elementos hierárquicos utilizando a lista de propriedades no editor de formulários.
Gerar visualmente a hierarquia utilizando o menu emergente de gestão dos list box, no editor de formulários.
Utilize os comandos LISTBOX SET HIERARCHY e LISTBOX GET HIERARCHY, descritos no manual
Linguagem de 4D.
Esta seção explica como criar list box hierárquicos no editor de formulários de 4D e os fundamentos de seu
funcionamento durante a execução. Para obter mais informação sobre a gestão programada dos list box hierárquicos
(seleções, rupturas, utilização dos eventos formulário On Expand e On Collapse, etc...), consulte a seção Gestão de
List Boxes Hierárquicas no manual Linguagem de 4D.
Gerenciar a hierarquia com a lista de propriedades
Pode ativar e configurar o modo hierárquico no tema "Hierarquia" da lista de propriedades. Para obter mais
informação, consulte Propriedades específicas dos list Box.
Manejar a hierarquia usando o menu contextual
Ao clicar na área de colunas de um list box, o menu contextual do editor de formulários contém os comandos Criar
hierarquia e Cancelar hierarquia.
Criar hierarquia
Quando selecionar ao menos uma coluna, além da primeira, de um objeto list box (do tipo array) no editor de
formulários, o comando Criar hierarquia está disponível no menu contextual:
Ao escolher esse comando, as seguintes ações são realizadas.
A opção "List box hierárquico" está selecionada para o objeto na Lista das propriedades.
As variáveis das colunas são usadas para definir a hierarquia. Elas substituem as variáveis já especificadas.
As colunas selecionadas já não aparecem na list box (exceto pelo título da primeira).
Exemplo: dado um list box cujas primeiras colunas contém País, Região, Cidade e População. Quando País, Região E
Cidade estão selecionados (veja a imagem acima), se você escolher Criar hierarquia no menu contextual, uma
hierarquia de três níveis é criada na primeira coluna, as colunas 2 e 3 são elimina das e a coluna População se
converte na segunda:
- 407 -
Cancelar hierarquia
Quando a primeira coluna está selecionada e foi definida como hierárquica, pode utilizar o comando Cancelar
hierarquia. Ao escolher esse comando, são efetuadas as seguintes ações:
A opção List box hierárquico são desmarcadas para o objeto,
Os níveis hierárquicos de 2 a X são eliminados e são transformados em colunas agregadas ao list box.
Como funciona
Quando se abre pela primeira vez um formulário que contém um list box hierárquico, por padrão, todas as linhas se
expanden.
Uma linha de ruptura e um "nodo" hierárquico são agreagadas automaticamente ao list box quando os valores se
repetem nos arrays. Por exemplo, imagine um list box que contém quatro arrays especificando as cidades, cada cidade
é caracterizada pelo seu país, sua região, seu nome e seu número de habitantes:
Se esse list box é mostrado em forma hierárquica (os primeiros três arrays incluídos na hierarquia), se obtêm:
Os arrays não são ordenados antes da construção da hierarquia. Se, por exemplo, um array contém os dados
- 408 -
AAABBAACC, a hierarquia obtida será:
> A
> B
> A
> C
Para expandir ou contrair um "nodo" hierárquico, clique nele. Se pressionar Alt+clique (Windows) ou Opção+clique
(Mac OS) no nodo, todos seus sub elementos se expandem ou contrairão também.
Gerenciar ordenações
Em um list box em modo hierárquico, uma ordenação padrão (efetuada clicando no título de uma coluna do list box)
sempre se constrói da seguinte forma:
Em primeiro lugar, todos os níveis da coluna hierárquica (primeira coluna) são ordenados automaticamente em ordem
ascendente.
A ordenação é realizada em ordem ascendente ou descendente (segundo a ação do usuário) nos valores da
coluna na que se clicou.
Todas as colunas se sincronizam.
Durante as ordenações posteriores das colunas não hierárquicas do list box, só o último nível da primeira coluna é
ordenado. É possível modificar a ordenação desta coluna clicando em seu título.
Dando como ejemplo o list box a seguir, no qual não é definida nenhuma ordenação específica:
Se clicar em "População" para ordenar as populações de forma ascendente (ou alternativamente descendente), os
dados aparecem assim:
- 409 -
Como para todos os list box, pode desativar o mecanismo de ordenação padrão desmarcando a propriedade
"Ordenável" para o list box e manejando a ordenação por programação.
Exibir datas e horas
Quando os valores de tipo data ou hora são incluídos em um list box hierárquico, são mostrados em um formato padrão:
As datas são mostradas no formato sistema curto (por exemplo, para 30 de maio de 2009, "05/30/09" no sistema
americano e "30/05/09" no sistema europeu).
As horas também são mostradas no formato sistema curto ("12:15:30" ou "12:15" em função dos parâmetros do
sistema).
- 410 -
Utilizar ações estandarte
Pode gerenciar o list box de tipo " seleção" mediante [#title id="964"/] aos botões ou menus. Por exemplo, agora é
possível utilizar a ação estandarte Adicionar sub-registro para adicionar um novo registro a uma tabela por meio de
um list box. Esta nova funcionalidade facilita a criação de interfaces modernas baseadas em list boxes.
Agora pode usar três ações estandarte com listboxes: Adicionar sub-registro, Editar sub-registro e Eliminar subregistro.
Adicionar sub-registro
Um botão ou um elemento de menu associado a ação estandarte Adicionar sub-registro se ativa de forma automática
quando há pelo menos um list box de tipo "seleção" no formulário. Se um formulário contém vários list box, a ação se
aplica ao que tem o foco (ou por padrão, ao que esteja no primeiro plano).
Quando o usuário faz clique no botão ou seleciona o elemento de menu, aparece um novo registro em branco no
formulário detalhado definido para o list box (ver o parágrafo "Formulário Detalhado" em Tema List Box ). O usuário
pode introduzir valores, logo validar o registro e aparece automaticamente um novo registro em branco. Isto continua até
que o usuário faz clique no botão Cancelar. Se a fonte de dados para o list box é a seleção atual, todos os registros
criados se mostram na lista.
Editar sub-registro
Um botão ou um elemento de menu associado a ação estandarte Eliminar Sub-registro se ativa automaticamente
quando há pelo menos uma linha destacada em um list box de tipo "seleção". Quando várias linhas estão destacadas, a
ação se aplica a última linha incluída na seleção.
Quando o usuário faz clique no botão ou seleciona o elemento de menu, aparece o registro correspondente a linha de
list box no formulário detalhado definido para o list box (ver o parágrafo "Formulário Detalhado" em Tema List Box ).).
O usuário pode modificar os valores, validar ou cancelar o formulário para voltar ao list box.
Eliminar sub-registro
Um botão ou um elemento de menu associado a ação estandarte Eliminar sub-registro se ativa automaticamente
quando há pelo menos uma linha destacada em um list box de tipo “seleção". Quando várias filas estão destacadas, a
ação se aplica a todos os registros.
Quando um usuário faz clique no botão ou seleciona o elemento de menu, aparece uma caixa de diálogo de
confirmação para que o usuário possa confirmar ou cancelar a eliminação:
- 411 -
Visualização de campos em list boxes
É possível associar às colunas de um list box os campos da tabela principal e/ou de diferentes tabelas. Para maiores
informações sobre a tabela principal, consulte o parágrafo Propriedades específicas dos list Box.
Entretanto, em todos os casos, o conteúdo do list box estará baseado na seleção atual (ou uma seleção temporal) da
tabela principal do list box:
Se você utilizar unicamente campos da tabela principal, o conteúdo das linhas do list box será simplesmente
modelado sobre os da seleção da tabela principal.
Se você utilizar campos que não pertençam à tabela principal, estas tabelas “estrangeiras” devem relacionar-se
com a tabela principal por uma relação Muitos para Um, ou do contrário os campos “estrangeiros” serão
mostrados vazios. As relações automáticas serão ativadas para cada registro da seleção da tabela principal e o
list box mostrará os dados correspondentes nos campos relacionados.
Se você utilizar relações manuais, deverá programar a ativação das relações com o fim de mostrar os
dados no list box.
Se uma inconsistência na definição do list box provocar a visualização das colunas vazias, aparecerá uma mensagem
de erro em modo Aplicação em cada coluna incorreta.
Utilizaremos um exemplo para explicar os diferentes casos.
Dado um banco de dados com duas tabelas: [Empresas] e [Empregados].
A seleção atual da tabela [Empresas] é a seguinte:
Nome
Enciclopédia internacional
Aventuras e viagens
Viajar S.A.
A seleção atual da tabela [Empregados] é a seguinte::
Nome
Sobrenome Empresa
Carla
Packard
Boring Travel Company
Andrew Black
Tiny Computers
Vincent Laughter
Boring Travel Company
Oliver
Dawson
Boring Travel Company
Sylvia
Fairview
Tiny Computers
Robert
Lanzel
Big Encyclopedias
Arnold
Schmitt
Boring Travel Company
Elizabeth Jones
Big Encyclopedias
Yolanda Court
Tiny Computers
Pascal
Pratt
Tiny Computers
O campo [Empresas]Nome está associado à primeira coluna de um list box. Os campos [Empregados]Nome e [Empregados]Sobrenome
estão associados às duas colunas seguintes. A fonte de dados do list box é a seleção atual.
Caso 1: as duas tabelas estão relacionadas por uma relação automática
- 412 -
1) A tabela principal do list box é [Empregados]. O list box mostra a seleção atual da tabela [Empregados] e ativa a relação
automática a fim de mostrar o nome da empresa para cada empregado:
2) A tabela principal escolhida para o list box é [Empresas]. O list box mostra a seleção atual da tabela [Empresas]. Como só
existem três registros nesta seleção, só são mostradas três linhas no list box. As colunas dos campos [Empregados]Nome e
[Empregados]Sobrenome estão vazias:
Caso 2: as duas tabelas não estão relacionadas (ou estão relacionadas utilizando uma relação manual)
1) A tabela principal do list box é [Empregados]. O list box mostra a seleção atual da tabela [Empregados]. A coluna do campo
[Empresa]Nome está vazia:
- 413 -
2) A tabela principal ecolhida para o list box é [Empresas]. O list box mostra a seleção atual da tabela [Empresas]. Como só há
três registros nesta seleção, só são mostradas três linhas no list box. As colunas dos campos [Empregados]Nome e
[Empregados]Sobrenome estão vazias:
Naturalmente, é possível administrar por programação as seleções das diferentes tabelas e desta forma mostrar as colunas associadas aos
campos que não pertenecem à tabela principal.
- 414 -
Visualização do resultado de uma petição SQL em um list box
Visualização do resultado de uma petição SQL em um list box
É possível por diretamente o resultado de uma petição SQL em um list box de tipo array. Esta função oferece um meio
rápido de visualizar o resultado de petições SQL. Só podem ser utilizadas as petições de tipo SELECT. Este
mecanismo não pode ser utilizado com uma base SQL externa.
Isso funciona de acordo com os seguintes princípios:
Crie o list box que receberá os resultados da petição. A fonte de dados do lsit box deve ser Arrays.
Execute a petição SQL de tipo SELECT e atribua o resultado à variável associada ao list box. É possível utilizar
as palavras chaves Begin SQL/End SQL (ver o manual de Linguagem 4D).
Quando o conteúdo de um list box provém de uma petição SQL, as colunas não podem ser ordenadas ou
modificadas pelo usuário.
Cada nova execução de uma petição SELECT com o list box a reiniciação das colunas (não é possível preencher
o mesmo list box progressivamente utilizando várias petições SELECT).
Recomenda-se dar ao list box o mesmo número de colunas que as que terá no resultado de petição SQL. Se o
número de colunas do list box é inferior ao necessário para a petição SELECT, as colunas são adicionadas
automaticamente. Se o número de colunas do list box é superior ao necessário para a petição SELECT,as
colunas desnecessárias são ocultas.
Nota: As colunas adicionadas automaticamente estão relacionadas com as Variáveis Dinâmicas de tipo
array. Esses arrays temporários permanecem enquanto o formulário existir. Uma variável temporária é
criada do mesmo modo para cada título. Quando se chama o comando GET LISTBOX ARRAYS, o
parâmetro arrVarCols contém ponteiros (apontadores) aos arrays temporários e o parâmetro arrVarTitulos
contém os ponteiros às variáveis de títulos temporários. Se uma coluna adicionada é, por exemplo, a quinta
coluna, seu nome é sql_column5 e seu título é sql_header5.
Em modo interpretado, os arrays existentes utilizados pelo list box podem ser redigitados automaticamente de
acordo com os dados enviados pela petição SQL.
Exemplo
Queremos recuperar todos os campos da tabela PESSOAS e localizar seu conteúdo no list box cujo nome de variável é
vlistbox. No método de objeto de um botão (por exemplo), é suficiente escrever:
Begin SQL
SELECT * FROM PEOPLE INTO <<vlistbox>>
End SQL
- 415 -
Subformulários e widgets
Visão Geral
Subformulário lista
Subformulários em modo página
- 416 -
Visão Geral
Um subformulário é um formulário incluído em outro formulário.
Há dois tipos principais de subformulários:
os Subformulário lista, geralmente destinados a introduzir, visualizar e modificar dados provenientes de outras
tabelas,
os Subformulários em modo página, permitem utilizar objetos de interface sofisticada e dedicada, como por
exemplo os widgets 4D.
Cada tipo de subformulário dispõe de mecanismos e de propriedades particulares.
Terminologia
Com o objetivo de definir claramente os conceitos implementados com os subformulários, aqui estão algumas
definições dos termos usados:
Subformulario: formulário destinado a ser incluído em outro formulário, chamado formulário pai.
Formulário pai: formulário que contém um ou mais subformulário(s).
Contenedor de subformulário: objeto incluído no formulário pai, mostrando uma instância do subformulário.
Instância de subformulário: a representação de un subformulário no formulário pai. Este conceito é importante
porque é possível mostrar várias instâncias de um mesmo subformulário num formulário pai.
Formulário listado: instância de subformulário en lista.
Formulário detalhado: formulário de entrada em página associado a um subformulário em lista acessível com
duplo clique na lista.
Criar e definir um subformulário
Se especifica el tipo de formulario seleccionando o no la opción Subformulario lista en el tema "Subformulario" de la
lista de Propiedades. La selección o deselección de esta opción provoca la actualización de la Lista de propiedades
para que corresponda con el tipo de subformulario elegido.
É possível adicionar um subformulário a um formulário de três formas:
No assistente de criação de formulários, utilizando a página Subformulário nas opções Avançadas (ver Criar um
formulário com o assistente de formulário)
No editor de formulários, utilizando a ferramenta Subformulário da barra de objetos,
No editor de formulários, arrastando e soltando desde a Página Formulários do Explorador.
Nota: um objeto do tipo subformulário (em página) também é criado quando se adiciona um objeto Widget da
biblioteca de objetos pré-configurados (ver Usar a biblioteca pré-configurada).
É possível combinar estas diferentes técnicas de acordo com suas necessidades.
Widgets
Os widgets 4D são objetos compostos predefinidos. Utilizáveis com ou sem programação, os widgets dão acesso às
funcionalidades padrão e são muito simples de implementar. Os widgets disponíveis em 4D são os seguintes:
MissingRef: área de pesquisa de aparência padrão
DatePicker: selecionador de data.
TimePicker: selecionador de hora.
Os widgets 4D são subformulários de tipo página com funções específicas. Pode agrega-los a seus formulários
utilizando a ferramenta de criação de subformulários (ver seção anterior) ou utilizando a biblioteca de objetos integrada
de 4D (ver Usar a biblioteca pré-configurada).
O uso de widgets é descrito em detalhe em um outro manual, 4D Widgets
- 417 -
Subformulário lista
Um subformulário lista é um formulário de outra tabela que é mostrado em um formulário de entrada. Um subformulário
permite introduzir, ver e modificar dados em outras tabelas. Os subformulários geralmente são utilizados em bancos de
dados nas quais foram estabelecidas relações Um para Muitos.
Um subformulário lista mostra os registros da tabela Muitos relacionada por uma relação automática de tipo Um a
Muitos. É possível ter vários subformulários de diferentes tabelas no mesmo formulário. No entanto, não é possível
localizar dois formulários que pertençam à mesma tabela na mesma página do formulário.
Por exemplo, um banco de dados de gestão de contatos pode utilizar um subformulário para mostrar todos os números
telefônicos de um contato particular. Ainda que os números telefônicos apareçam na tela Contatos, a informação é
salva, na verdade, em uma tabela relacionada. Utilizando uma relação Um para Muitos, este desenho de banco de
dados facilita o armazenamento de um número ilimitado de números telefônicos por contato. As relações automáticas
permitem a entrada de dados diretamente na tabela Muitos relacionada sem programação.
Ainda que os subformulários geralmente se associem a tabelas Muitos, um subformulário pode mostrar os registros de
qualquer outra tabela do banco de dados.
É possível criar um subformulário utilizando o assistente de criação de formulários durante a criação de um novo
formulário, ou ao adicionar um novo subformulário ao formulário existente utilizando o editor de formulários. Deve-se
criar de antemão o formulário listado que você quer utilizar como subformulário.
Os subformulários podem ser utilizados para a entrada de dados de duas formas: o usuário pode introduzir dados
diretamente no subformulário ou introduzí-los em um formulário de entrada associado. Nesta configuração, o formulário
utilizado como subformulário é chamado formulário listado. O formulário de entrada é chamado formulário detalhado.
- 418 -
É possível permitir ao usuário introduzir dados no formulário detalhado e/ou no formulário listado:
Criar um subformulário lista
Para definir um formulário lista, deve criar e configurar o subformulário a utilizar num formulário pai. Para mais
informação sobre os formulários lista, consulte o capítulo Formulários de saída e relatórios.
No formulário pai, crie um objeto de tipo subformulário utilizando a ferramenta Subformulário
da barra de objetos
(variação do último botão).
Nota: pode igualmente efetuar um arrastar e soltar desde a Página Formulários do Explorador.
Na Lista de propriedades (tema “Subformulário”), tenha certeza de selecionar a opção Subformulário lista e selecione
a tabela fonte no menu Fonte assim como também o Formulário listado a utilizar.
No formulário pai, pode redimensionar e reposicionar o conteúdo do subformulário como queira.
- 419 -
Propriedades de subformulários lista
É possível definir várias propriedades especificas relativas aos subformulários. Estas propriedades se referem à
largura do subformulário como também às ações autorizadas aos usuários (modos de seleção e entrada).
Nome de Variável e Tipode Variável
Estas propriedades são destinadas principalmente ao uso com os subformulários em página. Consulte a seção
Subformulários em modo página.
Fonte
Essa propriedade permite definir o tipo de fonte para o subformulário. Para os subformulários lista, escolha a tabela a
qual pertence o subformulário.
Associar um formulário detalhado a um subformulário
Essa opção permite associar um formulário detalhado a um subformulário lista. O formulário detalhado pode ser
utilizado para introduzir ou visualizar subregistros. Geralmente contém mais informação que o subformulário.
- 420 -
Naturalmente, o formulário detalhado deve pertencer à mesma tabela que o subformulário. Geralmente você utiliza um
formulário de saída como formulário listado e um formulário de entrada como formulário detalhado. Se você não
especifica o formulário a ser utilizado para a página de entrada, 4D utiliza automaticamente o formato de entrada por
padrão da tabela.
Dependendo da configuração do subformulário, o usuário pode mostrar o formulário detalhado fazendo um clique duplo
em um subregistro ou utilizando os comandos para adicionar e modificar os subregistros.
Nota: Pode associar um formulário detalhado a um subformulário lista pressionando a tecla Shifte arrastando o
formulário detalhado desde o Explorador ao subformulário.
Largura automática
É possível redimensionar a área do subformulário no formulário como preferir, assim como qualquer outro objeto do
formulário.
Além disso, é possível deixar que 4D defina automaticamente a largura do subformulário de maneira que sejam
mostrados todos os campos que ele contém. Para fazer isso, marque a opção Largura automática nas propriedades do
objeto.
Nota: Quando você cria uma área de subformulário arrastando um formulário diretamente do Explorador, 4D define
automaticamente a largura do subformulário.
Modo de seleção
Os subformulários podem ter três modos de seleção: Nenhum, Simples e Múltiplo.
Nenhum
Os registros não podem ser selecionados se este modo está selecionado. Um clique na lista não tem efeito,
a menos que a opção Editável em lista esteja selecionada. As teclas de navegação só fazem com que a
lista se mova; não se gera o evento de formulário On Selection Change.
Simples
Neste modo só pode ser selecionado um registro por vez. Um clique em um registro o seleciona e o
converte no registro atual. A combinação Ctrl+clique (Windows) ou Comando+clique (Mac OS) em um
registro altera seu estado (entre selecionado ou não).
As teclas de seta Para cima e Para Baixo selecionam o registro anterior/seguinte da lista. As outras teclas
de navegação movem a lista. O evento de formulário On Selection Change é gerado cada vez que o registro
atual se altera.
Múltiplo
Vários registros podem ser selecionados simultaneamente neste modo. Os subregistros selecionados são
devolvidos pelo comando GET HIGHLIGHTED RECORDS. Ao se clicar no registro, o registro atual é
selecionado porém não modificado. A combinação de teclas Ctrl+clique (Windows) ou Comando+clique
(Mac OS) em um registro altera seu estado (selecionado ou não). As combinações Ctrl+clique (Windows)
ou Comando+clique (Mac OS) e Shift+clique lhe permitem fazer seleções múltiplas. As teclas de seta
Acima e para Abaixo selecionam o registro anterior/seguinte da lista. As outras teclas de navegação
movem a lista. O evento de formulário On Selection Change é gerado cada vez que o registro atual se altera.
As outras teclas de navegação rolam a lista. O evento de formulário On Selection Change é gerado cada
vez que muda o registro selecionado.
Editável em lista
Quando um subformulário é Editável em lista, o usuário pode modificar os dados dos subregistros diretamente na lista,
sem ter que utilizar o formulário detalhado associado. Para fazer isso, simplesmente clique duas vezes no campo a se
modificar para passar ao modo edição (assegure-se de deixa tempo suficiente entre os dois cliques para não gerar um
clique duplo).
Por padrão, este modo é ativado para todos os subformulários em lista.
- 421 -
Quando esta opção não estiver selecionada, a entrada passa obrigatoriamente pelo formulário detalhado associado.
Ação em caso de clique duplo
É possível definir os parâmetros de funcionamento dos subformulários em resposta a um clique duplo do usuário. Em
bancos de dados criados com uma versão anterior de 4D, é possível definir a resposta em caso de clique duplo em
uma linha vazia (opção de compatibilidade).
Clique duplo em uma fila: ação a se realizar em caso de um clique duplo em um registro de subformulário. As
seguintes opções estão disponíveis:
Não fazer nada: ignorar o clique duplo.
Modificar registro: alterar o registro de subformulário para modo edição. A modificação é realizada
diretamente na lista se a opção “Editável em lista” está selecionada. De outra forma, se realizará em modo
página, no formulário detalhado associado ao subformulário.
Mostrar registro: mostra os dados do registro em modo página no formulário detalhado associado com o
subformulário (somente leitura).
Clique duplo em uma fila vazia: ação a realizar em caso de um clique duplo em uma linha vazia de um
subformulário. As opções a seguir estão disponíveis:
Não fazer nada: ignorar o clique duplo.
Adicionar registro: criar um novo registro no subformulário e passar para o modo edição. O registro será
criado diretamente na lista se a opção “Editável em lista” estiver selecionada. Do contrário, será criado
em modo página, no formulário detalhado associado com o subformulário.
Autorizar a eliminação
Por padrão, o usuário pode apagar subregistros em um subformulário listado com a ajuda da tecla Del ou Backspace.
Como esta possibilidade pode afetar o funcionamento padrão da interface de algumas aplicações (baseada por
exemplo nos botões), é possível evitá-la utilizando a opção Autorizar a eliminação.
Quando esta opção não estiver selecionada, o usuário não pode apagar os subregistros utilizando as teclas de
supressão do teclado.
Acessível
O objeto subformulário pode ter a propriedade Acessível (tema “Entrada”). Quando um subformulário tem o foco, o
usuário pode controlá-lo com a ajuda das teclas de navegação, utilizando o comando de menu Selecionar tudo (se a
seleção tiver múltiplas linhas), etc.
Quando um subformulário recebe ou perde o foco, o método de formulário do formulário principal é chamado com os
eventos On getting focus ou On losing focus. Neste caso, o comando OBJECT Get pointer (ou o comando Focus
object) retorna um ponteiro à tabela do subformulário.
Como para todos os objetos acessíveis, a propriedade Ocultar retângulo de foco pode ser utilizada para não mostrar
- 422 -
o foco graficamente.
Impressão
Como podem existir vários registros que a área de subformulário não pode manter, 4D oferece 3 opções (tema “Impressão”) para
controlar a impressão dos registros de subformulários:
Variável (opção padrão)
Se você selecionar esta opção, 4D estende ou reduz a área do subformulário para imprimir todos os subregistros.
Fixo (truncamento)
Se você selecionar esta opção, 4D só imprime os subregistros que aparecem na área do subformulário. O formulário só se
imprime uma vez e se ignoram os registros não impressos.
Fixo (múltiplos registros)
Se você selecionar esta opção, o tamanho inicial da área do subformulário se conserva, mas 4D imprime o
formulário várias vezes com a finalidade de imprimir todos os registros.
Notas
Não é possível colocar objetos aos lados de um subformulário de tamanho variável. Os objetos localizados
aos lados do subformulário se repetirão para cada linha do subformulário.
Não é possível imprimir mais de um subformulário da mesma tabela na mesma página do formulário.
Para maiores informações sobre a impressão de objetos de tamanho variável, consulte o parágrafo
Imprimir áreas de tamanho variável.
Adicionar botões para a gestão de subregistros
É possível adicionar os botões personalizados para controlar a entrada de dados em um subformulário. Qualquer tipo
de botão: padrão, invertido ou invisível, pode ser utilizado.
É possível definir a ação destes botões por programação (ver a seção Entrada de Dados) ou através das Ações
padrões.
4D oferece três ações padrão para responder as necessidades básicas para a gestão de subregistros: Editar
subregistro, Eliminar subregistro e Adicionar subregistro. Quando o formulário inclui vários subformulários, a ação
se aplica ao formulário que tem o foco.
Para maiores informações sobre a adição destes botões e suas ações automáticas associadas, consulte o
parágrafoBotões e Ações padrões.
- 423 -
Subformulários em modo página
Neste caso, o subformulário pode mostrar os dados do subregistro atual ou qualquer tipo de valor pertinente em função
do contexto (variáveis, imagens, etc.). Uma das principais vantagens de se usar subformulários página é que incluem
funcionalidades avançadas e podem interatuar diretamente com o formulário pai (widgets). Os subformulários página
têm suas próprias propriedades e eventos específicos, os quais podem ser admiistrados por programação.
Nota: é possível gerar componentes com funcionalidades adicionais através de subformulários. Para mais informações,
consulte Desenvolver e instalar componentes 4D.
Criar subformulários em modo página
Para ativar o modo página, simplesmente deselecione Subformulário lista na Lista de propriedades para o objeto
subformulário. Neste caso, as propriedades relativas a configuração dos subformulários em lista (Modo de seleção,
Clique duplo em linha, etc.) não são mais mostrados:
O subformulário em página utiliza formulário de entrada designado pela propriedade “formulário detalhado”. Diferente
de um subformulário em modo lista, o formulário utilizado pode vir da mesma tabela que o formulário pai. Também é
possível utilizar um formulário projeto. Em execução, um subformulário em modo página tem as mesmas características
de visualização padrão de um formulário de entrada. Os mecanismos dos formulários de saída (relacionados
particularmente com a gestão de marcadores) não são ativados.
Propriedades dos subformulários em modo página
Os subformulários em página se manejan utilizando as propriedades específicas que facilitam sua integração e
interação com o formulário pai.
Nome variável
Uma variável pode estar associadas a um objeto subformulário. Por padrão esta variável se chama "Subformulário"
como o próprio objeto. Tem um tipo (ver o próximo parágrafo) e pode ser representado como uma variável padrão no
formulário pai. Sua modificação dispara os eventos de formulário e permite sincronizar os valores do formulário pai e do
subformulário:
O evento formulário On Data Change permite indicar ao contenedor do subformulário que o valor da variável foi
modificada no subformulário.
O evento formulário On bound variable change indica ao subformulário (método formulário do formulário) que a
variável foi modificada no formulário pai.
- 424 -
Tipo variável
Utilize esta propriedade para definir o tipo da variável associada ao objeto subformulário. Por padrão, se utiliza o tipo
Alfa. O tipo da variável determina a natureza dos valores trocados entre o formulário pai e o subformulário através da
variável associada.
Pode definir o tipo "Nenhum" e neste caso, 4D digita automaticamente a variável durante a execução (ver "Variáveis
dinâmicas" na seção Variáveis do manual Linguagem).
Fonte
Esta propriedade permite selecionar diferentes tipos de fontes:
<Nenhum>: selecione este tipo de fonte se deseja utilizar um formulário projeto ou um formulário de componente
como subformulário. Estes subformulários se utilizam em modo página unicamente: a opção "Subformulário lista"
debe ser desmarcado para que funcionem.
Para que um formulário de componente apareça na lista "formulário detalhado" deve ter sido publicado no
componente (ver o parágrafo Publicar um subformulário (component)).
Nome de tabela: escolha esse tipo tipo de fonte se deseja utilizar um formulário da tabela.
Método objeto e eventos
Um objeto subformulário pode ter um método objeto que permita controlar seu funcionamento, em particular, quando se
desencadeiam os eventos. Para obter uma descrição dos eventos administrados pelo subformulário em página,
consulte a documentação do comando Form event.
Lembre que a interação entre o conteúdo do objeto subformulário e o formulário pai deve ser manejada através de
mecanismos específicos (ver o parágrafo Programação avançada entre formulários).
Gerenciar a variável associada
A variável associada ao subformulário permite vincular os dois contextos (formulário e subformulário) para dar os toques
finais a interfaces sofisticadas. Por exemplo, imagine um subformulário que representa un relógio dinâmico, inserido em
um formulário pai que contém uma variável editável de tipo hora:
Ambos objetos (variável hora e contenedor do subformulário) têm o mesmo nome de variável. Neste caso, ao abrir o
formulário pai, 4D sincroniza ambos os valores de forma automática. Se o valor da variável se define em vários lugares,
4D utiliza o valor que foi carregado por último. Se aplica a seguinte ordem de carga:
1-Métodos objeto do subformulário
2-Método formulário do subformulário
3-Métodos objeto do formulário pai
4-Método formulário del formulário pai
Quando se executa o formulário pai, a sincronização das variáveis deve ser efetuada pelo desenvolvedor utilizando os
eventos formulário adequados. Dois tipos de interações podem ocorrer: do formulário ao subformulário e vice-versa.
Atualizar conteúdo de subformulários
Caso 1: O valor da variável do formulário pai se modifica e esta modificação deve repercutir no subformulário. Em
nosso exemplo, a hora ParisTime passa a 12:15:00, seja porque o usuário introduziu esta hora ou porque foi atualizada
dinamicamente (através do comando Current time por exemplo).
Neste caso, deve utilizar o evento formulário On bound variable change. Este evento deve ser selecionado nas
propriedades do subformulário, se gera no método de formulário dol subformulário.
- 425 -
Se gera evento de formulário On bound variable change:
Tão logo quanto se atribua um valor à variável do formulário pai, mesmo se o mesmo valor é reatribuído,
Se o subformulário pertence à página de formulário atual ou à página 0.
Lembre que, como no exemplo anterior, é preferível utilizar o comando OBJECT Get pointer que devolve um ponteiro
ao contenedor subformulário ao invés de sua variável, já que é possível inserir vários subformulários no mesmo
formulário pai (por exemplo, uma janela que mostra diferentes zonas horárias tem vários relógios). Neste caso, só um
ponteiro permite saber que contenedor de subformulário está na origen do evento.
Atualizar conteúdos formulário pai
Caso 2: O conteúdo do subformulário é modificado e esta modificação deve ser passada no formulário pai. Em nosso
exemplo, imagine que a interface do subformulário permite ao usuário mover "manualmente" os ponteiros do relógio.
Neste caso, desde o subformulário, deve atribuir o valor do objeto à variável do contenedor do subformulário pai. Como
no exemplo anterior, recomendamos que utilize o comando OBJECT Get pointer com o seletor Object subform
container que devolve um ponteiro ao contenedor do subformulário.
Atribuir o valor da variável gera o evento formulário On Data Change no método do objeto contenedor do subformulário
pai, o que permite realizar qualquier tipo de ação. O evento deve ser selecionado nas propriedades do contenedor de
subformulário.
Nota: se mover "manualmente" os ponteiros do relógio, isso também gera o evento formulário On Data Change no
método do objeto da variável valorReloj no subformulário.
Programação avançada entre formulários
A comunicação entre o formulário pai e as instâncias dos subformulários pode necessitar mais do que o intercâmbio de
um valor através da variável associada. Na verdade, é possível que deseje atualizar as variáveis nos subformulários em
função das ações efetuadas no formulário pai e vice-versa. Se usarmos o exemplo anterior do subformulário de tipo
"relógio dinâmico", poderíamos querer definir uma ou mais horas de alarme para cada relógio.
- 426 -
4D implementou os seguintes mecanismos para responder a estas necessidades:
Uso do parâmetro "subformulário" com o comando OBJECT Get name para especificar o objeto de
subformulário e o comando OBJECT Get pointer.
Chamada do objeto contenedor desde o subformulário utilizando o comando CALL SUBFORM CONTAINER,
Execução de un método no contexto do subformulário através do comando EXECUTE METHOD IN SUBFORM.
Comandos Object get pointer e Object get name
Além do seletor Object subform container, o comando OBJECT Get pointer aceita um parâmetro que indica em qual
subformulário buscar o objeto cujo nome é especificado no segundo parâmetro. Esta sintaxe só pode ser utilizada
quando se passa o seletor Object named.
Por exemplo, a seguinte ordem:
$ptr:=OBJECT Get pointer(Object named;"MeuBotao";"MeuSubForm")
... recupera um ponteiro à variável "MeuBotao" que se encontra no objeto subformulário "MeuSubForm". Esta sintaxe
permite acessar desde o formulário pai a todo objeto que se encontra num subformulário.
Também considere o comando OBJECT Get name que permite recuperar o nome do objeto que tem o foco.
Comando CALL SUBFORM CONTAINER
O comando CALL SUBFORM CONTAINER permite a uma instância de subformulário enviar um evento ao objeto
contenedor do subformulário, o qual pode ser processado no contexto do formulário pai. O evento é recibido no método
do objeto contenedor. Pode estar na origem de qualquer evento detectado pelo subformulário (clique, arrastar e soltar,
etc.)
O código do evento é livre (por exemplo, 20 000 ou -100). Pode utilizar um código que corresponde a um evento
existente (por exemplo, 3 para On Validate) ou utilizar um código personalizado. No primeiro caso, só se pode utilizar os
eventos que foram selecionados na lista de propriedades para os contenedores de subformulário. No segundo caso, o
código não deve corresponder a qualquer evento formulário existente. É recomendado usar um valor negativo para ter
certeza de que este código não será utilizado por 4D en futuras versões.
Para obter mais informação, consulte a descrição do comando CALL SUBFORM CONTAINER.
Comando EXECUTE METHOD IN SUBFORM
O comando EXECUTE METHOD IN SUBFORM permite a un formulário ou a um de seus objetos solicitar a execução
de um método no contexto da instância do subformulário, o que lhe dá acesso às variáveis, objetos, etc. del
subfformulário. Este método também pode receber parâmetros.
Este mecanismo é ilustrado no seguinte diagrama:
Para obter mais informação, consulte a descrição do comando EXECUTE METHOD IN SUBFORM.
Comando GOTO OBJECT
O comando GOTO AREA busca o objeto de destino no formulário pai, mesmo se for executado desde um
subformulário.
- 427 -
Formulários de saída e relatórios
Visão Geral
Utilizar os formulários de saída
Formulários de relatórios impressão
Usar linhas de controle de saída
Um exemplo de relatório
Imprimir áreas de tamanho variável
Criar documentos de fusão de correio
Criar etiquetas
- 428 -
Visão Geral
Os formulários de saída são utilizados com dois objetivos: listar registros em tela e imprimir relatórios.
Em muitos casos, é possível criar um relatório muito mais rápido utilizando o editor de relatórios rápidos. Além disso, o
editor de formulários lhe oferece um maior controle sobre a aparência final do seu relatório. Para maiores informações,
consulte o capítulo Relatórios rápidos.
Nota: Somente os formulários de tabela podem ser utilizados como formulários de saída. Os formulários de projeto
estão desenhados para serem utilizados como formulários detalhados.
Formulários de saída para listar registros
Um formulário de saída contém várias áreas, com diferentes propriedades:
Área de cabeçalho: contém o título do relatório, os títulos das colunas e os botões ou objetos de controle do
formulário,
Área de detalhe: contém o corpo do relatório,
Área de pé de página: contém botões ou cálculos globais baseados em todos os registros do relatório,
Área de ruptura: contém o texto ou as imagens que aparecem depois da lista de registros e os cálculos globais
baseados em todos os registros ou nos sub-grupos de registros.
Quando se cria um formulário listado com a ajuda do assistente de criação de formulários, o assistente cria
automaticamente estas áreas. Localiza o título do formulário (nome da tabela), os nomes dos campos da mesma forma
que os botões de controle na área do cabeçalho1. Os campos que você selecionar são localizados em uma linha na
área de detalhe. Uma área de quebra pequena é criada, mas o assistente de criação de formulários não coloca nada
nela.
Quando se abre o formulário no editor de formulários, é possível modificar o tamanho de cada uma destas áreas,
modificar o conteúdo das áreas, adicionar objetos à área de quebra e criar áreas adicionais para cálculos globais.
As áreas do formulário que funcionam como Cabeçalho, Detalhe, Quebra e Pé de página são controladas por linhas de
controle de saída. É possível alterar o tamanho de cada área, arrastando as linhas de controle de saída verticalmente.
A imagem a seguir mostra um formulário de saída criado utilizando a página padrão do assistente de criação de
formulários (modelo XP).
Nota: É possível escolher entre ocultar/exibir os marcadores e suas etiquetas no editor de formulários. Para maiores
informações, consulte “Exibir/Ocultar elementos no editor de formulários em Editor de formulários.
As linhas horizontais dividem o relatório em áreas de cabeçalho, de detalhe, de quebra e de pé de página. Mesmo
assim, a área entre as linhas de cabeçalho e detalhe é a área de detalhe e a área de pé de página se estende desde a
parte superior da linha de quebra (etiqueta B0) até a linha de pé de página. Os tamanhos de cada área são ajustados
arrastando verticalmente os marcadores de cabeçalho, detalhe, quebra, ou pé de página ou suas etiquetas.
Quando o formulário é utilizado, ele é visto desta forma:
- 429 -
A área de detalhe é expandida dinamicamente quando a janela é redimensionada, enquanto que as áreas de
cabeçalho e pé de página são de tamanho fixo.
Em um formulário que lista registros na tela, as áreas de cabeçalho e pé de página podem incluir objetos que podem
ser clicados e objetos não editáveis como botões, botões de opção, listas hierárquicas, etc. Para maiores informações,
consulte o parágrafo a seguir que faz referência às linhas de controle de saída.
Em um relatório impresso, uma área de cabeçalho contém geralmente a data, hora, um título atual e os títulos das
colunas. Os registros aparecem na área detalhe. Um total calculado poderia aparecer na área de quebra. A área de pé
de página contém o número de página.
A imagem a seguir identifica as diferentes áreas que aparecem em um relatório impresso.
Um relatório pode ter áreas de quebra adicionais para subtotais e outros cálculos, também poderia ter áreas de
cabeçalho adicionais que apareçam no corpo do relatório. As áreas de cabeçalho adicionais são utilizadas para
identificar subgrupos. Para ver um exemplo de um relatório com várias áreas de cabeçalho e quebra, consulte a seção
“Criar linhas de controle adicionais” Usar linhas de controle de saída.
- 430 -
Utilizar os formulários de saída
Funções normais
Um formulário de saída lista os registros. Ainda que todos os formulários possam ser usados como formulários de
saída, a maioria de formulários de saída tem as seguintes características:
Cada linha é um registro.
Cada coluna é um campo ou uma variável
Cada coluna tem uma etiqueta na parte superior da janela. O tamanho das colunas pode ser alterado utilizando os
separadores entre cada área de título.
O cabeçalho e/ou o pé de página de um formulário podem ter botões, menus suspensos, etc.
Movimentar-se na lista
Um formulário de saída tem as barras de rolagem horizontal e vertical padrão. É possível navegar na lista de registros
clicando em uma das setas, na barra de rolagem vertical ou arrastando o quadro de rolagem. Também é possível usar
as teclas Page Up e Page Down (para se movimentar pela lista de registros por telas) ou as teclas Home e End (para
ir diretamente ao início ou ao final da lista).
Se o formulário de saída tem mais campos dos que possam ser exibidos na tela, é possível movimentar-se
horizontalmente utilizando a barra de rolagem localizada na parte inferior da janela.
Redimensionar as colunas
É possível redimensionar as colunas dos formulários de saída (exceto se esta possibilidade tiver sido eliminada no
editor de formulários). Para fazer isto, coloque o cursor sobre o título da coluna; o cursor se transforma para indicar que
a coluna é redimensionável. Depois de clicar e mover a esquina da coluna para reduzi-la ou aumentá-la:
Selecionar registros
Se seleciona um registro clicando sobre ele. É possível selecionar um, dois ou mais registros adjacentes ou vários
registros não adjacentes. Depois de efetuar uma seleção, é possível realizar operações como exibi-los como um subconjunto ou excluí-los
Para selecionar um registro, clique em um registro do formulário de saída ou pressione as teclas up ou down. O
primeiro registro que você clicou é selecionado. Se você utilizar as setas direcionais do teclado, o primeiro e
último registro da lista são selecionados.
Para selecionar vários registros adjacentes, clique no primeiro registro a ser selecionado, mantenha pressionada
a tecla Shift e clique no último registro a ser selecionado (ou pressione as teclas up ou down).
São selecionados todos os registros entre os dois que você selecionou.
Para selecionar vários registro não adjacentes, clique no primeiro registro a ser selecionado, mantenha
pressionada a tecla Ctrl (Windows) ou Comando (Mac) e clique em outro registro. Os registros que forem
clicados serão selecionados.
Para selecionar todos os registros da seleção atual no formulário de saída, selecione Selecionar tudo no menu
Edição ou use o atalho padrão Ctrl + A (Windows) ou Comando + A (Mac OS). Todos os registros exibidos no
formulário de saída são selecionados.
Para selecionar todos os registros da tabela selecione Exibir todos no menu Registros.
Adicionar e modificar registros
É possível adicionar e modificar registros diretamente em um formulário de saída. O formulário de saída é usado
especialmente para modificar um pequeno grupo de registros adjacentes já que na janela aparecem vários registros
simultaneamente.
É possível introduzir ou modificar dados em campos da tabela atual unicamente. Não é possível introduzir ou modificar
dados em variáveis, campos de outras tabelas ou sub-formulários.
- 431 -
No formulário de saída, é possível:
selecionar e editar campos clicando neles (você deve fazer um clique duplo se o registro não tiver sido
selecionado),
Passar de um campo a outro e de um registro a outro, com as teclas Tab, Enter ou Return
Adicionar um novo registro, utilizando o comando Registros > Novo registro
As alterações são salvas ao pressionar as teclas Tab, Enter ou Retorno, ou clicando em outro campo.
Gestão de linhas vazias
Em modo listado, 4D exibe, se necessário, linhas vazias debaixo dos últimos registros visualizados, de modo que se
encha a janela completamente:
Quando se mostra a janela, o evento de formulário On Display Detail é gerado para cada linha vazia da lista. Neste
caso, não existe um registro atual:Record number retorna -1 e Selected record number não retorna um valor
significativo. O comandoDisplayed line number permite conhecer o número de linha que está sendo exibido
atualmente.
Personalizar formulários de saída
Um formulário listado criado utilizando o assistente de criação de formulários funciona bem para exibir uma lista de
registros. Se for necessário, é possível fazer a seguintes modificações:
substituir os campos por variáveis e adicionar métodos,
utilizar as opções de interface, aparência, atributos de fonte, borda ou cor para modificar objetos individuais no
formulário,
alterar a largura dos campos e das variáveis,
mover as linhas de controle de saída,
adicionar uma imagem personalizada na área de cabeçalho,
adicionar as variáveis nas áreas de cabeçalho ou pé de página.
A imagem a seguir é um formulário de saída personalizado utilizado para o controle de pessoal:
- 432 -
Os botões de controle foram localizados na área de pé de página e uma imagem personalizada foi localizada na área
de cabeçalho. A área de cabeçalho também inclui uma lista suspensa que lhe permite selecionar a empresa cujos
empregados você deseja visualizar,
Assim se vê o desenho deste formulário no editor de métodos:
As linhas de controle podem se mover, por exemplo, para adaptar o tamanho da imagem inserida na área de
cabeçalho.
Exibir várias linhas por registro
É possível que você queira exibir campos em mais de uma linha. 4D permite utilizar várias linhas para cada registro.
Para isso, basta aumentar o tamanho de área de detalhe do formulário de modo que seja possível ter várias linhas na
área. Quando se utiliza várias linhas para um só registro, os elementos gráficos como linhas e caixas podem ser úteis
para separar campos e registros.
Este é um exemplo de um formulário de saída de um banco de dados de gestão de mensagens telefônicos a qual utiliza
duas linhas por registro:
Cor de realce do sistema
Nas versões de 4D anteriores a versão 2004, os registros selecionados em listas eram exibidos utilizando “inverter
vídeo”: a cor de cada pixel da seleção era invertido (por exemplo, o branco se tornava negro, o vermelho se tornava
- 433 -
verde e vice-versa). Este princípio inclui o fundo e o texto de objetos:
A partir da versão 2004, para uma melhor conformidade da interface, 4D utiliza os parâmetros de seleção do sistema
operacional em novos formulários:
É possível se beneficiar desta nova interface nos bancos de dados convertidos graças a opção Cor de realce do
sistema. Esta opção
só está disponível para formulários de saída em bancos de dados convertidos:
Quando esta opção está selecionada, 4D desativa a inversão de vídeo e utiliza a cor de contraste do sistema para
representar os elementos selecionados. Tenha cuidado, para uma representação conforme as normas de interface,
esta opção deve estar acompanhada dos parâmetros adequados de texto e de fundo para os objetos localizados na
área de detalhe do formulário:
- opção Automática para a cor de texto de cada objeto,
- opção Transparente para a cor de fundo de cada objeto,
- opção Automática para a cor do retângulo localizado debaixo da área de detalhe do formulário.
Visibilidade dos objetos
A propriedade Visível está disponível para todos os objetos no editor de formulários quando o tipo de formulário é
listado. Esta propriedade aceita 3 valores:
Sempre visível
Se o registro estiver selecionado
Se o registro não estiver selecionado.
Esta propriedade é utilizada somente durante o desenho dos objetos localizados no corpo de um formulário listado.
Esta propriedade indica a 4D se desenhar sobre o objeto ou não em função do estado selecionado/não selecionado do
registro que está sendo processado.
Esta propriedade lhe permite representar uma seleção de registros utilizando atributos visuais diferentes das cores:
4D não leva em consideração esta propriedade se o objeto foi ocultado utilizando o comando OBJECT SET VISIBLE;
neste caso, o objeto permanece invisível sem importar ou não se o registro está selecionado.
Se são exibidas linhas vazias depois dos últimos registros (consulte o parágrafo “Gestão de linhas vazias”), 4D
desenha em cada linha vazia os objetos com a propriedade Sempre visível ou Se registro não selecionado.
- 434 -
Formulários de relatórios impressão
Em 4D, é possível criar um relatório utilizando um formulário com a ajuda do editor de relatórios rápidos(ver Relatórios
rápidos).
Utilizar um formulário para criar um relatório tem muitas vantagens: é possível utilizar elementos gráficos nos formulários,
controlar com precisão a localização de cada parte do relatório, utilizar os métodos de objeto para efetuar cálculos e
utilizar os cabeçalhos. Os relatórios de formulários também podem ser personalizados por cada usuário com a ajuda do
editor de formulários de usuário (ver Formulários de usuário).
É possível utilizar um formulário para criar relatórios que:
requerem um formato sem colunas,
exibam sub-formulários,
contenham imagens importadas,
necessitem elementos gráficos particulares, tais como linhas finas.
Os relatórios impressos, diferentemente dos formulários listados de tela, podem utilizar a área de quebra situada ao
final do relatório. Os relatórios impressos utilizam a área de pé de página para os elementos que devem aparecer ao
final de cada página.
Tipos de relatórios
Relatórios em coluna impressos
As listas que exibem colunas de informação são comuns em relatórios impressos. É possível publicar listas de números
de telefone, preços, resultados, especificações ou partes.
Ao criar um relatório em coluna utilizando o assistente de formulários selecione o tipo Formulários de impressão
listado.
Como as listas que são desenhadas para exibir registros em tela, uma lista impressa apresenta colunas de informação,
que podem incluir títulos de colunas sobre cada coluna e podem utilizar elementos gráficos para melhorar ou deixar o
relatório mais claro. A área de quebra, que é impressa somente uma vez ao final do relatório, é utilizada para calcular
totais.
Para maiores informações sobre a utilização de métodos para calcular totais, consulte a seção “Exemplo de Relatório".
Relatórios de um registro por página
Pode ser necessário imprimir um registro por página. Por exemplo, pode estar sendo usado um banco de faturamento
com a finalidade de imprimir uma cópia de cada fatura para seus arquivos. Também pode imprimir uma lista de correio
onde apenas certos campos sejam modifiados por página (ver Criar documentos de fusão de correio).
Sempre que necessite criar um relatório deste tipo, selecione Formulário de impressão detalhado como tipo de
formulário no assistente de criação de formulários.
Coloque o cabeçalho (H) na parte superior da página e organize abaixo dos campos e outros elementos do relatório.
Se seu formulário exibe registros em um sub-formulário, verifique que o sub-formulário está definido para imprimir um
marco fixo de modo que os registros não se estendam a mais páginas. Para maiores informações sobre impressão
com marco fixo, consulte a seção Imprimir áreas de tamanho variável.
Arraste as linhas de controle de detalhe (D), quebra (B0) e pé de página (F) ao final da página para assegurar que
somente se imprima um registro por página.
Utilizar os sub-formularios
Provavelmente você esteja muito familiarizado com as faturas. Um fatura típica contém um nome e um endereço de
faturamento, um endereço de envio, uma série de artigos ou de serviços comprados e um total.
Um banco de faturamento inclui um formulário de saída para imprimir as faturas em página completa. Por exemplo, uma
fatura tem informação de duas tabelas: uma tabela [Ordens] que fornece a informação do cliente (endereços de
faturamento e entrega) e uma tabela [Linhas de artigos] que fornece a informação sobre os artigos. O total da ordem é
- 435 -
calculado e salvo na tabela [Ordens].
O formulário para uma fatura é criado na tabela [Ordens] e utiliza uma área de sub-formulário para as linhas de artigos.
A área de sub-formulário pode se estender durante a impressão para imprimir todas as linhas de artigos, inclusive se a
fatura necessita uma segunda página. Para maiores informações, consulte a seção Imprimir áreas de tamanho
variável.
A área de detalhe ocupa a maior parte de uma página. Uma única fatura é impressa para cada ordem, mas a área da
linha de artigos contém quantas linhas quantas forem necessárias.
Relatórios com um campo tipo texto
Muitos bancos de dados permitem ao usuário introduzir notas ou descrições em um campo de tipo texto. O campo tipo
texto pode ser impresso como uma área de tamanho variável na área de Detalhe.
Os campos tipo texto podem ser estendidos durante a impressão para imprimir toda a informação. Para maiores
informações sobre a impressão de campos tipo texto, consulte a seção Imprimir áreas de tamanho variável.
Etiquetas personalizadas
Se quiser criar etiquetas de correio personalizadas, é possível desenhar um formulário de saída personalizado. O
desenho pode utilizar os elementos gráficos, as fontes e variáveis disponíveis.
Nota: Freqüentemente é mais rápido e fácil criar etiquetas de correio utilizando o Editor etiquetas integrado.
A criação de formulários de saída utilizados para a impressão de etiquetas é detalhada no parágrafoUtilizar o
comando PRINT LABEL.
Relatório com quebras
4D pode imprimir relatório com Quebras e Quebras de cabeçalhos. Uma quebra é criada ao ordenar os registros.
Imagine que você quer imprimir um relatório de sua coleção de discos, classificados por artistas. Provavelmente você
tem vários discos do mesmo artista. Ao ordenar os registros por artistas, você obtém vários grupos de registros
diferentes. A “Quebra” ocorre depois de que se imprime o último registro de cada grupo. Assim se vê o relatório
visualizado em tela:
- 436 -
4D dispõe de diferentes funções que permitem apresentar a informação de forma atrativa. Este é o formulário no
ambiente Desenho:
Nota: Para gerar um relatório que utilize níveis de quebra e de cabeçalhos, primeiro inicie o processo de quebras. Para
maiores informações sobre os métodos que permitem inicializar o processo de quebras, consulte o parágrafo “Iniciar o
processo de quebras".
Uma quebra de cabeçalho é impressa uma vez antes do grupo de registros ao que se refere e uma quebra é impressa
uma vez depois do grupo de registros ao que se refere. Na imagem da página anterior, a quebra se chama “quebra
nível 1” e o cabeçalho de quebra se chama "Cabeçalho de quebra nível 1", porque a quebra ocorre como resultado do
primeiro campo ordenado.
É possível utilizar até nove níveis de quebra. Se você utiliza a rotina Subtotal para iniciar o processo de quebras, deve
ordenar um campo mais o número de quebras que utilize. Neste caso, se você utiliza um nível de quebra, deve ordenar
dois campos. Se utilizar três níveis de quebra, deve ordenar quatro campos, etc.
No formulário do relatório, os níveis de quebra e as quebras de cabeçalho adicionais devem corresponder às áreas
adicionais. Pode criar essas áreas adicionando linhas de controle de saída. Para conhecer como adicionar linhas de
controle de saída, consulte Usar linhas de controle de saída.
Esta seção explica como criar relatório com quebras. Na seção Um exemplo de relatório há um exemplo completo.
Inicializar o processo de quebras
Para permitir a 4D imprimir as áreas de cabeçalhos de quebras, calcular subtotais, etc., primeiro você deve inicializar o
processo de quebra no formulário do relatório. Inicialize o processo de quebras:
- 437 -
Colocando a função Subtotal em um método de objeto associado a um objeto do formulário ou no método do
formulário,
executando a função BREAK LEVEL e ACCUMULATE antes de imprimir o relatório.
Se você utilizar a função Subtotal, deve também ordenar os registros em um campo maior que o número de níveis de
quebra que utilize. Por exemplo, se você utilizar dois níveis de quebra em seu relatório, deve ordenar em 3 campos.
Para maiores informações sobre a inicialização do processo de quebra, consulte o Manual de linguagem de 4D.
Relatórios com subtotais
Esta seção descreve em detalhes com a ordenação influencia nos relatórios e explica como utilizar áreas de quebra
adicionais para criar subtotais. A imagem a seguir mostra um relatório que calcula subtotais para cada cliente e um total
ao final do relatório.
Estes registros foram ordenados por cliente e por produto. Depois de que os registros de cada cliente foram
impressos, são calculados e se imprime o subtotal para o cliente. Depois de que foram impressos os registros para
todo o relatório, se calcula e se imprime o total. Como se pode ver na imagem anterior, os subtotais são calculados e
impressos depois dos registros de cada cliente.
4D sabe quando realizar o cálculo e imprimir o subtotal porque recebeu a instrução de fazê-lo quando se modifique o
valor do primeiro campo de critério de ordenação (quando haja quebra). O subtotal do cliente é calculado no que
chamamos quebra de nível 1 porque está baseado em uma mudança do valor do primeiro campo de nível de critério de
ordenação (neste caso, o campo Cliente). O grande total é calculado na quebra de nível 0. Uma quebra de nível 0 inclui
todos os registros e ocorre no final do relatório.
A imagem a seguir apresenta outro exemplo de cálculos em um nível de quebra com os mesmos registros, mas com
uma ordem de classificação diferente para criar quebras diferentes. Esta vez os registros foram ordenados por produto
e cliente. Os subtotais são calculados quando se modifica o valor do campo Produtos. Essa é entretando uma quebra
de nível 1, mas a quebra é em um campo diferente.
Níveis de quebra adicionais
É possível realizar cálculos adicionais adicionando outro nível de ordenação e outro nível de quebra.
A imagem a seguir mostra os registros de vendas por cliente, produto e vendedor. Os cálculos resumidos mostram dois
conjuntos de subtotais: um subtotal para cada cliente e dentro de cada cliente, subtotais por cada produto. Por último,
este relatório calcula um total para toda a empresa.
Estes são exemplos de cálculos realizados em níveis de quebra 2, 1 e 0.
- 438 -
Os cálculos de subtotais são realizados somente para os grupos de registros anteriores a quebra. Por exemplo, um
subtotal é calculado para cada produto vendido a cada cliente. O subtotal para o cliente é calculado para todos os
produtos vendidos a esse cliente.
Nota: para mais informação sobre a adição de níveis de quebra, consulte o parágrafo "Criar linhaas de controle
adicionais" em Usar linhas de controle de saída.
Relatórios resumo
É possível criar um relatório que imprima somente informação resumida. Um informe assim exibe somente os subtotais
e totais com os textos adicionais correspondentes. A imagem a seguir mostra um relatório com informação resumida.
Neste relatório, os registros são ordenados por cliente, produto e data e os cálculos são realizados nas quebras criadas
pela ordem de classificação. As áreas detalhadas dos registros não são impressas, os registros são utilizados
somente para proporcionar os valores para os cálculos. Note que 4D vai do primeiro ao último registro durante a
impressão do relatório de modo que possa efetuar os cálculos. Você cria esta classe de relatório localizando a linha de
controle de detalhe sobre a linha de controle de cabeçalho, sem deixar espaço para imprimir detalhes.
Você pode pedir a 4D que efetue cálculos adicionais em uma lista incluindo subtotais, médias, valores máximos e
mínimos, totais de página a imprimir em um pé de página e médias ponderadas. Estes cálculos e outros, utilizam as
funções estatísticas de 4D (ver Funções estatísticas).
- 439 -
Usar linhas de controle de saída
As áreas do formulário que funcionam como Cabeçalho, Detalhe, Quebra e Pé de página são controladas por linhas de
controle de saída no Editor de formulários. É possível alterar o tamanho de cada área, arrastando as linhas de controle
de saída verticalmente. Qualquer objeto colocado nessas áreas é mostrado ou impresso na localidade apropriada.
Linhas de controle de saída e áreas
Esse é o funcionamento das áreas de formulário durante a visualização do formulário em modo Aplicação ou através
das funções integradas do modo Desenho:
Área de cabeçalho: a área de cabeçalho é exibida na parte superior de cada tela e é impressa na parte superior
de cada página de um relatório. A área de cabeçalho é definida como a área sobre a linha de controle do
cabeçalho (H). É possível aumentar ou reduzir a área de cabeçalho arrastando a linha de controle de cabeçalho
verticalmente. É possível utilizar a área de cabeçalho para os nomes de colunas, instruções, informação adicional,
ou inclusive uma imagem com o logotipo da empresa ou um modelo de decoração. Da mesma forma, é possível
colocar e utilizar os objetos ativos na área de cabeçalho dos formulários de saída exibidos como sub-formulários,
na janela de visualização de registros ou utilizando os comandos DISPLAY SELECTION e MODIFY
SELECTION.
Todos os objetos ativos podem ser inseridos, incluindo:
botões, botões 3D, botões invertidos, botões imagem,
combo boxes, menus pop-up/listas suspensas, menus pop-up imagem, menus pop-up hierárquicos,
áreas suspensas, listas hierárquicas, list boxes,
botões de opção, botões de opção 3D, botões imagem de opção,
caixas de seleção, caixas de seleção 3D,
termômetro, régua, dials.
As Ações padrões tais como Adicionar sub-registro, Cancelar (listas suspensas utilizando DISPLAY SELECTION
e MODIFY SELECTION) ou
separador automático podem ser atribuídas aos botões inseridos. Os eventos a seguir se aplicam a objetos ativos
inseridos na área de cabeçalho: On Load, On Clicked, On Header, On Printing Footer, On Double Clicked, On Drop, On
Drag Over, On Unload. Lembre-se que o método de formulário é chamado com o evento On Header depois de chamar
aos métodos de objeto da área.
Área de detalhe: a área de detalhe é exibida na tela e é impressa para cada um dos registros de um relatório. A
área de detalhe é definida como a área entre a linha de controle do cabeçalho e linha de controle de detalhe (D).
É possível aumentar ou reduzir esta área arrastando verticalmente o marcador de controle de detalhe. Todo
elemento nesta área é exibido ou impresso para cada um dos registros. Na maioria das vezes você localiza
campos ou variáveis na área de detalhe com o objetivo se mostrar ou imprimir os dados de cada registro, mas
também é possível colocar outros elementos na área de detalhe.
- 440 -
Áreas de quebra: as áreas de quebra são exibidas uma vez ao final da lista de registros e são impressas uma
vez depois que os registros tenham sido impressos no relatório. No relatório anterior, a área de quebra é definida
como a área entre a linha de controle de talhe e a linha de controle de quebra (B0). É possível haver outras áreas
de quebra em um relatório. É possível aumentar ou reduzir a área de quebra arrastando verticalmente o marcador
de controle de quebra. É possível utilizar uma área de quebra para exibir informação que não faz parte dos
registros (instruções, data atual, hora atual, etc.) ou para exibir uma linha ou outro elemento gráfico que marque o
final da tela de visualização. Em um relatório impresso, é possível utilizar uma área de quebra para calcular e
imprimir totais e outros cálculos globais.
Área de pé de página: a área de pé de página é exibida em tela debaixo da lista de registros, sempre se
imprime na parte inferior de cada página de um relatório. A área de pé de página é definida como a área entre a
linha de controle de quebra (B0) e a linha de controle de pé de página (F). É possível aumentar ou reduzir esta
área arrastando verticalmente o marcador de controle de pé de página. É possível utilizar a área de pé de página
para imprimir gráficos, números de página, data atual ou qualquer texto que você deseje na parte inferior de cada
página de um relatório. Para formulários de saída desenhados para serem utilizados em tela, a área de pé de
página geralmente contém botões que dão ao usuário opções tais como fazer uma pesquisa, imprimir registros, o
excluir o relatório atual. Todos os objetos ativos são aceitos.
Em todo formulário utilizado como formulário de saída, bem seja visualização em tela ou impressão, as linhas de
controle de saída tem efeito e as áreas são visualizadas ou impressas nos lugares designados. As linhas de controle de
saída também têm efeito quando um formulário é utilizado como formulário listado em uma área de sub-formulário.
As linhas de controle de saída não tem efeito quando um formulário é utilizado como formulário de entrada.
Os métodos que estão associados aos objetos situados nestas áreas são executados quando as áreas são impressas
ou exibidas, se os eventos de formulário apropriados tiverem sido selecionados. Por exemplo, um método de objeto
localizado na área de cabeçalho é executado quando se gera o evento On Header.
É possível criar linhas adicionais de controle para definir áreas de quebra e áreas de cabeçalho adicionais para um
relatório. Estas áreas adicionais lhe permitem imprimir subtotais e outros cálculos em um relatório e exibir outra
informação de maneira efetiva. As linhas de controle adicionais são descritas na seção Criar linhas de controle
adicionais.
Mover as linhas de controle de saída
O tamanho das áreas de cabeçalho, detalhe, quebra e pé de página são ajustados movendo os marcadores de controle
de saída.
As linhas de controle de saída aparecem como linhas que atravessam o formulário. Cada linha de controle tem um
marcador e uma etiqueta que é exibida na régua. O marcador de controle é o triângulo na régua e a etiqueta é a letra ou
as letras junto ao marcador. É possível mover uma linha de controle arrastando seu marcador ou sua etiqueta. Por
padrão, as etiquetas das linhas de controle sempre são exibidas; entretanto é possível ocultá-las (consulte o parágrafo
"Mostrar/ocultar elementos no editor de formulários em Editor de formulários ). Quando estão ocultas, é possível exibilas temporariamente clicando nos marcadores de controle.
As etiquetas indicam o nome e a localização de cada marcador com respeito ao formulário de origem. Quando se
move um marcador, a etiqueta indica a nova localização do marcador em tempo real. As etiquetas lhe permitem mover
as linhas de controle inclusive quando as réguas estão ocultas.
A imagem a seguir identifica os marcadores de controle e as etiquetas:
- 441 -
Para mover uma linha de controle, arraste verticalmente o marcador ou a etiqueta de controle correspondente.
Se você manter a tecla Shift pressionada enquanto arrasta um marcador, todas as linhas de controle abaixo
desse marcador de controle são movidas. Por exemplo, para arrastar todas as linhas de controle de uma vez,
mantenha pressionada a tecla Shift e arraste o marcador de cabeçalho. Para mover todas as linhas de controle
exceto as linhas de controle de cabeçalho, mantenha pressionada a tecla Shift e arraste o marcador de detalhe.
Se você deseja mover os objetos situados abaixo do marcador de controle ou aumentar os objetos situados
acima do marcador de controle ao mesmo tempo em que os move, selecione cada objeto a ser modificado antes
de efetuar a movimentação.
As linhas de controle não podem ser arrastadas em desordem. Por exemplo, se você tenta arrastar uma linha de
controle de pé de página mais acima de uma linha de controle de quebra, a operação arrastar automaticamente é
detida quando o marcador de pé de página alcança o marcador de quebra.
Teste sobrepor marcadores e linhas de controle. Colocar um marcador sobre outro reduz sua área a nada, eliminando-o
do relatório. Por exemplo, se você não tem nada que imprimir na área de quebra é possível arrastar o marcador de
quebra sobre o marcador de detalhe. Ao fazer isto, você evita que 4D crie espaço para uma área de quebra. Desta
forma o relatório pode utilizar todo o espaço disponível na página.
Da mesma forma, se você não deseja imprimir detalhes, arraste o marcador detalhe sobre o marcador de cabeçalho.
Se não necessita um cabeçalho, arraste o marcador de cabeçalho a parte superior do formulário (ponto 0).
Atenção: Os objetos ativos (campos ou variáveis) localizados no detalhe dos formulários não devem ultrapassar a
áreas de cabeçalho ou de pé de página, do contrário não serão exibidos quando o formulário seja executado.
Criar linhas de controle adicionais
Os exemplos de relatórios desta seção utilizam níveis de quebra e quebras de cabeçalhos. Para criar as áreas
correspondentes a estes níveis, é necessário criar linhas de controle adicionais.
O editor de formulários sempre começa com as linhas de controle originais, etiquetadas H, D, B0 e F.
B0 significa “Quebra de nível “0”. O nível zero reúne todos os registros. As linhas de controle de quebra adicionais são
designadas com números. Uma linha de controle etiquetada B1 significa “Quebra de nível 1”.
Uma quebra de nível 1 ocorre depois da impressão dos registros agrupados pelo primeiro campo de ordenação.
Etiqueta Descrição
Imprime depois dos grupos criados por:
B1
Quebra de nível 1 Primeiro campo de ordenação
B2
Quebra de nível 2 Segundo campo de ordenação
B3
Quebra de nível 3 Terceiro campo de ordenação
H significa “Cabeçalho”, o qual é impresso na parte superior de cada página. As linhas de controle adicionais de
cabeçalhos estão associadas com quebras. H1 significa “Cabeçalho de nível 1”. Um cabeçalho de nível 1 é impresso
justo antes do grupo de registros criado pelo primeiro campo de ordenação.
Etiqueta Descrição
Imprime antes dos grupos criados por:
H1
H2
H3
Primeiro campo de ordenação
Segundo campo de ordenação
Terceiro campo de ordenação
Cabeçalho de nível 1
Cabeçalho de nível 2
Cabeçalho de nível 3
As linhas de controle adicionais são criadas mantendo pressionada a tecla Alt (Windows) ou Opção (Mac OS)
enquanto se clica no marcador de controle apropriado. Utilize uma linha de controle de quebra para criar uma área de
quebra ao nível correspondente. Utilize uma linha de controle de cabeçalho de quebra para criar uma área de cabeçalho
de quebra ao nível correspondente.
Se utilizar a função Subtotal para inicializar o processo de quebras, você deve criar uma área de quebra para cada
nível de quebra gerado pela ordenação, menos um. Se não necessita imprimir nada em uma das áreas de quebra,
pode reduzir seu tamanho a nada colocando seu marcador sobre outra linha de controle. Se tiver mais níveis de
ordenação que áreas de quebra, a última área de quebra se repetirá durante a impressão.
A imagem a seguir mostra as linhas de controle adicionais.
- 442 -
Eliminar linhas de controle
Para eliminar as linhas de controle das áreas de cabeçalho e de quebra que tenha criado, mantenha pressionada a
tecla Ctrl (Windows) ou Comando (Mac OS) e depois clique em quebra, cabeçalho de quebra ou etiqueta da linha de
controle a apagar.
4D apaga a linha de controle, se é necessário, renumera as linhas restantes, Não pode apagar as linhas de controle
originais H, D, B0 e F.
- 443 -
Um exemplo de relatório
Esta seção descreve um exemplo de relatório e mostra como o relatório final está relacionado ao formulário tal como
está definido no editor de formulários e aos métodos que controlam a impressão.
A imagem a seguir mostra um relatório final.
Neste exemplo, a página cabeçalho contém a data, a hora e o título do relatório. Os cabeçalhos de quebra contêm o
nome do cliente e os cabeçalhos de coluna a informação apresentada durante a primeira quebra. As áreas de detalhe
contêm os dados extraídos diretamente dos registros. As áreas de quebra de nível 2 contêm subtotais de produtos
vendidos a cada cliente. As áreas de quebra de nível 1 contêm subtotais para cada cliente e a área de quebra de nível 0
contêm o total de vendas. O pé de página contém o número de página.
O relatório está ordenado em um nível mais que os níveis de quebra. Neste relatório, os campos de classificação são
Cliente, Produto e Data.
O formulário de relatório
A imagem a seguir representa o formulário utilizado para o relatório tal como aparece no editor de formulários.
- 444 -
Cada linha de controle no formulário define o limite inferior de sua área.. Tudo o que esteja localizado no formulário é
impresso no lugar adequado do relatório. A área de cabeçalho contém os elementos que serão impressos na parte
superior de cada página, a área de detalhe contém os elementos que serão impressos para cada registro, etc.
A tabela a seguir mostra o que significa cada uma destas linhas de controle.
Etiqueta Significado
H
H1
H2
D
B2
B1
B0
F
Área de cabeçalho
Área de cabeçalho de
nível 1
Área de cabeçalho de
nível 2
Área de detalhe
Área de quebra de
nível 2
Área de quebra de
nível 1
Área de quebra de
nível 0
Área de pé de página
Efeito
Impresso uma vez na parte superior de cada página
Impresso uma vez antes de cada quebra de nível 1
Impresso uma vez antes de cada quebra de nível 2
Impresso uma vez para cada registro na seleção
Impresso uma vez en cada quebra de nível 2 (quando o valor no segundo campo
ordenado é alterado)
Impresso uma vez en cada quebra de nível 1 (quando o valor no primeiro campo
ordenado é alterado)
Impresso uma vez ao final do relatório
Impresso uma vez al final de cada página
Os métodos de objeto de relatório
Os objetos não editáveis localizados nas áreas de cabeçalho, quebra e pé de página são controlados pelos métodos
de objeto. Esta seção descreve os métodos utilizados para imprimir valores nestas áreas.
Nota: O código a seguir só pode ser utilizado em métodos de objeto e de formulário. Não é possível ser utilizado em
métodos de projeto.
A data é extraída do sistema por uma variável, chamada vData, a qual está associada ao seguinte método:
vData:=Current date
A hora é extraída do sistema por uma variável, chamada vHora, a que está associado o seguinte método:
vHora:=Current time
O subtotal de vendas para a área de quebra de nível 2 é calculado e exibido em um objeto chamado vVendasProd
associado ao seguinte método:
- 445 -
vVendasProd:=Subtotal(Vendas)
O subtotal de vendas para a área de quebra de nível 1 é calculado e exibido em um objeto chamado vVendasClient
associado ao seguinte método:
vVendasClient:=Subtotal(Vendas)
O total de vendas para a área de quebra de nível 0 é calculado e exibido em um objeto chamado vVendas:
vVendas:=Subtotal(Vendas)
Note que ainda que os três objetos utilizem o mesmo cálculo, os resultados são diferentes porque estão localizados em
diferentes áreas de quebra, são executados em momentos diferentes e os cálculos são realizados para diferentes
grupos de registros. Para maiores explicações sobre os níveis de quebra, consulte a seção Formulários de relatórios
impressão.
vNumPag:="Página "+String(FORM Get current page)
A função FORM Get current page devolve o número de página.
- 446 -
Imprimir áreas de tamanho variável
É possível utilizar sub-formulários, campos tipo imagem e texto em um relatório. Estes objetos com um marco fixo são
impressos dentro dos limites do objeto definidos durante a criação do formulário. Os objetos com marco variável se
expandem se necessário, durante a impressão para incluir todos os conteúdos do objeto.
Não é possível localizar mais de um objeto com um marco variável lado a lado em um formulário. É possível localizar
objetos de marco não variável se o objeto de marco variável é pelo menos uma linha mais longo que o objeto do lado e
todos os objetos estão alinhados na parte superior. Do contrário, durante a impressão, os conteúdos dos outros
campos se repetirão para cada parte horizontal do objeto de marco variável.
Não é possível colocar objetos de um lado ou do outros de um sub-formulário de marco variável.
Só é possível colocar os objetos de marco variável nas áreas de detalhe.
Imprimir áreas de sub-formulário
Geralmente se usa um formulário de saída para imprimir os registros de um sub-formulário.
Para definir as opções de impressão de um sub-formulário, exiba as propriedades do sub-formulário na Lista de
propriedades e exiba o tema “Impressão”.
Como podem existir mais registros do que os que podem ser ajustados na área de sub-formulário, 4D oferece as três
opções a seguir para controlar a impressão de registros de sub-formulários:
Variável 4D expande ou contrai a área do sub-formulário para imprimir todos os registros.
Fixo (truncado) 4D imprime somente os registros que se ajustam na área do sub-formulário. O formulário é
impresso somente uma vez e os registros não impressos são ignorados.
Fixo (múltiplos registros) o marco permanece do mesmo tamanho, mas 4D imprime o formulário várias vezes
para incluir todos os registros.
Nota: Não é possível localizar objetos em qualquer lado de um sub-formulário de marco variável. Os objetos localizados
aos lados do sub-formulário se repetirão para cada linha do sub-formulário.
Para maiores informações sobre as opções de sub-formulários, consulte o parágrafo Subformulário lista.
Imprimir campos de tipo imagem
As imagens podem ser impressas com marcos fixos ou variáveis se o seu formato de saída permitir. Só os formatos de
saída seguintes permitem configurar a propriedade de impressão em tamanho variável:
Truncado (centralizado)
Imagem de fundo
Truncado (não centralizado)
Para maiores informações sobre estes formatos de imagem, consulte a seção Formatos de saída.
Para definir uma opção de impressão para um campo tipo imagem, exiba as propriedades do campo tipo imagem na
Lista de propriedades e exiba o tema “Impressão”. Selecione ou não a opção Marco de impressão variável de
acordo com suas necessidades específicas:
Se selecionar esta opção, a imagem será impressa a uma altura que leva em consideração o tamanho. O marco
da imagem será estendido, se necessário, durante a impressão para mostrar a totalidade de imagem.
Se não marcar esta opção, a imagem será impressa a uma altura fixa (definida no formulário)
Imprimir campos de tipo texto
Os campos de tipo texto podem ser impressos com marco de tipo variável ou fixo. As opções de impressão dos
campos de tipo texto são selecionadas da mesma maneira que as dos campos de tipo imagem.
No editor de formulários, exiba as propriedades dos campos tipo texto na Lista de propriedades. No tema “Impressão”
selecione ou não a opção Marco de Impressão variável de acordo com suas necessidades específicas:
- 447 -
Se marcar esta opção, o texto será impresso a uma altura que leve em consideração seu tamanho. O campo tipo
texto será estendido automaticamente durante a impressão de modo que se imprima todo o texto contido.
Se não marcar esta opção, o texto será impresso a uma altura fixa (definida no formulário).
- 448 -
Criar documentos de fusão de correio
É possível controlar as tarefas de fusão de correio utilizando um formulário de saída que integre os campos, as
etiquetas de campos ou tabelas ou variáveis em uma área de texto estática. É possível criar documentos idênticos
exceto pelos nomes, os endereços e todo cálculo que você quiser realizar.
Os documentos de fusão de correios são muito úteis para anunciar uma oferta especial ou informar a seus clientes
sobre o desenvolvimento de um negócio (como mudança de endereços ou uma alteração importante de pessoal). Outro
uso típico da fusão de correios é para informar aos clientes que ainda não realizaram seus pagamentos a tempo. É
possível criar uma variável e um método para calcular a quantidade exata.
Quando for criar um formulário para fazer a fusão de correios, utilize a opção Formulário de impressão detalhado na
lista suspensa de tipos de formulário do assistente de criação de formulários. No editor de formulário, crie uma área de
texto que contenha o texto estático e os campos, as variáveis ou as etiquetas de campos ou tabelas que serão
alteradas para cada registro. Logo insira os campos ou variáveis na área de texto. Durante a impressão, os valores dos
campos ou variáveis são inseridos no texto.
A imagem a seguir mostra os campos e as variáveis integradas na área de texto...
Para criar um formulário de saída para a fusão de correios, especifique um formulário de tipo "impressão detalhado".
Na ãrea Detalhe, adicione uma ou mais áreas de texto estático.
Na área de texto,escreva o texto que deseja em sua carta, colocando os nomes das variáveis e dos campos entre os
sinais de menor que (<) e maior que (>).
É possível utilizar um campo de qualquer tabela do banco. Para os campos da tabela atual não é necessário especificar
o nome da tabela; podem ser introduzidos como: <campo>. Os campos de outras tabelas devem especificar o nome da
tabela assim: <[nome da tabela] campo>. Quando se imprime o formulário, a informação do campo para cada registro
substitui o elemento <campo> na área de texto.
Para inserir as etiquetas de tabelas, introduza: <?[Nome da tabela]> ou <?[N]> onde N é o número de ordem de criação
da tabela. Para inserir as etiquetas de campos, escreva: <?[Nome da tabela]Nome do campo> ou <?[X]Y> onde X é o
número de ordem de criação da tabela e Y é o número de ordem de criação do campo ou <?Y> para inserir um campo
da tabela atual. Para maiores informações, consulte [#title id="669"/].
O valor de cada variável deve ser atribuído por um método de objeto ou de formulário.
É possível especificar a maneiro como será mostrado um campo ou variável inserindo um ponto e vírgula seguida por
- 449 -
um formato de saída (ver GET LIST ITEM PARAMETER) depois do nome do campo ou variável. Por exemplo, o
documento de fusão de correios mostrado anteriormente, inclui um formato de saída para a variável vTotal. A variável
<vTotal;$###,##0.00> calcula a quantidade da bonificação da pessoa e o exibe em um formato adequado.
4D proporciona um atalho para inserir campos em uma área de texto. O atalho lhe permite escolher o campo de uma
lista suspensa. Para fazer isso, clique com a ferramenta texto para localizar o cursor onde você deseja localizar o
campo, e localize o cursor na área de texto e mantenha pressionada a tecla Alt (Windows) ou Opção (Mac OS)
enquanto pressiona o botão do mouse.
4D exibe um menu pop-up que contém os campos da tabela atual a partir do qual é possível selecionar o campo que
você deseja.
Para escolher um campo de outra tabela do banco de dados, mantenha pressionadas as teclas Shift + Alt (Windows)
ou Shift+Comando (Mac OS) enquanto mantém pressionado o botão do mouse. 4D exibe um menu hierárquico das
tabelas e campos do banco de dados. É possível escolher a tabela e campos do banco de dados. É possível escolher a
tabela e o campo que você desejar.
4D insere <Campo> ou <[tabela]campo> na área de texto no ponto de inserção.
Quando se imprime a carta, aparecem os valores dos campos e as variáveis integradas na carta para cada registro.
- 450 -
Criar etiquetas
É possível gerar etiquetas com o Editor etiquetas com um formulário personalizado. Se utilizar um formulário, você tem
mais opções de personalização. Em particular, é possível utilizar o editor de formulários para inserir variáveis em suas
etiquetas.
Uma vez criado um formulário de etiquetas no editor de formulário de 4D, é possível utilizá-lo de duas maneiras:
Utilizando o comando PRINT LABEL
A instrução PRINT LABEL (tabela) causa a impressão da seleção atual da tabela no formulário listado
atual. Neste caso, 4D utiliza os marcadores (altura e largura) deste formulário para definir o formato de
etiquetas.
Utilizando o editor de etiquetas.
Esta operação lhe permite se beneficiar das funções avançadas do editor de formulário e dos parâmetros
de configuração do editor de etiquetas.
O editor de etiquetas leva em consideração somente a posição absoluta dos objetos presentes no
formulário e das possíveis margens definidas. A posição dos marcadores é ignorada.
Utilizar o comando PRINT LABEL
Para criar um formulário de etiquetas e imprimir utilizando o comando PRINT LABEL:
1. Defina a largura das etiquetas arrastando o marcador de largura situado na régua horizontal do editor de
formulários.
O marcador de largura determina quantas etiquetas o comando PRINT LABEL imprimirá na largura da página. A
localização da largura deve corresponder a largura das etiquetas. Assegure-se de levar em consideração as
margens esquerda e direita de suas etiquetas.
É possível determinar estas margens calculando o espaço entre cada etiqueta e dividindo este número em dois.
Nota: É possível alterar as unidades da régua no formulário para facilitar a localização adequada do marcador de
largura da etiqueta. Para alterar as unidades da régua, escolha Definir unidades... no menu Formulário.
2. Insira e defina os objetos que constituem cada etiqueta.
As etiquetas podem conter campos e objetos ativos (com os quais os métodos podem ser associados), assim
como também objetos gráficos e texto estático. Um sub-formulário não pode ser impresso em uma etiqueta.
- 451 -
Esta etiqueta contém variáveis (objetos ativos) cujos valores são calculados por métodos de objeto. Por exemplo,
o método da variável NomeCompleto concatena o nome e sobrenome de cada pessoa e coloca um espaço entre
os dois:
NomeCompleto:=[Clientes]Nome+" "+[Clientes]Sobrenome
3. Localize os objetos no formulário com respeito ao marcador de largura.
Os elementos da etiqueta devem ser localizados a esquerda do marcador de largura. Devem ser centralizados
entre a borda esquerda do formulário e o marcador para que o espaço a cada lado da etiqueta seja o mesmo.
4. Defina as linhas de controle de modo que a linha de controle de cabeçalho esteja sobre a etiqueta e as linhas de
controle de detalhe, quebra e pé de página abaixo da etiqueta.
A linha de controle de detalhe deve ser definida a altura da etiqueta. Para centralizar o texto dentro da etiqueta,
centralize os elementos do formulário entre a linha de controle de cabeçalho e a linha de controle de detalhe.
Quando imprimir as etiquetas, tudo o que estiver entre as linhas de controle de cabeçalho e de detalhe aparece
nas etiquetas .
5. Salve o formulário e imprima a seleção utilizando o comando PRINT LABEL.
Utilizar o editor de etiquetas
Para criar um formulário de etiquetas e imprimir utilizando o editor de etiquetas:
1. No formulário, insira e defina os objetos que constituem cada etiqueta.
2. Localize cada elemento na etiqueta de acordo aos seguintes princípios:
as margens esquerda e superior de cada etiqueta são determinadas pela posição dos elementos com
relação às coordenadas (0,0) do formulário.
As margens direita e inferior de cada etiqueta são determinadas pelos valores margem horizontal e
margem vertical definidas na lista de propriedades do formulário.
- 452 -
3. Selecione a tabela do formulário de etiquetas na janela Lista de tabelas para torná-lo o formulário de saída atual
para a tabela.
Se a janela lista de tabelas não está sendo exibida, escolha o comando Lista de tabelas no menu Registros.
4. Escolha o comando Etiquetas no menu Utilidades.
Aparece o editor de etiquetas.
5. Escolha o formulário de etiquetas que foi designado da lista suspensa “Formulário a usar”.
4D utilizará este formulário para imprimir as etiquetas.
6. Realize outras alterações no editor de etiquetas, tais como a definição das margens das etiquetas ou especificar
a fonte do texto.
Para maiores informações sobre o editor de etiquetas, consulte Editor etiquetas.
7. Clique no botão Imprimir.
4D imprime a seleção atual de registros em seu formulário de etiquetas.
- 453 -
Formulários de usuário
Visão Geral de formulários de usuário (Modo Aplicação)
O editor de formulários de usuário
Visualização e edição de objetos
Ordem de entrada dos dados
Utilizar uma biblioteca de objetos
- 454 -
Visão Geral de formulários de usuário (Modo Aplicação)
Em 4D, o desenvolvedor pode permitir aos usuários modificar certos formulários do banco de dados, por exemplo, para
criar relatórios personalizados, adicionar um logotipo específico ou mais em geral para adaptar os formulários a suas
necessidades específicas.Uma vez salvo, o “formulário de usuário” é substituído pelo formulário original no computador
do usuário e pode ser utilizado como qualquer outro formulário de 4D.
As possibilidades de modificação se referem principalmente aos aspectos gráficos. Por exemplo, o usuário não pode
adicionar métodos de objeto, variáveis ou campos. Entretanto, pode alterar a ordem de entrada ou adicionar objetos
ativos em uma biblioteca de objetos. As possibilidades são definidas de antemão pelo desenvolvedor no editor de
formulários do ambiente Desenho.
Os mecanismos para estabelecer este sistema por parte do desenvolvedor (Ambiente Desenho) são descritos na
seção Formulários de usuário do Manual de Linguagem.
Este capítulo descreve o funcionamento do editor de formulários de usuário em modo Aplicação.
- 455 -
O editor de formulários de usuário
O editor de formulários de usuário aparece para um formulário quando é executado o comando EDIT FORM, se a
propriedade Modificável pelo usuário foi selecionada para o formulário (ver o parágrafo Propriedades de
formulário). Em geral, este editor é chamado a partir da configuração do banco ou por um comando de
personalização.
A janela do editor aparece desta maneira:
Este editor utiliza a interface do editor de formulários padrão de 4D, em particular, o conceitos das duas barras
integradas (ferramentas e objetos). Mesmo assim, tem suas próprias funções específicas.
Quando se exibe o editor, só é possível acessar ao menu Edição da barra de menus. Ainda assim, é possível exibir
uma Lista de propriedades simplificada assim como também um menu contextual.
Os mecanismos de seleção e de movimentação de objetos (quando permitido) são idênticos aos do editor de
formulários padrão de 4D.
Para uma descrição do editor de formulário de 4D, consulte Editor de formulários.
Barra de ferramentas
A barra de ferramentas contém os seguintes elementos:
Versão anterior: Retorna à última versão guardada do formulário. Quando faz clique neste botão, aparece
uma caixa de diálogo de alerta que lhe permite cancelar ou confirmar a operação.
Guardar: Guarda as modificações realizadas no formulário de usuário.
Configurar página e Imprimir: este dois comandos permitem configurar e iniciar a impressão do
formulário de usuário.
- 456 -
Visualizar: permite selecionar os elementos a serem visualizados e ocultados no editor usando um menu
suspenso:
Página 0: exibe ou oculta os objetos da página 0 na página atual do formulário. Esta opção lhe permite
distinguir entre os objetos na página atual do formulário e os da página 0. Em um formulário multipáginas, a
página 0 contém os objetos exibidos em todas as páginas.
Papel: exibe ou oculta as bordas da página de impressão como linhas cinza. Esta opção pode não ter um
efeito aparente quando a opção Limites (ver adiante) estiver selecionada. Se o tamanho do formulário é
inferior ao tamanho da página de impressão, as bordas da página são exibidas fora da área de
visualização do formulário e, portanto não aparecem.
Réguas: exibe ou oculta as réguas da janela do editor de formulários.
Marcadores: exibe ou oculta as linhas de controle de saída e os marcadores associados que exibem os
limites das diferentes áreas do formulário (cabeçalho, corpo, pé de página). Os marcadores são utilizados
principalmente em formulários de saída.
Limites: exibe ou oculta os limites do formulário. Ao selecionar esta opção, o formulário é exibido no editor
com suas dimensões finais.
Biblioteca: permite carregar a biblioteca de objetos que pode ser utilizada com o formulário (se existir)
(ver o parágrafo Criar e usar objetos de biblioteca personalizados).
Seta de seleção: permite selecionar, mover e redimensionar os objetos do formulário.
Ordem de entrada: passa ao modo “Ordem de entrada”, onde é possível ver e alterar a ordem de entrada
atual do formulário (ver Modificar a ordem de entrada dos dados)
Movimentação: passa ao modo “Movimentação” onde é possível alcançar rapidamente qualquer parte do
formulário utilizando arrastar e soltar na janela. O cursor se torna uma mão. Este modo de movimentação é
particularmente útil quando se faz zoom no formulário.
Zoom: permite modificar o percentual de visualização do formulário (100% por padrão ). É possível
passar ao modo “Zoom” clicando na lupa ou clicando diretamente na barra que desejar. Quando se clica neste
botão, o cursor se torna uma lupa . Para aumentar a porcentagem de zoom um nível, clique dentro do
formulário. Para reduzir a porcentagem de zoom um nível, pressione Shift (o cursor se transforma em ) e clique
no formulário.
Alinhar: este botão está associado a um menu que permite alinhas objetos no formulário. Para que este
menu esteja ativo, deve ser selecionado pelo menos dois objetos no formulário.
Distribuir: este botão está associado a um menu que lhe permite distribuir objetos no formulário. Para que
este menu esteja ativo, deve ser selecionado pelo menos três objetos no formulário.
Plano: este botão está associado a um menu que permite alterar o plano dos objetos no formulário.
Mostrar páginas: esta área permite passar de uma página do formulário a outra. Para fazer isto,
clique nos botões seta ou clique na área central e escolha a página a ser exibida no menu que aparece. Não é
possível adicionar página no editor de formulário de usuário.
Barra de objetos
A barra de objetos do editor de formulário de usuário lhe permite adicionar vários objetos gráficos ao formulário: Texto
(este objeto deve ser selecionado para modificar os conteúdos dos objetos de texto estático), Área de grupo,
Retângulo, Linha, Retângulo arredondado, Oval, Matriz.
Para criar um objeto no formulário, selecione o botão correspondente e logo localize o objeto no formulário.
- 457 -
Visualização e edição de objetos
O usuário pode ver e editar as propriedades dos objetos presentes no formulário utilizando uma Lista de propriedades
simplificada. Para exibir a lista, simplesmente faça um clique duplo no objeto ou escolha o Comando Lista de
propriedades no menu contextual do editor (clique direito).
Somente as propriedades modificáveis pelo usuário são exibidas na Lista de propriedades.
Para os objetos gráficos adicionados pelo usuário utilizando a barra de objetos, estão disponíveis todas as
propriedades associadas ao tipo de objeto.
Para os objetos do formulário original, todas as condições devem ser cumpridas para que uma propriedade seja
editável no editor de formulário de usuário:
a propriedade deve pertencer a um conjunto de propriedades que podem ser declaradas editáveis para o
objeto ou o formulário. Por exemplo, as propriedades relacionadas com a gestão de eventos de formulário
ou arrastar e soltar nunca são modificáveis pelo usuário. No editor de formulário do ambiente Desenho, os
temas de propriedades modificáveis são representados por um ícone de cadeado na Lista de propriedades
(ver Propriedades de formulário).
O tema de propriedades deve ter sido declarado explicitamente como modificável pelo desenvolvedor para
o objeto ou o formulário. Para isto, o desenvolvedor deve ter clicado no cadeado na lista de propriedades
no ambiente Desenho para desbloqueá-lo :
As propriedades desbloqueadas se tornam acessíveis ao usuário no editor de formulário de usuário:
- 458 -
Este princípio funciona da mesma forma para outras ações possíveis no formulário usuário: por exemplo, se o tema
“Coordenadas e dimensões” está desbloqueado, o usuário poderia mover o objeto utilizando o mouse ou o teclado.
Comandos do menu edição
Somente o menu Edição está ativo quando a janela do editor de formulários usuário é exibida em modo Desenho.
Quando utilizar interfaces personalizadas no ambiente Aplicação, o menu Edição é acessível se os comando que ele
contém são controlados utilizando ações padrões.
Todos os comandos de edição (Cortar, Copiar, Colar, Limpar, Selecionar tudo) funcionam sem restrições com os
objetos adicionados pelo usuário.
Por outro lado, por razões de consistência, o usuário nunca está autorizado a excluir um objeto do formulário original. O
uso do comandos Cortar, Limpar ou das teclas Del ou Backspace faz com que apareça uma caixa de diálogo de
alerta informando ao usuário que esta ação não é permitida.
Menu Contextual
Vários comandos são acessíveis através do menu contextual do editor de formulários de usuário. Não é possível
controlar os conteúdos deste menu.
Clicar fora dos objetos
Quando o usuário clica fora dos objetos, os comandos globais de visualização, e edição do edito de formulário estão
disponíveis: lista de propriedades, ativar a grade magnética e exibir:
Ativar a grade magnética: a grade magnética lhe oferece uma ajuda visual para o alinhamento e distribuição dos
objetos no
formulário.
A grade magnética funciona desta forma: quando você arrasta e solta um objeto no formulário, 4D indica as
localizações possíveis para este objeto baseado nos alinhamentos relativos a outros objetos do formulário:
horizontalmente, quando as bordas ou centros dos objetos coincidem,
verticalmente, quando as bordas dos objetos coincidem.
Neste momento, 4D coloca o objeto na localização e mostra uma linha vermelha indicando o alinhamento que se
leva em consideração:
Alinhamento com as bordas superiores
- 459 -
Alinhamento com os centros
No que se diz respeito a distribuição de objetos, 4D propõe uma distância baseada nos padrões de interface.
Como para o alinhamento magnético, as linhas vermelhas indicam as diferenças notáveis uma vez que elas são
alcançadas.
Nota: É possível ativar ou desativar manualmente a grade magnética quando um objeto está selecionado
pressionando a tecla Ctrl (Windows) ou Control (Mac OS).
Exibir: este menu tem os mesmos elementos que o botão Exibir na barra de ferramentas do editor (ver O editor
de formulários de usuário).
Clicar em um objeto
Quando o usuário clica em um objeto, os comandos gráficos estão disponíveis (cor, alinhamento, etc.).
O acesso a estes comandos pode ser restringido para os objetos que pertencem ao formulário original, dependendo do
tipo de objeto no qual o usuário clique como também dos parâmetros definidos pelo desenvolvedor no editor de
formulários.
Cor: exibe duas palhetas que lhe permitem modificar as cores do primeiro plano e do fundo do objeto.
Alinhar: permite acessar aos comandos de alinhamento e de distribuição de objetos. Os comandos de
alinhamento só estão ativos se ao menos dois objetos “móveis” estão selecionados. Os comandos de distribuição
só estão ativos se ao menos três objetos “móveis” estão selecionados.
Estilo da borda: permite modificar o estilo de borda dos objetos selecionados. Estes são exemplos dos estilos
disponíveis:
Nenhum Plano Pontilhado Elevado Profundo Duplo
Tamanho automático: esta opção permite redimensionar os objetos de texto e as imagens para obter uma
visualização ótima levando em consideração as características gráficas atuais (tamanho da fonte, estilo, etc.) ou
exibi-los em seu tamanho original (imagens).
É possível obter o mesmo resultado pressionando Ctrl (Windows) ou Comando (Mac OS) + clique no canto
inferior direito do objeto.
Nível: utilizado para alterar o plano dos objetos.
Selecionar objetos similares: permite selecionar todos os objetos do mesmo tipo que o objeto selecionado.
- 460 -
Ordem de entrada dos dados
A ordem de entrada dos dados é a ordem na qual os campos, sub-formulários e outros objetos ativos são selecionados
à medida que se pressiona a tecla Tab em um formulário.
Nota: Para maiores informações sobre a ordem de entrada de dados padrão nos formulários, consulte o parágrafo
Modificar a ordem de entrada dos dados.
Em alguns casos, pode ser necessário modificar a ordem de entrada dos dados de um formulário, por exemplo, ao
adicionar um ou mais objetos e querer incluí-los em uma ordem mais lógica.
Visualizar e modificar a ordem de entrada
Para ver a ordem de entrada atual de um formulário, clique no botão Ordem de entrada na barra de ferramentas do
editor de formulários de usuário:
A ordem de entrada atual aparece desta forma:
Para alterar a ordem de entrada, localize o ponteiro sobre um objeto, enquanto mantém pressionado o botão do
mouse, arraste o ponteiro até o objeto que deseja que siga na ordem de entrada, 4D ajusta a ordem de entrada
como corresponde.
Quando estiver satisfeito com a ordem de entrada, clique no botão Ordem de entrada da barra de ferramentas.
Definir o primeiro objeto da ordem de entrada de dados
Todos os objetos editáveis formam parte da ordem de entrada de dados. Para definir o primeiro objeto da ordem de
entrada, o modo Ordem de entrada deve estar desativado.
Para definir o primeiro objeto da ordem de entrada:
1 - Selecione o objeto que deseja definir como primeiro objeto da ordem de entrada e passe-o ao fundo.
É possível utilizar o comando Nível > Enviar ao fundo no menu contextual ou o comando correspondente do
botão da barra de ferramentas do editor
- 461 -
O objeto será localizado temporariamente ao fundo do formulário.
2 – Selecione o objeto que deseja definir como primeiro objeto da ordem de entrada e passe-o ao
fundo.Clique no botão Ordem de entrada da barra de ferramentas
.
O objeto selecionado é convertido no primeiro objeto da ordem de entrada e o que era o primeiro objeto da
ordem de entrada passa a ser o segundo. Depois é possível definir objeto por objeto a seqüência da ordem
de entrada que quiser.
3 – Quando tenha terminado de definir a ordem de entrada, clique novamente no botão Ordem de entrada
da barra de ferramentas
4D volta ao modo de funcionamento normal do editor de formulário. O objeto que você selecionou para ser o
primeiro na ordem de entrada volta a sua localização anterior (já não está ao fundo do formulário).
Utilizar um grupo de entrada de dados
Enquanto você altera a ordem de entrada de dados, é possível selecionar um grupo de objetos em um formulário com a
finalidade de que a ordem de entrada padrão aplique aos objetos do grupo. Isto lhe permite definir facilmente a ordem
de entrada dos dados em formulários nos quais os campos estão organizados em grupos ou colunas.
Para criar um grupo de entrada:
Clique no botão Ordem de entrada da barra de ferramentas
.
Desenhe um retângulo de seleção ao redor dos objetos que deseja agrupar para a entrada de dados.
Ao liberar o botão do mouse, os objetos no retângulo ou tocados pelo retângulo seguem a ordem de entrada
padrão. A ordem de entrada de dados para os objetos restantes é ajustada como seja necessário.
Restabelecer a ordem de entrada padrão
É possível restabelecer a ordem de entrada padrão a qualquer momento.
1. Clique no botão Ordem de entrada da barra de ferramentas
.
2. Desenhe um retângulo de seleção ao redor de todos os objetos do formulário.
Ao liberar o botão do mouse, 4D restabelece a ordem de entrada padrão para todos os objetos dentro do
retângulo ou tocados pelo retângulo.
- 462 -
Utilizar uma biblioteca de objetos
É possível utilizar uma biblioteca de objetos com cada formulário de usuário que está sendo modificado. Uma biblioteca
de objetos é um arquivo externo criado por 4D no ambiente Desenho. O qual permite armazenar todo tipo de objetos
que podem ser utilizados em formulários: botões, textos, imagens, listas hierárquicas, etc. As bibliotecas se constituem
e utilizam por um simples arrastar e soltar ou copiar e colar a partir dos formulários 4D. De alguma forma são como
áreas de transferência permanentes. Para maiores informações sobre bibliotecas de objetos, consulte o parágrafo
Criar e usar objetos de biblioteca personalizados.
Os objetos são armazenados com todas suas propriedades e ações automáticas. No editor de formulário de usuário
não é possível utilizar objetos com métodos de objeto associados. Só os objetos que não tenham métodos de objeto
associados serão visíveis na biblioteca, a partir do editor de formulários de usuário.
O desenvolvedor designa a biblioteca associada ao formulário utilizando o último parâmetro do comando EDIT FORM
o qual visualiza o formulário usuário. Para abrir a biblioteca, o usuário deve clicar no ícone correspondente na barra de
ferramentas do editor:
É mostrada a janela da biblioteca:
Nota: Uma biblioteca de objetos pode ter até 32.000 elementos.
O usuário pode adicionar objetos ao formulário arrastando e soltando ou copiando e colando desde a biblioteca. Todas
as propriedades dos objetos inseridos da biblioteca são automaticamente acessíveis aos usuários (coordenadas,
dimensões, aparência, etc.).
Cada biblioteca de objetos tem um menu contextual que permite acessar aos comandos de edição básicos. No editor
de formulários de usuário, só está disponível o comando Copiar. Além disso, não é possível para o usuário excluir,
renomear ou adicionar objetos na biblioteca.
- 463 -
Editar Métodos
Visão geral
Gestão de métodos
Definir as propriedades dos métodos de projeto
Janela do editor de métodos
Escrever um método
Criar e utilizar macros
Procurar e substituir nos métodos
Executar métodos
- 464 -
Visão geral
É possível associar um método a um objeto 4D para especificar a ação do objeto. Um método é uma série de
instruções que realizam automaticamente uma ação. Por exemplo, é possível usar os métodos para:
reforçar as regras do seu banco de dados durante a entrada de dados,
calcular os valores para os campos e as variáveis,
administrar os elementos da interface tais como os combobox, as listas hierárquicas e as guias,
administrar ações de arrastar e soltar,
atribuir ações a comandos de menus personalizados,
criar e controlar múltiplos processos,
administrar transações,
administrar relatórios personalizados,
regular o acesso de um banco multi-usuário.
É possível criar cinco tipos diferentes de métodos:
Métodos de objeto: associados a objetos individuais do formulário.
Métodos de formulário: associados a formulários individuais
Triggers: os triggers são executados quando eventos específicos intervem em nível do motor do banco de dados.
Métodos de banco de dados: os métodos do banco de dados são executados automaticamente quando
ocorrem certos eventos relacionados com a sessão de trabalho.
Métodos de projeto: os métodos de projeto podem ser chamados por outros métodos do banco, pelos usuários,
pelo servidor Web, ou por elementos de um menu personalizado.
Para maiores informações sobre métodos de banco de dados, consulte o capítulo Métodos do Manual de linguagem
4D.
de cada comando.
Este capítulo oferece informação sobre a utilização do editor de métodos de 4D para criar e modificar métodos. Para
maiores informações sobre a linguagem de programação de 4D, consulte Apresentação da linguagem Manual de
linguagem 4D, o qual oferece informações detalhadas sobre os comandos de programação e a sintaxe.
- 465 -
Gestão de métodos
Criar ou abrir métodos
Os métodos são criados utilizando o editor de métodos. Este editor permite criar, testar e modificar qualquer tipo de
método.
Esta seção descreve os diferentes modos de criação e abertura de métodos (métodos de objeto, métodos de projeto,
triggers e métodos de formulário).
Lembre-se que em todas as aplicações já são criados métodos de bancos vazios; você só deve abri-los a partir do
Explorador.
Nota 4D Server: O bloqueio de um objeto ocorre quando dois ou mais usuários tentam modificar o mesmo método ao
mesmo tempo. Se um usuário abre um método
no ambiente Desenho, o método é bloqueado. Os outros usuários não podem modificar este método até que o primeiro
usuário o libere fechando a janela. Entretanto, é possível abrir o método em modo somente leitura com a finalidade de
ler ou copiar certos elementos do método.
Criar ou abrir um método objeto
Os métodos de objeto são criados para um objeto de um formulário. Para começar, você deve ir ao editor de
formulários, com um formulário em tela.
Para criar ou abrir um método de objeto no editor de formulários:
No editor de formulários, mantenha pressinada a tecla Alt (Windows) ou a tecla Opção (Mac OS) e clique no objeto
Ou
Selecione o objeto e logo escolha o comando Método de Objeto do menu Objeto.
Ou
Clique com o botão direito no objeto e escolha Método do objeto no menu contextual.
Ou
Na lista de propriedades, clique no botão Editar...
Aparece uma janela do Janela do editor de métodos, a janela estará vazia se você acaba de criar o método.
Criar ou abrir um método projeto
É possível criar ou abrir um método de projeto de várias formas.
Para criar um método de projeto a partir do menu Arquivo:
1 - Escolha Novo > Método... no menu Arquivo ou utilizando o botão Novo da barra de ferramentas de 4D.
4D exibe a caixa de diálogo Novo método.
2 - Introduza um nome de método.
Os nomes de métodos podem ter até 31 caracteres, incluindo letras, números, espaços e o caractere traço inferior (ver
Convenções en el manual de Lenguaje de 4D)..
3 – (Opcional) Selecione uma pasta para armazenar o método.
Se você selecionar um nome de pasta, o método será localizado nesta pasta.
As pastas podem ser utilizadas para organizar os objetos de sua aplicação e são administrados na páginaPágina
Início do Explorador. Por padrão, o método é criado no Nível superior, ou seja, fora das pastas.
4 – Clique no botão OK.
4D abre uma janela vazia do editor de métodos onde você pode começar a escrever um novo método.
Para criar um método de projeto a partir do Explorador:
1 – Vá à página Current form table do Explorador.
2 – Selecione o elemento Métodos de projeto.
3 – Clique no botão mais
baixo da lista.
Aparece a caixa de diálogo onde é possível colocar nome ao método e atribui-lo a uma pasta.
4 – Introduza o nome do método e clique em OK.
Para abrir um método de projeto a partir do menu Arquivo:
- 466 -
Escolha Abrir > Método... no menu Arquivo.
Aparece a página Página Início do Explorador (ver abaixo).
Para abrir um método de projeto a partir do Explorador:
1 – Vá a página Página Início do Explorador.
2 – Distribua o elemento Métodos de Projeto, logo selecione o nome do método a ser aberto.
3 – Faça um duplo clique no nome do método a ser aberto.
Ou
Selecione o comando Modificar método... no menu contextual, clique com o botão direito no nome do método a ser
aberto.
O método abre em uma janela do editor.
Para abrir um método de projeto a partir do editor de menus:
No Editor de menus, clique na área “Nome do método” de um elemento da barra de menus atual
Esta área contém o nome do método associado ao elemento selecionado (caso não exista).
Clique no botão de edição a direita do menu “Nome do método”
O método é exibido em uma nova janela do editor de métodos.
Para abrir um método de projeto a partir de uma janela do a del Janela do editor de métodos:
1 – No editor de métodos, selecione o nome do método de projeto a ser aberto.
2 – Escolha Editar método no menu contextual do editor ou pressione Ctrl + K (Windows) ou Comando + K (Mac OS).
Ou
1 – Pressione a combinação Alt + clique duplo (Windows) ou Opção + clique duplo (Mac OS) diretamente no nome
do método de projeto (seu nome não deve ter espaços).
O método é exibido em uma nova janela do editor de métodos. Se 4D não pode identificar o método, é exibida a
página Página Início do Explorador.
Criar ou abrir um trigger
É possível criar um trigger utilizando um atalho no Editor de estrutura ou diretamente no Explorador.
Para criar ou abrir um trigger a partir da janela do Editor de estrutura:
1 – Mantenha pressionada a tecla Alt (Windows) ou a tecla Opção (Mac OS) e faça um clique duplo no título da tabela
na janela do editor de estrutura.
Ou
Na janela do editor que exibe a Propriedades de Tabela, clique no botão Editar...
Aparece uma janela Janela do editor de métodos, vazia se você acaba de criar o trigger:
Para criar ou abrir um trigger a partir do Explorador:
1 – Exiba a Current form tableda janela do Explorador e exiba o elemento “Triggers”.
2 – Selecione a tabela que lhe interessa e clique no botão
situado mais abaixo da lista.
Ou
Faça um clique duplo na tabela que lhe interessa.
Aparece o trigger em uma janela do Janela do editor de métodos.
Criar ou abrir um método formulário
Os métodos de formulários podem ser abertos a partir da Current form table do Explorador ou a partir do Editor de
formulários..
Para criar ou abrir um método de formulário a partir do Explorador:
1 – Vá a página Current form tabledo Explorador.
2 – Expanda o elemento “Métodos de formulário de projeto” ou “Métodos de formulários de tabela”, dependendo do tipo
de formulário que você queira abrir o método.
3 – (Somente formulários de tabela): exibe a tabela a qual pertence o formulário.
4 – Selecione o formulário no qual que você deseja abrir o método.
5 – Clique no botão
localizado mais abaixo da lista.
Ou
Faça um duplo clique no nome do formulário.
- 467 -
O método de formulário aparece em uma janela do Janela do editor de métodos.
Nota: Também é possível criar ou abrir um método de formulário a partir da Página Formulários do Explorador:
clique com o botão direito no nome do formulário e escolha Modificar método do formulário... no menu contextual.
Para criar ou abrir um método de formulário a partir do editor de formulários:
1 – Escolha o comando Método de formulário no menu Formulário.
Ou
Clique com o botão direito em uma área vazia no formulário e escolha Método do formulário no menu contextual.
Ou
Na Lista de propriedades, clique no botão Editar... localizado junto a linha Método de formulário.
O método de formulário aparece em uma janela do Janela do editor de métodos.
Excluir métodos
É possível excluir a qualquer momento um trigger, método de formulário ou de projeto utilizando o Explorador. Também
é possível excluir um método de objeto usando o editor de formulários.
Não é possível excluir métodos de banco de dados. Para desativar este tipo de método, apague todas as instruções no
método ou as passe como comentários utilizando o símbolo “//’” (utilizado para diferenciar os comentários do código
executável). Para maiores informações sobre comentários em métodos, consulte o parágrafo .
Excluir um método de projeto, um método de formulário ou um trigger.
Para excluir um método de formulário, um método de projeto ou um trigger utilizando o Explorador:
1 - No explorador, vá até Current form table.
Tenha certeza que a página Métodos esteja bem, porque certas opções de exclusão são irreversíveis.
2 – Na janela do Explorador expanda o tipo de método que corresponda ao método que você deseja excluir (Métodos
de formulário projeto, Métodos de formulários tabela, Triggers ou Métodos de projeto).
3 – Selecione o nome da tabela ou do formulário ao qual o método que você quer excluir esteja associado.
Ou
Selecione o nome do método de projeto que você deseja excluir.
4D exibe o método no editor de métodos.
4 – Clique no botão excluir
localizado na parte inferior da janela do Explorador.
Nota Para excluir um método de projeto, também é possível clicar com o botão direito no nome do método de projeto
ou escolher Excluir método no menu contextual.
Se você excluir um método de formulário ou um trigger, 4D mostra uma mensagem de alerta lhe pedindo para
confirmar a operação. Esta eliminação será definitiva.
Se você excluir um método de projeto, 4D efetua a operação diretamente. Entretanto, essa exclusão não é
definitiva (desde que não se esvazie a lixeira). Para maiores informações, consulte o parágrafo Página Lixeira).
Excluir métodos de objeto
É possível excluir métodos de objeto utilizando o editor de formulários. Em alguns casos, excluir os métodos de objeto
desnecessários pode fazer com que a execução de banco de dados seja mais rápida.
Para excluir um método
1. Vá ao formulário que contém o(s) método(s) que você quer excluir.
2. Selecione o(s) objeto(s) que estão associado(s) aos métodos de objeto que você quer excluir.
3. Escolha o comando Excluir método do objeto do menu Objeto.
4D exclui os métodos de objeto dos objetos selecionados.
Nota: Se você excluir um método de objeto por equivocação, selecione Desfazer no menu Edição.
Importar e exportar métodos
É possível importar e exportar métodos de banco, triggers, projeto, e objeto, em forma de arquivos. Essas funções são
acessíveis através dos comandos do menu Método da Janela do editor de métodos.
Quando selecionar o comando Exportar método... aparece uma caixa de diálogo padrão de salvar arquivos,
permitindo que corrija o nome, localização e formato do arquivo a ser exportado(ver mais adiante). Do mesmo
modo que a impressão, a exportação não considera o estado contraído das estruturas de código, a totalidade do
código é exportada.
Quando selecionar o comando Importar método... aparece uma caixa de diálogo padrão de abrir archivos,
permitindo escolher o arquivo a ser importado.
- 468 -
A importação substitui o texto selecionado no método. Para substituir um método existente por um método
importado, selecione todo o conteúdo do método antes de realizar a importação.
A função importar/exportar é multiplataforma: um método exportado em Mac OS pode ser importardo em Windows e
vice-versa; 4D se encarrega da conversão de caracteres quando seja necessário.
Formatos de arquivo dos Métodos
4D pode exportar e importar os métodos em dois formatos:
Método 4D (extensão “.c4d” sob Windows): neste formato, os métodos são exportados em forma codificada. Os
nomes dos objetos são transformados em referências (tokenized).
Este formato é utilizado particularmente para fazer um intercâmbio de métodos entre aplicações 4D e plug-ins em
diferentes linguagens. Mas não é possível visualizá-los em um editor de texto.
Texto (extensão “.txt” ): neste formato, os métodos são exportados somente em formato texto. Neste caso, os
métodos são perfeitamentes legíveis utilizando um editor de texto padrão. Entretanto, é necessário que as
linguagens das aplicações 4D utilizadas para exportar e importar sejam idênticos.
Nota: Como padrão, desde 4D v15, todas as versões de 4D partilham a mesma linguagem e as mesmas
configurações de entrada para números reais e datas, o que facilita partilhamento de código entre
desenvolvedores usando copiar/colar ou exportando métodos. Ainda é possível usar configurações locais (como
nas versões prévias de 4D) marcando a opção Use regional system settings nas preferências de 4D (veja
Página Métodos).
- 469 -
Definir as propriedades dos métodos de projeto
Depois de criar um método de projeto, é possível renomeá-lo e modificar suas propriedades. As propriedades dos
métodos de projeto definem principalmente as condições de acesso e de segurança: acesso dos usuários como
também acesso para o servidores integrados ou os serviços.
Os outros tipos de métodos não têm propriedades específicas. Suas propriedades estão relacionadas aos objetos aos
que estão associados.
Para modificar as propriedades de um método de projeto:
1 – No WA SET URL FILTERS, selecione o comando Propriedades do método... no menu Método.
Ou
No Página Métodos, do Explorador, faça clique direito no método projeto e selecione Propriedades do método... no
menu contextual ou no menu de opções.
Aparece a caixa de diálogo Propriedades do método
Nota: A função de modificação global permite modificar uma propriedade de todos ou parte dos métodos de banco
de dados (ver Alteração global de atributos de métodos).
Nome
É possível alterar o nome de um método de projeto na área "Nome" da janela de propriedades dos métodos ou desde o
Explorador.
O novo nome deve respeitar as regras dos nomes de 4D (ver Convenções no manual Linguagem de 4D). Se já existe
um método com o mesmo nome, 4D mostra uma mensagem que indica que o nome do método já foi usado. Se é
necessário, 4D ordena novamente a lista de métodos.
Atenção: mudar o nome de um método já usado no banco pode invalidar os métodos e fórmulas que usam o antigo
nome e há o risco de afetar o funcionamento da aplicação. Pode renomear o método manualmente mas se recomenda
usar a função para renomear os métodos projeto, descrita na seção Renomear. Com esta função, pode atualizar
automaticamente o nome onde se chama o método no modo Desenho.
Com 4D Server, o nome do método é mudado no servidor quando termina de editar o nome. O nome do método é
alterado no servidor quando se termina de editar o nome. Se mais de um usuário estiver modificando o nome do
método ao mesmo tempo, o nome final do método será o nome especificado pelo último usuário ao terminar de editar o
- 470 -
nome. É recomendável definir um proprietário para o método de modo que somente certos usuários possam alterar o
nome do método.
Nota: os métodos de banco de dados não podem ser renomeados, o mesmo acontece com os triggers, métodos de
formulário e métodos de objeto, os quais estão atados a objetos e pegam os nomes dos objetos relacionados.
Privilégios de acesso e de proprietário
É possível controlar o acesso aos métodos definindo os privilégios de acesso e proprietário para grupos de usuários.
Somente um grupo pode atribuído para cada privilégio utilizando a lista suspensa de Acesso e Proprietário da caixa de
diálogo Propriedades do método. Para maiores informações sobre a criação de um sistema de senhas de acesso com
usuários e grupos, consulte a seção Usuários e grupos.
A lista suspensa Acesso define o grupo que pode executar o método. Se um usuário que não está no grupo tenta
executar o método, 4D mostra uma mensagem indicando que seus privilégios de acesso não lhe permitem
executar o método.
A lista suspensa Proprietário controle que grupo pode editar o método no ambiente Desenho. Se um usuário que
não está no grupo tenta editar o método no ambiente Desenho, 4D mostra uma mensagem indicando que o
usuário não tem o privilégio de acesso para editar o método.
Os usuários que aparecem em ambos os grupos podem utilizar ou modificar o formulário sem restrições.
Atributos
Os atributos permitem controlar a utilização e as chamadas do método projeto em diferentes contextos. Note que os
atributos podem ser definidos globalmente para uma seleção de métodos projeto utilizando o Explorador (ver a seguinte
seção).
Invisível
Se você não quer que os usuários possam executar um método de projeto utilizando o comando Método... do menu
Executar, é possível tornar o método Invisível na caixa de diálogo Propriedades do método. Um método invisível não
aparece na caixa de diálogo de execução de métodos (ver o parágrafo A partir da caixa de diálogo de execução de
métodos).
Um método de projeto invisível segue estando disponível para os programadores do banco de dados, permanece
listado na página Current form table e na lista de rotinas do editor de métodos.
Disponível através de 4DACTION, 4DMETHOD e 4DSCRIPT
Esta opção permite reforçar a segurança do servidor Web de 4D: quando não está selecionada, o método de projeto
não pode ser executado através de uma solicitação HTTP que contenha a URL especial 4DACTION de chamada de
métodos (assim como o antigo URL 4DMETHOD) nem as etiquetas especiales 4DSCRIPT, 4DTEXT e 4DHTML (como
también las antiguas etiquetas 4DVAR y 4DHTMLVAR).
Para maiores informações, consulte Ações URL e Formulário e Etiquetas HTML 4D no Manual de linguagem de 4D.
No Explorador os métodos de projeto disponíveis tem um ícone específico: .
Por razões de segurança, esta opção não está selecionada por padrão. Deve indicar individualmente os métodos que
podem ser executados através dos URLs e as etiquetas especiais.
Oferecido como serviço Web
Este atributo lhe permite publicar o método atual como um Serviço Web através de uma solicitação SOAP. Para
maiores informações, consulte o parágrafo Publicar ou utilizar serviços Web.
Quando esta opção está selecionada, a opção Publicado em WSDL está ativada.
Os métodos de projeto oferecidos como Serviço web tem um ícone específico:
.
Nota: não é possível publicar um método como serviço web se seu nome inclui caracteres que não cumpram com a
nomenclatura XML (por exemplo os espaços). Se o nome do método não cumpre com a nomenclatura, 4D não atribui a
propriedade.
Publicado em WSDL
Este atributo está ativo apenas se o atributo "Oferecido como serviço web" estiver selecionado. Ele permite incluir o
método atual no arquivo WSDL da aplicação 4D. Para maiores informações sobre este ponto, consulte o parágrafo
Geração de WSDL.
No Explorador, os métodos de projeto que são oferecidos como um serviço Web e publicados em WSDL tem um ícone
- 471 -
específico:
.
Compartilhado entre componentes e banco principal
Este atributo é utilizado em caso de uso de componentes. Ao selecionar esta opcão, você indica que o método estará
disponível para os componentes se a aplicação é utilizada como banco principal. Caso contrário, quando a aplicação é
utilizada como componente, o método estará disponível para os bancos principais.
Para maiores informações sobre componentes, consulte o capítulo Desenvolver e instalar componentes 4D.
Disponível via SQL
Quando selecionada, esta opção autoriza o motor SQL de 4D executar o método de projeto. Por padrão, esta opção
não está selecionada, o que significa que, a menos que seja autorizado explicitamente, os métodos de projeto 4D estão
protegidos e não podem ser chamados pelo motor SQL de 4D.
Esta propriedade aplica a todas as pesquisas SQL internas e externas, executadas através do driver ODBC, o código
SQL inserido nas etiquetas Begin SQL/End SQL ou o comando QUERY BY SQL .
Notas:
Inclusive se um método tem o atributo “Disponible vía SQL”, os acessos definidos no nível das Preferências e
propriedades do método são levados em consideração para a execução do método.
A função ODBC SQLProcedure retorna únicamente os métodos de projeto que tem o atributo “Disponível via
SQL” selecionados.
Para maiores informações sobre o uso do motor SQL de 4D, consulte Princípios para Integração 4D e motor SQL
de 4D no Manual de referência SQL de 4D.
Executar no servidor
Este atributo só é levado em consideração para uma aplicação 4D em modo cliente/servidor. Quando esta opção
estiver selecionada, o método de projeto sempre é executado no servidor, sem importar como é chamado.
Para maiores informações sobre esta opção, consulte a seção Executar no atributo servidor do Manual de
Referencia de 4D Server.
Disponível via as chamadas 4D Mobile
Esta opção configura a disponibilidade e o alcance da ação para o método como parte de um link 4D Mobile com um
servidor Wakanda.
Para obter mais informação sobre esta opção, consulte Configuração da base de dados 4D no manual 4D Mobile.
Alteração global de atributos de métodos
A caixa de diálogo "Atributos dos métodos", permite modificar um atributo de método projeto (Invisível, Oferecido como
serviço web, etc) para todos ou alguns dos métodos de projeto do banco de dados em somente uma operação.
Esta função é especialmente útil para modificar os atributos de um grande número de métodos de projeto. Da mesma
forma é possível utilizar durante o desenvolvimento para aplicar atributos comuns a grupos homogêneos de métodos.
Para modificar globalmente os atributos de métodos:
1. No Página Métodos do Explorador 4D, desloque o menu de opções e selecione o comando Mudança global
de atributos...
Aparece a caixa de diálogo “Atributos de métodos”:
- 472 -
2 - Na área “Nome de método(s) a alterar”, introduza uma cadeia de caracteres que lhe permite designar os métodos
que você quer modificar globalmente. A cadeia de caracteres é utilizada como critério de pesquisa dos nomes de
métodos.
Utilize o caractere @ para ajudar a definir os grupos de métodos:
1.
para designar os métodos cujos nomes comecem por..., digite @ ao final da cadeia. Por exemplo: web@.
para designar os métodos cujos nomes contém..., digite @ no meio da cadeia. Por exemplo: web@write.
para designar os métodos cujos nomes terminam em..., digite @ ao início da cadeia. Por exemplo: @write.
para designar todos os métodos, digite @ na área.
Notas:
A pesquisa não leva em consideração diferença entre maiúsculas e minúsculas.
É possível introduzir vários caracteres @ na cadeia, por exemplo dtro_@web@pro.@
3- Na área “Atributo a alterar”, escolha um atributo da lista suspensa, logo clique no botão de opção Verdadeiro ou
Falso correspondente ao valor aplicado.
Nota: Se o atributo “Publicado en WSDL” é definido como Verdadeiro, só será aplicado aos métodos de
projeto que contenham o atributo “Oferecido como Serviço Web”.
4 - Clique em Aplicar.
A modificação é aplicada instantaneamente a todos os métodos de projeto atribuídos pela cadeia de caracteres
introduzida.
- 473 -
Janela do editor de métodos
Por padrão, uma janela do editor de métodos tem várias áreas: uma caixa de ferramentas, uma área de edição, uma
área de listas, uma barra de estado, e uma área de inserção de pontos de quebra.
Pode personalizar a área de edição dos métodos, por exemplo, adicionando listas ou ocultando os números das linhas.
Barra de ferramentas
Cada janela do editor de métodos contém uma barra de ferramentas que lhe permite acessar instantaneamente as
principais funções relativas a execução e edição de métodos.
este botão provoca a execução do método. Utilizando o menu
associado ao botão, é possível selecionar o tipo de execução. Somente
Executar o método:
os métodos de projeto e os métodos de banco podem ser executados
utilizando este botão. Para maiores informações sobre estes
comandos, consulte o parágrafo Executar métodos.
ao clicar no ícone buscar aparece a caixa de diálogo Buscar,
permitindo efetuar uma pesquisa no método atual. O combo Box
Buscar
associado pode ser utilizado para iniciar uma pesquisa padrão
diretamente: para fazer isto, introduza a cadeia de caracteres a ser
buscada e pressione Enter ou Retorno de carro.
Intro ou Retorno de carro.O combo box
também lista as últimas pesquisas
efetuadas; para voltar a fazer uma
pesquisa, selecione-a no menu do combo
box. Para maiores informações, consulte
o parágrafo Procurar e substituir nos
métodos.
este botão mostra um menu que lista todas os comandos macros
Macros
disponíveis. Para maiores informações, consulte o parágrafo Criar e
utilizar macros.
Estes botões permitem expandir e contrair todas as estruturas de
Expandir tudo / Contrair tudo
programação do método. Para maiores informações, consulte o
parágrafo Escrever um método.
este botão permite mostrar ou ocultar as listas na janela. Para maiores
Mostrar ou ocultar listas
informações, consulte a seção “Área de listas”.
este botão mostra a caixa de diálogo Propriedades do método
Propriedades do método
(métodos de projeto somente). Para maiores informações, consulte o
parágrafo Definir as propriedades dos métodos de projeto.
este botão mostra um menu que lista os últimos 20 elementos copiados
Últimos valores da área de
em uma janela. Se você selecionar um elemento, o elemento é copiado
transferência
no lugar onde está localizado o cursor.
estes 9 ícones representam as 9 áreas de transferência disponíveis no
editor de métodos. Um ícone branco contém um número que indica que
uma área de transferência contém dados, um ícone laranja indica uma
Área de transferência
área de transferência vazia. Pode utilizar estas áreas de transferência
fazendo clique nos ícones ou utilizando as combinações de teclas. Para
maior informação, consulte Escrever um método.
este ícone indica que o método está bloqueado por outro usuário. Clicar
Bloqueio (4D Server unicamente)
no cadeado permite recarregar o método (e portanto mostrar as
alterações efetuadas por outro usuário.)
Área de edição
A área de edição contém o texto do método. Você introduz e modifica o texto do método nesta área . O editor cria
automaticamente as identações no texto e colore os elementos de sintaxe para fazer mais clara a estrutura do método.
É possível personalizar a visualização desta área. Toda personalização se passa automaticamente em todas as janelas
- 474 -
do editor.
fonte e tamanho de fonte: a fonte dos caracteres utilizada na área de edição e seu tamanho são definidas na
Página Métodos das Preferências de 4D. Também pode mudar o tamaño da fonte utilizando o submenu Ver> do
menu Método: os comandos Aumentar a fonte e Reduzir a fonte permitem variar o tamanho da fonte por
pontos.
estilo e cor dos elementos de sintaxe: pode atribuir uma cor e/ou um estilo específico a cada tipo de elemento
da linguagem 4D e SQL. Para fazer isso, clique com o botão direito em um elemento da linguagem (variável,
palavra clave, etc.) e escolha uma opção do menu Estilo. A modificação se aplica a todos os elementos do
mesmo tipo na janela atual como também em todas as janelas do editor. Também pode definir estas opções na
Página Métodos das Preferências de 4D.
espaços: pode mostrar os espaços entre palavras utilizando pontos (.) em lugar de "espaços em branco". Para
fazer isso, escolha Ver > Espaços no menu Método (uma marca de seleção indica se mostram os espaços).
Esta função aplica a todos os elementos do código (nomes de comandos, variáveis, comentários, etc.)
largura das indentações de código: pode definir esta opção na Página Métodos das Preferências de 4D.
cores da interface: permite modificar as diferentes cores utilizados na interface da área de edição (sublinhado,
fundo, etc.) utilizando as opções definidas na Página Métodos das Preferências de 4D.
Para mais informação sobre a entrada de código nesta área, consulte a seção Escrever um método.
Área de listas
A área de listas permite mostrar uma ou várias listas de elementos necessárias para escrever os métodos (comandos,
constantes, formulários, etc.). É possível escolher o número e conteúdo das listas publicadas na janela.
Mostrar as listas
Por padrão, o editor de métodos exibe quatro listas. É possível aumentar ou reduzir a largura de cada lista arrastando
suas partes. Da mesma forma é possível ajustar o tamanho da área das listas em relação a área de edição arrastando
a linha de separação entre as duas zonas:
Você deve fazer um clique duplo em um elemento de uma lista para inseri-lo na área de edição, onde está
localizado o cursos.
Para modificar o conteúdo de uma lista, clique em uma área de título da lista: aparece um menu suspenso, que
lhe permite escolher o tipo de elemento a ser exibido.
Para adicionar ou excluir uma lista, clique na área de título de uma das listas e escolha o comando
correspondente no menu suspenso (ver a seguir)
Note que pelo menos uma lista deve estar suspensa na janela do editor. O comando Excluir esta lista está
desativado ao clicar na última lista. Se você quiser ocultar todas as listas, deve clicar no botão
, ou
ocultá-las automaticamente nas Preferências do banco de dados (ver a seguir).
Também é possível ocultar em todas as janelas desmarcando a opção Ver>Listas no menu Método (uma marca de
seleção indica se as listas são mostradas) ou desmarcando a opção Mostras as listas na Página Métodos nas
- 475 -
Preferências 4D, aba Opções. Os métodos abertos devem ser fechados e abertos novamente para que se considerem
as modificações efetuadas nas Preferências.
Pode guardar os parâmetros definidos na janela do editor de métodos em forma de modelo. Para maior informação,
consulte Salvar como modelo.
Descrição dos tipos de listas
É possível exibir diferentes listas de lementos na área de listas da janela do editor de métodos.
Tabelas e campos: nomes das tabelas e campos do banco em forma de lista hierárquica. Quando se insere um
nome de campo no método fazendo clique duplo no seu nome, 4D o insere respeitando a sintaxe e adiciona o
nome da tabela.
Tabela (submenu): nomes de campos da tabela selecionada utilizando o submenu.
Tabela atual: nomes de campos da tabela atual (disponível nos triggers, os métodos de formulário e os métodos
de objeto).
Formulários de projeto: nomes dos formulários de projeto do banco. Ao fazer um clique duplo em um nome de
formulário de projeto, 4D o insere respeitando a sintaxe: o nome do formulário é inserido entre aspas.
Formulários de tabela: nomes de tabelas e de formulários tabelas do banco em forma de lista hierárquica.
Quando você inserir um nome de formulario no método ao fazer um clique duplo em seu nome, 4D o insere
respeitando a sintaxe: o nome do formulário é inserido entre aspas e está precedido do nome da tabela e um
ponto e vírgula. Por exemplo: [Tabela];"Formulario".
Métodos: nomes dos métodos de projeto do banco
Todas as pastas: nomes das pastas e sub-pastas de objetos definidos no banco em forma de lista hierárquica.
As pastas permitem organizar os objetos de maneira personalizada. As pastas são administradas a partir da
Página Início do Explorador.
Pastas (submenu): conteúdo da pasta selecionada utilizando o submenu.
Macros: nomes de macros definidas para o banco (ver Criar e utilizar macros).
Comandos: comando da linguagem 4D em ordem alfabética.
Comandos por temas: comandos por tema da linguagem de 4D classificados por tema em forma de lista
hierárquica.
Barras de menus: nomes e números de barras de menus criadas no editor de barras de manus de 4D (ver el
capítulo Menus e barras de menus).
Constantes: contantes de 4D e dos possíveis plug-ins, classificados por tema em forma de lista hierárquica.
Listas: nomes das listas.
Imagens: nome e números de imagens armazenadas na Biblioteca de imagens de 4D.
Comandos de todos os plug-ins: comandos dos plug-ins instalados no banco, classificados por temas em
forma de lista hierárquica.
Comandos do plug-in (submenu): comandos de um plug-in específico selecionado utilizando o submenu. Por
padrão, estão disponíveis os seguintes plug-ins:
4D Internet Commands: este plug-in adiciona funções de Internet adicionais a 4D, em particular para a
gestão de e-mails. Ver
4D Chart: 4D Chart é um editor de gráficos integrado de 4D. Ver 4D Chart Language. 4D Chart
Language
OLE_Tools (Somente Windows): OLE_Tools é oferecido com a versão Windows de 4D, é um plug-in para
o controle de áreas OLE. Ver OLE Tools.
Palavras chaves SQL: conjunto de palavras chaves reconhecidas pelo analizador sintático SQL de 4D. Esta lista
inclui os comandos (por exemplo SELECT), as cláusulas (WHERE) como também as funções (ABS).
Funções SQL: funções SQL de 4D.
Nota: exceto o elemento Macros, todas as listas estão em ordem alfabético.
Área de pontos de interrupção
Esta área, localizada à esquerda da área de edição, permite visualizar os números de linhas e inserir diretamente os
pontos de interrupção junto a instruções específicas. Os pontos de interrupção são úteis durante a fase de depuração
de um método. Eles param a execução de seu código em lugares específicos e mostram o depurador.
Para inserir um ponto de interrupção, clique na área de pontos de interrupção no lugar onde você quiser localizá-lo e
escolha o comando Comutar ponto de interrupção no menu contextual do editor. Um ponto vermelho indica a
presença de um ponto de interrupção.
É possível visualizar a localização de todos os pontos de interrupção presentes no banco de dados no Explorador de
Execução.
Para desativar temporariamente um ponto de interrupção ou modificar suas propriedades, pressione a tecla Alt
- 476 -
(Windows) ou a Opção (Mac OS) enquanto clica no ponto de interrupção ou selecione Modificar ponto de
interrupção... no menu contextual do editor.. Aparece a caixa de diálogo de Propriedades do ponto de interrupção.
Para uma descrição completa dos pontos de interrupção, consulte Ponto de Interrupção no Manual de linguagem 4D.
Para excluir um ponto de interrupção, clique no ponto vermelho ou escolha novamente o comando Comutar ponto de
interrupção no menu contextual.
Mostrar/Ocultar números de linhas
Você pode exibir números de linha em cada janela do editor de métodos.
A exibição de números de linha pode ser ativada ou desativada por padrão usando a opção Mostrar números
de linhas no Página Métodos do 4D Preferências.
Também é possível alterar esta exibição separadamente para cada janela do editor utilizando o método
Mostrar/Ocultar números de linha do menu Modo.
A exibição de números de linha melhora a navegação na janela. O comando Ir para a linha nº... do menu Método
permite que você aproveite essa exibição (consulte "Ir para a linha nº" de Procurar e substituir nos métodos).
Barra de estado
A barra de status no canto inferior direito do editor exibe a posição do cursor o tempo todo:
Ln: número da linha
Col: número da coluna, ou seja, o nível entre a hierarquia de estruturas de programação. O primeiro nível é 0. O
número de colunas é útil em caso de depuração, já que esta informação pode ser fornecida pelo intérprete no
caso de erro no código.
Ch: localização do caracter na linha.
Salvar como modelo
É possível salvar os parâmetros definidos na janela do editor de métodos em forma de “modelo”. Uma vez salvo o
modelo, os parâmetros definidos serão utilizados em cada nova janela do editor de formulário que é aberto.
Os parâmetros a seguir são salvos no modelo:
Tamanho relativo da área de edição e das listas
Número de listas
Localização e conteúdos de cada lista
Largura relativa de cada lista
Para salvar uma janela do editor de métodos como modelo, escolha o comando Salvar como modelo no menu
Método. O modelo é salvo imediatamente (não aparece nenhuma caixa de diálogo) com as preferências da aplicação
4D. Se já existir um modelo, ele é substituído.
- 477 -
Escrever um método
O editor de métodos de 4D funciona como um editor de texto. Geralmente, o processo de escrever um método é uma
combinação entre a escrita do texto, a seleção de componentes e o arrastar elementos a partir do Explorador e outras
janelas. Também é possível utilizar vários tipos de funções para acelerar a criação de métodos.
É possível movimentar-se pelo conteúdo dos métodos, os quais podem incluir até 32.000 linhas de código ou 2 Gb de
texto.
O editor de métodos de 4D realiza uma primeira verificação da sintaxe dos métodos. São realizadas verificações
adicionais durante a execução do método.
Nota sobre linguagem de comandos e constantes
Em anteriores versões de 4D v15, a versão francesa do programa oferecia uma linguagem de programação em
francês, enquanto todas as outras versões (Inglês, Alemão, etc.) continha uma linguagem "universal", em Inglês.
Por exemplo, o comando No. 53 foi nomeado STOCKER ENREGISTREMENT em francês e SAVE RECORD em
todas as outras línguas. Configurações locais também eram utilizadas para a entrada de números reais e datas.
Este foi modificada a partir de 4D v15: por padrão, editor de 4D método usa o modo internacional "English-US",
independentemente da linguagem 4D do aplicativo ou as configurações do sistema local e comando No. 53 agora é
chamado SAVE RECORD na versão francesa de 4D. Listas, janelas com digitação antecipada, ajuda on-line, etc.,
exibem os nomes dos comandos e constantes em Inglês. Para obter mais informações sobre essa configuração,
consulte Introdução a linguagem 4D
Ainda é possível restaurar o modo anterior, com base nas configurações locais, utilizando a opção "Usar configurações
do sistema regional de preferências"(see Página Métodos). Claro que, independentemente da configuração utilizada,
os princípios para o código escrito descritos nesta seção permanecem os mesmos.
4D v15 Mode (default):
Local mode:
Escrever e editar texto
4D utiliza as técnicas de edição de texto padrão para escrever e editar no editor de métodos. A medida que você
escreve, aparecem os caracteres no lugar onde está localizado o cursor. Você termina cada linha pressionando a tecla
Retorno de carro (Mac OS) ou Enter (Windows).
Nota: a tecla Enter do teclado numérico se comporta diferente da tecla Enter do teclado numérico. Use a tecla Enter
do teclado numérico para forçar a 4D a verificar a sintaxe da linha de código, sem passar a linha seguinte.
O editor de métodos utiliza convenções de visualização padrões (estilo, cor) para os nomes dos comandos, os
comandos de plug-ins, os métodos, etc. É possível modificar estas convenções (ver Janela do editor de métodos). A
- 478 -
medida que escreve, quando valida sua entrada, 4D avalia o texto da linha e aplica o formato de saída apropriado. 4D
também indenta cada linha em seu nível apropriado com relação à linha anterior quando se utilizam estruturas de
programação (por exemplo, If, End if).
Quando você pressiona a tecla Retorno/Enter, 4D avalia o texto da linha e aplica o formato de saída apropriado. 4D
também indenta cada linha em seu nível apropriado com relação à linha anterior quando se utilizam estruturas de
programação (por exemplo, If, End If).
É possível utilizar as teclas de setas para se mover rapidamente de uma linha a outra. O uso das setas para se mover
por várias linhas é mais rápido que clicar porque o editor retarda a verificação da sintaxe das linhas.
Em Windows, o editor de código inclui um IME (Input Method Editor) permitindo facilitar a edição do código nos
sistemas japonês ou chinês.
O editor de métodos inclui vários atalho de navegação listados em “Navigational Keyboard Shortcuts”.
Adicionar elementos ao método através de arrastar e soltar
4D lhe permite utilizar arrastar e soltar durante a escrita de métodos. É possível arrastar e soltar elementos a partir do
Explorador, dentro de um método, ou entre dois métodos.
Desde o Explorador, pode arrastar e soltar:
nomes de tabelas, campos, formulários e métodos de projeto a partir da página Início,
nomes de tabelas e campos a partir da página Tabelas,
nomes de tabelas e formulários a partir da página Formulários,
nomes de métodos de projeto e de formulários a partir da página Métodos,
constantes a partir da página Constantes,
comandos 4D a partir da página Comandos,
Ao arrastar e soltar um componente, 4D sempre utiliza a sintaxe apropriada para o componente. Por exemplo, se
você arrasta o nome do campo “Nome” da tabela [Empregados], aparece no editor de métodos como
“[Empregados]Nome. Da mesma forma, se você arrastar o nome do formulário “Entrada” da tabela Empregados,
aparece no editor de métodos como “[Empregados]; “Entrada”.
Quando você insere um comando arrastando-o a partir do Página Comandos do Explorador, aparece com sua
sintaxes, ou seja cada um de seus parâmetros, no editor de métodos. Utilize a sintaxe que você necessita para
adaptá-la ao seu uso. Esta característica lhe lembra os parâmetros que o comando espera.
Arrastar e soltar dentro de um método ou entre dois métodos diferentes:
No editor de métodos, o mecanismo de arrastar e soltar é ativado assim que se realiza uma seleção de texto.
Por padrão, o mecanismo de arrastar e soltar move a seleção de texto. Para copiar esta seleção, mantenha
pressionada a tecla Ctrl (Windows) ou Opção (Mac OS) durante a operação.
Múltiplas instruções
Agora pode escrever uma única instrução em várias linhas, terminando cada linha da instrução com o caractere "\". 4D
considerará todas as linhas de uma só vez. Por exemplo, as duas instruções baixo são equivalentes
Mudar para Maiúscula/minúscula
Vários comandos permitem modificar automaticamente a caixa dos caracteres selecionados. Esses comandos são
acessíveis através do submenu Maiúscula/minúscula no menu Método, ou no menu contextual do editor:
MAIÚSCULAS/ minúsculas: passa os caracteres selecionados a maiúsculas ou minúsculas.
cameLlúsculas / CameLlúsculas: passa os caracteres selecionados a "camellúsculas". Isso consiste em
passar a maiúsculas cada primeira letra de um grupo de palavras. Este tipo de notação é utilizado com frequência
para a nomenclatura de variáveis. dataContrato e DataCompra são exemplos das dois variantes da escritura em
camellúsculas.
Quando aplica um desses comandos a uma seleção de texto, os espaços e caracteres "_" são apagados e a primeira
letra da cada palavra passa a maiúsculas.
Inverter expressão
A função Inverter expressão permite reverter os argumentos de uma expressão atribuindo um valor. Por exemplo,
variável1:=variável2
- 479 -
se converte em
variável2:=variável1
Esta função é extremamente útil para reverter um conjunto de tarefas utilizadas para ler ou definir propriedades, ou para
corrigir erros de entrada. Para utilizar esta função, selecione a ou as linhas a serem modificadas, logo selecione o
comando Inverter expressão no menu Método ou no menu contextual da área. Dentro da seleção, só serão
modificadas as linhas que atribuem um valor.
Copiar-colar múltiplos e numeração da área de transferência
Além da operação padrão de copiar e colar, a área de transferência 4D oferece duas funções adicionais que lhe
permitem trabalhar com o conteúdo da área de transferência:
O programa conserva em memória as últimas 10 ações de “copiar” ou “colar” realizadas no editor de métodos
durante a sessão atual. Cada um dos diferentes conteúdos salvos podem ser reutilizados a qualquer momento.
Para fazer isto, utilize o comando Histórico da área de transferência do menu contextual do editor de métodos
ou o botão “Últimos valores da área de transferência” da barra de ferramentas:
São exibidos os primeiros caracteres dos elementos copiados ou cortados. A seleção de um elemento provoca a
inserção na localização atual do cursor.
Nove pranchetas numeradas adicionais estão disponíveis e podem ser utilizados diretamente utilizando as
combinações de teclas ou os botões da barra de ferramentas do editor:
Copiar o texto selecionado em uma
prancheta
Windows Ctrl+Alt+clique em um ícone de
Mac OS
pranchetas
Ctrl+Alt+número da prancheta
Cmd+Opção+clique em um ícone de
pranchetas
Cmd+Opção+número das pranchetas
Colar o conteúdo de uma prancheta na
localização do cursor
Ctrl+clique em um ícone da prancheta
Ctrl+número da prancheta
Cmd+clique em um ícone de prancheta
Cmd+número da prancheta
Note que deve utilizar as teclas do teclado numérico ou utilizar as combinações necessárias para acessar as
teclas numeradas do teclado alfanumérico.
Mover linhas
Pode mover diretamente a linha onde está o cursor sem ter que selecionar a linha, usando os comandos Mover para
cima, e Mover para baixo, no menu Método. Também pode usar a combinação Alt/Opção + Flecha para cima ou
Flecha para baixo.
Barras de mudança
Barras de cores permitem visualizar instantaneamente as linhas de código que modificadas desde a abertura do
método:
As barras de mudança mudam de cor para indicar se as modificações são guardadas ou não:
amarelo: a linha foi modificada e o método não foi guardado ainda.
verde: a linha foi modificada e o método foi salvado.
Função autocompletar
O editor de métodos tem uma função de “autocompletar”. 4D sugere automaticamente comandos baseado nos
primeiros caracteres escritos.
No exemplo a seguir, a entrada da string “cop” faz com que apareça um triângulo azul que indica que várias sugestões
estão disponíveis:
Nota: Quando os caracteres escritos correspondem a somente um valor possível, este valor sugerido aparece em cinza
- 480 -
(e é inserido ao pressionar a tecla Tab):
--->
Se há várias sugestões disponíveis, 4D as mostra em uma lista suspensa quando se pulsa a tecla Tab:
A lista está em ordem alfabética. Escolha o valor fazendo duplo clique nele, usando as teclas de teclado e logo
pressione Enter, Retorno de carro ou Tab para inserir o valor selecionado.
Por padrão, também pode inserir um valor sugerido pressionando um dos seguintes delimitadores ( ; : = < [ { depois de
selecionar um valor: o valor se insere a continuação, pronto para a entrada.
+ ( key -->
Nota: pode desabilitar o uso de delimitadores para insertar valores sugeridos na Página Métodos das preferências
usuário.
Pode pressionar a tecla Esc para fechar a lista suspensa ou pode seguir escrevendo enquanto está aberta. Os valores
sugeridos na lista pop-up e são atualizados em função dos caracteres adicionais introduzidos.
Se os caracteres introduzidos correspondem a diferentes tipos de objetos, a lista os mostra em seu estilo atual. Os
seguintes tipos de objetos podem ser mostrados:
Comandos 4D
Comandos SQL
Métodos usuário
Nomes de tabela
Nomes de campo
Constantes
Variável local, processo ou interprocesso, declarada no método
Comandos de plug-in
Palavras chave 4D
Palavras chave SQL
Macros (que aparecem entre < >)
Nota: por razões práticas, pode desativar l visualização automática da lista de sugestões para as constantes,
variáveis locais e interprocessos e/ou as tabelas. Estas opções se encontram na Página Métodos das
preferências de usuário.
Selecionar texto
Selecionar bloco
A função Selecionar bloco permite seleccionar o “bloco pai” so código que contém o cursor. O bloco pai pode estar
definido por:
aspas
parêntesis
uma estrutura lógica (If/Else/End if, While/End while, Repeat/Until Case of/End case), ou,
colchetes.
Se um bloco de texto já estiver selecionado, a função seleciona o nível de bloco pai superior e assim sucessivamente,
até que todo o método esteja selecionado.
Ao pressionar Ctrl+Shift+B (Windows) ou Comando+Shift+B (Mac OS) permite reverter esta operação e
deselecionar o último bloco pai selecionado.
- 481 -
Nota Se o ponto de inserção está localizado em uma estrutura de tipo If ou Else o bloco anexo será o que contenha,
respectivamente a instrução If ou Else
Clique duplo
Poder dar um duplo clique para selecionar "palavras" individuais. Quando o nome de um elemento de referência
(comando, constante, método, etc.) contém espaços, pode selecionar o nome completo (incluindo os espaços) usando
a combinação Alt/opção + clique duplo.
Atalhos de teclado de navegação
Diferentes atalhos de teclado para navegar o código estão disponíveis no editor de métodos de 4D.
Nota: em Mac OS, substitua a tecla Ctrl (Windows) pela tecla Comando.
Atalho
Ação
Cria e aumenta a seleção, caractere por caractere, para a direita, ou reduz a seleção,
caractere por caractere, para a esquerda
[Shift]+[flecha
Reduz a seleção, caractere por caractere, para a direita ou cria e aumenta a seleção,
esquerda]
caractere por caractere, para a esquerda
[Shift]+[flecha abaixo] Cria e aumenta uma seleção, linha por linha, de cima pra baixo
[Shift]+[flecha acima] Cria e aumenta uma seleção, linha por linha, de baixo pra cima
[Ctrl]+[Shift]+[flecha
Cria e aumenta a seleção, palavra por palavra, para a direita
direita]
[Ctrl]+[Shift]+[flecha
Reduz a seleção, palavra por palavra, para a direita ou cria e aumenta a seleção, palavra por
esquerda]
palavra, para a esquerda
[Ctrl]+[flecha direita]
Move o ponto de inserção, palavra por palavra, de esquerda a direita
[Ctrl]+[flecha
Move o ponto de inserção de inserção, palavra por palavra de direita a esquerda
esquerda]
[Home]
Localiza o ponto de inserção ao começo da linha
[End]
Localiza o ponto de inserção ao final da linha
[Ctrl]+[Home]
Localiza o ponto de inserção ao princípio do método
[Ctrl]+End
Localiza o ponto de inserção ao final do método
[Shift]+[Home]
Seleciona todos os caracteres na linha que estão a esquerda do cursor
[Shift]+[End]
Seleciona todos os caracteres na linha que estão localizados a direita do cursor
Movimenta os conteúdos do método, página por página, de baixo para cima (não modifica o
[PgUp]
ponto de inserção)
Movimenta os conteúdos do método, página por página, de cima para baixo (não modifica o
[PgDn]
ponto de inserção)
[Shift]+[flecha direita]
Verificar e corregir erros de sintaxe
4D verifica automaticamente a sintaxe do método para ver se está correta. Ao introduzir um texto ou selecionar um
componente que não está correto sintaticamente, 4D especifica o erro na área de sintaxe e indica a expressão
incorreta, . Quando passa o mouse sobre os símbolo, uma mensagem de ajuda mostra a causa do erro:
Ao introduzir código, é possível verificar imediatamente a sintaxe da linha atual (sem passar à linha seguinte)
pressionando a tecla Enter do teclado numérico. 4D verifica a linha, a formata, indica os erros e localiza o cursor ao
final da linha. Quando uma linha de um método é marcada por não respeitar a sintaxe, verifique e modifique a entrada.
Se a linha é correta, 4D volta ao estilo padrão. A validação de um método inteiro é efetuada automaticamente quando
se fecha a janela. Também é possível forçar a validação pressionando a tecla Enter.
No momento da validação, 4D efetua uma verificação sintáxica ao nível das linhas (sintaxe dos comandos) e/ou da
estrutura das instruções (If, End id, etc.). 4D também verifica a correspondência dos elementos de fechamento do
código, tais como parênteses ou aspas. Quando digita um caractere de fechamento, 4D indica o elemento de
fechamento correspondente desses elemento, marcando os caracteres de início e fim com retângulos cinzas:
Nota: esses elementos são mostrados quando se clica no código. Pode moficar sua aparência ou ocultar os elementos
usando a opção "Correspondência dos parênteses" em Página Métodos das Preferências de 4D.
O editor de métodos só pode verificar os erros de sintexe evidentes (erros de digitação ou similares). Não verifica os
erros que ocorrem durante a execução. Os erros de execução são interceptados por 4D quando o método é executado.
4D oferece um depurador (ver Depurador) para controlar e corrigir estes erros. O compilador representa uma valiosa
- 482 -
ajuda para detectar erros. Para maiores informações sobre o compilador, consulte o capítulo Compilação.
Usar as dicas de ajuda
O editor de métodos fornece diferentes informações contextuais através de mensagens de ajuda, que aparecem
quando o mouse passa sobre um objeto.
Erros: Quando o ponteiro do mouse passa sobre o símbolo que indica um erro no código, uma mensagem de
ajuda mostra a causa do erro (veja a seção "Verificar a sintaxe e corrigir os erros.").
Tipos de
Documentação de comando 4D: quando você passa o mouse sobre um comando 4D, uma mensagem de
ajuda dá a sintaxe de comando e uma breve descrição de como ele funciona.
Tipos de variáveis: Quando localiza o cursor sobre uma variável, uma mensagem de ajuda mostra seu tipo (caso
tenha sido explicitamente definida no método).
Métodos de projeto: quando o cursor está localizado sobre um método projeto, é exibida uma mensagem de
ajuda:
ou os comentários especificados no Explorador, caso haja algum(ver Usar os comentários).
ou as primeiras linhas do método, se incluírem comentários (linhas que começam por //). É uma prática
comum inserir documentação do método assim como também seus parâmetros em forma de comentários
ao início do método. Pode obter essa informação diretamente, apenas tenha certeza de primeiro eliminar os
comentários no Explorador.
Comentários ao início de um método:
Mensagem de ajuda em outro método:
Ver a documentação de um comando
A qualquer momento é possível ver a documentação HTML de um comando da lnguagem 4D: selecione completamente
o nome do comando ou coloque o cursor sobre o nome e pressione a tecla F1. A documentação completa do comando
é mostrada em uma nova janela de seu navegador.
4D procura a documentação do comando online (no website de 4D Doc Center) ou localmente, dependendo dos
parâmetros definidos nas Preferências da aplicação (ver Localização da documentação).
Comentar/Não comentar
Os comentarios são linhas de instruções inativas. Estas linhas não são interpretadas pelo programa (4D não aplica
nenhum estilo específico dentro dos comentários) e não são executados quando o método é chamado.
Para criar um comentario, só é necessário inserir o caracteres "//" ao início da linha.
O comprimento dos comentários está limitado ao tamanho máximo de uma linha, 32.000 caracteres.
O comando Comentar/Não comentar é utilizado para marcar um grupo de linhas de código selecionadas como
comentários ou caso contrário para suprimir o caractere comentário de uma seleção.
Para usar esse comando, selecione o código a marcar como comentário e logo selecione o comando Comentar/Não
comentar:
- 483 -
-->
Quando a seleção contém somente código ativo, é aplicado o comando Comentar. Quando a seleção inclui código
ativo e linhas de comentário, é adicionado um par de caracteres de comentário adicional (//) ; desta forma, conservam
seu status inicial de comentário se a linha for “não comentada” posteriormente. Quando a seleção contém somente
linhas comentadas, o comando Não comentar é aplicado.
Nota: O comando Comentar/Não comentar só funciona com linhas inteiras, não é possível utilizar para comentar uma
parte de uma linha.
Uso de sequências de escape
O editor de métodos lhe permite utilizar sequências de escape (também chamadas caracteres de escape). Uma
sequência de escape é uma sequência de caracteres que permite substituir um caractere “especial”.
A sequência começa pelo caractere barra invertida \, seguido de um caractere. Por exemplo, \t é uma sequência de
escape para o caractere Tab. As sequências de escape facilitam a entrada de caracteres especiais: o exemplo
anterior (\t) substitui a entrada Character(Tab).
Em 4D, é possível utilizar as seguintes sequências de escape:
Sequência de escape Caractere substituído
\n
\t
\r
\\
\"
LF (Retornar linha)
HT (Tab)
CR ((Retorno de carro)
\ (Barra invertida)
" (Aspas)
Nota: É possível utilizar indiferentemente caracteres em maiúsculas ou minúsculas nas sequências de escape.
No exemplo a seguir, o caractere Retorno de carro (sequência de escape \r) é inserido em uma linha de instrução
para obter a caixa de diálogo que é exibida a seguir:
ALERT("A operação foi exitosa.\rPode se desconectar.")
Atenção: O caractere \ (barra invertida) é utilizado como separador dos endereços de acesso sob Windows. Em geral,
4D interpretará corretamente os caminhos de acesso Windows substituindo a barra invertida simples \ por uma barra
invertida dupla \\. Por exemplo, C:\Pasta será convertido em C:\\Pasta.
Entretanto, se você escrever “C:\MeusDocumentos\Novo”, 4D mostrará “C:\\MeusDocumentos\Novo”. Neste caso, a
segunda barra invertida \ é interpretada incorretamente como \N (sequência de escape existente). Portanto você deve
introduzir uma barra invertida dupla \\ quando quiser ter uma barra invertida em frente a um caractere utilizado em uma
das sequências de escape reconhecidas por 4D.
- 484 -
Facilitar a leitura do código
Várias funções no editor de métodos facilitam a leitura do código e a navegação entre as linhas de instrução.
Expandir/Contrair
O código 4D localizado no interior de loops e condições pode ser expandido ou contraído, para facilitar a leitura de
métodos.
Código expandido:
Código contraído:
Se colocar o cursor sobre o botão de expandir [...], aparece uma mensagem de ajuda, que mostra as primeiras linhas
do código oculto.
Uma parte do código contraído pode ser selecionado, copiado, colado ou eliminado. Todas as linhas incluídas nessa
parte serão copiadas, coladas ou excluídas, respectivamente. Ao colar uma parte do código, esta parte será expandida
automaticamente.
Há várias maneiras de expandir e contrair o código:
Clique nos ícones expandir/contrair ([+] e [-] em Windows) ou no botão de abertura [...]
Utilize os comandos do submenu Método>Contrair/Expandir:
Contrair a seleção / Expandir a seleção: contrai ou expande todas as estruturas de código na seleção de
texto.
Contrair o nível atual / Expandir o nível atual: contrai ou expande a estrutura do código no nível onde se
encontre o cursor. Estes comandos também estão disponíveis no menu contextual do editor.
Contrair tudo / Expandir tudo: contrai ou expande todos os loops e as condições de um método. Esses
comandos também estão disponíveis na barra de ferramentas do editor:
.
Inicio de bloco e fim de bloco
Dois comandos facilitam a navegação dentro das estruturas de código (por exemplo, If...Else... End if):
Início de bloco: coloca o cursor no início da estrutura atual, logo antes da palavra chave inicial.
Fim de bloco: coloca o cursor no final da estrutura atual, logo depois da palavra chave final.
Estes comandos estão localizados no menu Método, além do menu contextual. Você também pode utilizar os seguintes
atalhos:
Windows: Ctrl + flecha para cima ou Ctrl + Flecha para baixo,
Mac OS: Comando + flecha para cima ou Comando + para baixo.
Usar marcas
4D permite-lhe associar marcas com algumas linhas em seus métodos. Assim, você pode navegar rapidamente no
código de uma marca para outra, usando os comandos específicos.
A marca se move com sua linha original se linhas adicionais são inseridas no método. As marcas são salvas com os
métodos.
As marcas são manejadas usando o sub-menu Marcas do menu método:
- 485 -
Marcar/Desmarcar associa uma marca com a linha atual (onde se encontra o cursor) se não tiver uma marca
atual ou eliminar marcaexistente. Esta função também está disponível utilizando o comando Marcar/Desmarcar
do menu contextual do editor ou usando os atalhos de teclado Ctrl+F3 (Windows) ou Comando+F3 (Mac OS).
Remover todas: elimina todos as marcas da janela do primeiro plano.
Ir à próxima / Ir à anterior: permite navegar entre as marcas na janela. A seleção de um desses comandos
coloca o cursor no primeiro caractere da linha associada a marca. Também pode utilizar os atalhos de teclado F3
(ir ao seguinte) ou Shift+F3 (ir ao anterior).
Nota: pode utilizar marcas como marcadores das linhas que contém um elemento encontrado por uma busca. Neste
caso, 4D adiciona automaticamente os marcadores. Para obter mais informação, consulte Procurar e substituir nos
métodos.
- 486 -
Criar e utilizar macros
É possível utilizar os comandos macros em seus métodos, o que lhe economiza muito tempo durante a entrada de
métodos.
O que é uma macro?
Um comando macro é uma parte de código 4D acessível permanentemente que pode ser inserida em qualquer parte
de seus métodos, sem importar o tipo de banco de dados aberto. Os macros comandos podem conter qualquer tipo de
texto, comandos e constantes 4D, assim como etiquetas especiais as quais são substituídas no momento da inserção
da macro pelos valores derivados do contexto do método. Por exemplo, um macro comando pode conter a etiqueta
<nome_método/>; no momento da inserção do macro, esta etiqueta será substituída pelo nome do método de projeto
atual.
Os comandos macros são salvos em um ou mais arquivos em formato XML (texto). Podem ser colocados em uma lista
do ; também podem ser chamados com a ajuda do menu contextual ou utilizando a função de autocompletar.
Os comandos macros de 4D são escritos em formato XML. É possível utilizar o arquivo de macro comandos como está
ou modificá-lo.
Localização de macros
4D carrega as macros de uma pasta chamada “Macros v2.” As macros devem estar em forma de um ou vários
arquivos XML localizados nesta pasta.
A pasta “Macros v2” pode estar localizada:
Na pasta 4D ativa da máquina. As macros depois são compartilhadas por todos os bancos.
Nota A localização da pasta ativa 4D varia em função do sistema operacional. Para maiores informações,
consulte a descrição do comando Get 4D folder no Manual de linguagem 4D.
Junto ao arquivo de estrutura do banco. As macros são carregadas somente para esta estrutura.
Para os componentes: na pasta Components do banco. As macros só são carregadas se o componente estiver
instalado.
Estas três localizações podem ser utilizadas simultaneamente: é possível instalar uma pasta “Macros v2” em cada
localização. As macros serão carregadas na seguinte ordem: pasta 4D, arquivo de estrutura, componente 1...
componente X:
Macros padrões
4D oferece um conjunto de macros padrões que correspondem particularmente a lista de palavras chaves nas versões
anteriores de 4D. Estas macros são incluídas no arquivo “Macros.xml”, localizado na pasta “Macros v2” craida na pasta
4D ativa da máquina durante a primeira inicialização de 4D.
É possível modificar este arquivo ou o conteúdo da pasta posteriormente (ver o parágrafo a seguir). No caso em que se
apresentem problemas com este arquivo, você pode exclui-lo e 4D o criará novamente no próximo lançamento.
Adicionar macros personalizadas
É possível adicionar macros personalizadas ao arquivo “Macros.xml” utilizando um editor de texto padrão ou por
programação. Também é possível adicionar arquivos XML de macros personalizadas nesta pasta.
Em modo local, o arquivo de macros pode ser aberto enquanto você utiliza 4D. A lista de comandos macro disponíveis
é atualizada em cada evento de ativação 4D.
Por exemplo, é possível trazer o editor de texto ao primeiro plano, modificar o arquivo de macros, logo regressar ao
métodos: a nova macro está disponível no editor de métodos.
As macros vazias ou equivocadas não são exibidas.
Verificar a sintaxe de macros personalizadas
- 487 -
Os arquivo de comandos macro de 4D devem cumprir com a norma XML. Isto significa particularmente que as linhas de
declaração XML <?xml version="1.0" ...?> e de declaração de documento < !DOCTYPE macros SYSTEM
"http://www.4d.com/dtd/v11/macros.dtd"> são obrigatórias ao começo de um arquivo de macro para que seja
carregado.
São suportados os diferentes tipos de codificação XML. Entretanto, é recomendável utilizar a codificação compatível
Mac/PC (UTF-8). 4D oferece um DTD que pode ser utilizado para validar os arquivos de macros. Este arquivo é
encontrado na seguinte localização:
Windows: 4D Developer/Resources/DTD/macros.dtd
Mac OS: 4D Developer.app:Contents:Resources:DTD:macros.dtd
Se um arquivo de macros não contém as linhas de declaração ou não pode ser validado, não é carregado.
Sintaxe das macros 4D
Os comandos macros 4D são construídos com a ajuda de etiquetas personalizadas XML chamadas “elementos”.
Algumas etiquetas indicam o início e o final da definição (etiquetas duplas do tipo <tag> </tag>), outras são substituídas
pelos valores do contexto de inserção (<tag/>).
Conforme as especificações XML, algumas etiquetas de elementos podem incluir atributos. Ao menos que você indique
o contrário, estes atributos são opcionais e se utiliza um valor padrão quando são omitidos. A sintaxe dos elementos
com atributos é a seguinte:
etiquetas duplas: <etiqueta atributo="valor"> </macro>
etiquetas simples: <etiqueta atributo="valor"/>
Se o elemento aceita vários atributos, é possível agrupá-los na mesma linha de comando, separados por um espaço:
<etiqueta atributo1="valor" atributo2="valor" atributo3="valor"... >
Esta é a lista de etiquetas e seu modo de utilização:
- 488 -
Etiquetas de
elementos
<macros>
</macros>
<macro>
</macro>
Descrição
Início e fim do arquivo macro (etiqueta obrigatória).
Início e fim da definição de uma macro e seus atributos.
Atributos:
- nome ** da macro tal como aparece nos menus e nas listas do editor de métodos (atributo
obrigatório).
- type_ahead_text: cadeia de caracteres ** a ser introduzida para chamar a macro utilizando a
função de digitação preditiva*.
- in_menu: booleano que indica se a macro pode ser chamada utilizando o menu contextual*.
Valores = “true” (padrão) ou “false”.
- type_ahead: booleano que indica se a macro pode ser chamada utilizando a função de
autocompletar*. Valores = “true” (padrão) ou “false”.
- method_event: utilizado para disparar a chamada automática da macro em função da fase atual
de manipulação de cada método (criação, fechamento, etc.). Valores = “on_load”: a macro é
disparada ao abrir cada método. “on_save”: a macro é disparada ao salvar cada método,
“on_close”: a macro é disparada ao fecha cada método. "on_save" e "on_close" podem ser
utilizados em conjunto, em outras palavras, ambos os eventos são gerados caso se feche um
método modificado. Por outro lado, “on_create” e “on_load” nunca são gerados de maneira
consecutiva. Este atributo pode ser utilizado, por exemplo, para pré-formatar os métodos no
momento de sua criação (os comentários na área de cabeçalho) ou gravar a informação tal
como a data e hora no momento de fechá-los.
- version: permite ativar o novo modo de suporte de seleções de texto para a macro (ver “Sobre
a etiqueta <method>”). Para ativar este novo modo, entre o valor "2". Se omitir este atributo ou
entra versão="1", se conserva o modo anterior.
- in_toolbar: Booleano que indica se a macro deve ser apresentada no menu do botão Macro da
barra de ferramentas. Valores= "true" (por padrão) ou "false".
Etiqueta substituída pelo texto selecionado no momento da chamada à macro. A seleção pode
<selection/>
estar vazia
Início e fim do código que deve ser inserido no método. Um retorno de carro será adicionado
<text> </text>
antes e depois do código.
Início e fim do nome do método de projeto e de seu parâmetro (opcional). O método é executado
<method>
quando a macro é chamada. Pode passar um parâmetro no formato ("param1;param2;..."). Este
</method>
parâmetro será recebido no método utilizando as variáveis $1, $2, etc.. Para informação
adicional sobre esta etiqueta, consulte a seção “Sobre a etiqueta <method>”.
<caret/>
Localização do ponto de inserção no código depois de inserida a macro.
<user_4D/>
Etiqueta substituída pelo nome do usuário 4D atual.
<user_os/>
Etiqueta substituída pelo nome do usuário do sistema atual..
<method_name/> Etiqueta substituída pelo nome do método de projeto atual.
<method_path/> Etiqueta substituída pela via de acesso completa do método projeto atual.
<date/>
Etiqueta substituída pela data atual.
Atributo:
- format: formato 4D utilizado para mostrar a data. Se não existe um formato definido, o formato
padrão é utilizado. Valores = número de formato 4D (0 a 8).
<time/>
Etiqueta substituída pela hora atual.
Atributo:
- format: formato 4D utilizado para mostrar a hora. Se não existe um formato definido, é utilizado
o formato padrão. Valores = número de formato 4D (0 a 6).
<clipboard/>
Etiqueta substituída pelo conteúdo da área de transferência
Atributo:
- index: Área de transferência a ser colada. Valores = número de área de transferência (0 a 9).
*As macros podem ser chamados utilizando o menu contextual do editor de métodos ou utilizando a função de
autocompletar (ver o parágrafo a seguir).
** Se você quer manter-se nas especificações da linguagem XML, não deve utilizar caracteres externos (caracteres
acentuados, aspas, etc.).
Este é um exemplo de definição de macro:
- 489 -
Conteúdo da macro
Comentários
<?xml version=”1.0”...?>
<!DOCTYPE macros
SYSTEM>
<macros>
<macro
name="RecordLoop">
<text>
For($i;1;Records in
selection(<Selection/>))
SAVE
RECORD(<Selection/>)
NEXT
RECORD(<Selection/>)
End for
</text>
</macro>
</macros>
Declaração XML
Declaração de documento
Início de arquivo XML de macros
Início da definição e nome da macro
Início do código da macro
A etiqueta <Selection/> será substituída pelo código selecionado no método 4D no
momento da inserção da macro (por exemplo, um nome de tabela)
Fim do código da macro
Fim da definição da macro
Fim do arquivo XML de macros
Sobre a etiqueta <method>
A etiqueta <method> permite gerar e utilizar os comandos macros que executam os métodos de projeto de 4D. Este
princípio permite aos desenvolvedores criar funções sofisticadas que podem ser distribuídas via os comandos macros
associados aos componentes. Por exemplo, a macro a seguir provocará a execução do método MeuMétodo com o
nome do método atual como parâmetro:
<method>MeuMetodo("<method_name/>")</method>
O código do método chamado é executado em um novo processo. Este processo é terminado uma vez que o método é
executado.
Nota: O processo de estrutura permanece congelado até que se termine a execução do método chamado. Você deve
se assegurar que a execução seja rápida e de que não haja risco de bloquear a aplicação. Se isto ocorrer, utilize a
combinação Ctrl+F8 (Windows) ou Comando+F8 (Mac OS) para terminar o processo.
Chamar macros
Por padrão, as macros podem ser chamadas utilizando o menu contextual ou a barra de ferramentas do editor de
métodos, a função de digitação preditiva, ou uma lista específica ao final da janela do editor de métodos.
Note que é possível restringir para cada macro a possibilidade de chamada utilizando o menu contextual e/ou a função
de digitação preditiva.
Menu contextual e barra de ferramentas
Por padrão, todas as macros podem ser chamadas através do menu contextual do editor de métodos (utilizando o
comando hierárquico Inserir macro) ou o botão “Macros” da barra de ferramentas.
O atributo in_menu da etiqueta <macro> é utilizado para definir se a macro aparecerá ou não neste menu.
No menu contextual, os macros são exibidos na ordem do arquivo “Macros.xml” e os arquivos XML adicionais. Portanto
é possível alterar a ordem modificando estes arquivos.
Autocompletar
Por padrão, todas as macros são acessível utilizando a função de autocompletar (consulte Escrever um método). O
atributo type_ahead da etiqueta <macro> permite excluir uma macro deste tipo de operação.
Nota: Se a macro contém a etiqueta <selection/>, não aparecerá na janela de autocompletar.
Lista do editor de métodos
É possível mostrar suas macros em uma lista do editor de métodos (consulte [#title id="3256"/]). Simplesmente faça um
duplo clique no nome de uma macro na lista para chamá-la. Não é possível excluir uma macro específica desta lista.
Notas de compatibilidade
- 490 -
Notas de compatibilidade
O suporte das macro pode mudar de uma versão de 4D para outra. Para manter a compatibilidade entre as diferentes
versões, preservando sua personalização, 4D não elimina as versões anteriores. Se deseja usar as funcionalidades
mais recentes disponíveis, deve realizar adaptações.
Variáveis de Seleção de texto para métodos
Nas versões de 4D anteriores a v11, o programa mantinha automaticamente um conjunto de variáveis processo para a
manipulação de texto nos métodos ao utilizar a etiqueta <method>: as variáveis de entrada (_textSel, _blobSel,
_selLen, _textMethod, _blobMethod, _methodLen) para recuperar texto e variáveis de saída (_textReplace,
_blobReplace, _action) para inserir texto. Por motivos de compatibilidade, este mecanismo ainda é suportado por 4D,
mas desde a versão 11 se tornou obsoleto pelas seguintes razões:
o uso de variáveis BLOB para a gestão de textos de tamanho superior a 32.000 caracteres já não é necessário,
a gestão de variáveis é incompatível com a arquitetura v11 dos componentes na qual os espaços de execução
das variáveis são particionados. Um componente versão 11 não pode acessar os textos dos métodos do banco
local e vice-versa utilizando as variáveis pré-definidas.
Portanto, é recomendável administras as seleções de texto através dos comandos GET MACRO PARAMETER e SET
MACRO PARAMETER. Estes comandos podem ser utilizados para superar a partição dos espaços de execução
banco local/componentes e autoriza a criação de componentes dedicados a gestão de macros. Para ativar este novo
modo para uma macro, você deve declarar o atributo Version com o valor 2 no elemento Macro. Neste caso, 4D não
administra mais as variáveis pré-definidas _textSel, _textReplace, etc. e são utilizados os comandos GET MACRO
PARAMETER e SET MACRO PARAMETER. Este atributo deve ser declarado desta forma:
<macro name="MyMacro" version="2">
--- Texto de la macro --</macro>
Se você não passar este atributo, o modo anterior é conservado.
Incompatibilidades relacionadas com a norma XML
A partir de 4D v11, as normas de sintaxe devem ser seguidas estritamentes para que os arquivos de macros respeitem
o padrão XML. Caso contrário, podem ser produzidas incompatibilidades no código das macros criadas com códigos
anteriores, evitando a carga dos arquivos XML. A seguir, você encontra as principais fontes de mau funcionamento.
Os comentarios de tipo “//meu comentário”, permitidos nos elementos <macro> nas versões anteriores de 4D, não
são compatíveis com a sintaxe XML. As linhas de comentários devem respeitar a forma padrão “<!—meu
comentário -->”.
Os símbolos <> utilizados particularmente para os nomes dos objetos interprocesso devem ser codificados. Por
exemplo, a variável <> params deve ser escrita como <>params.
A etiqueta de declaração inicial <macros> podia ser omitida nas versões anteriores de 4D. Agora é obrigatória,
caso contrário, o arquivo não será carregado.
Atualizar o arquivo Macros.xml
Na versão 12 de 4D, há novos comando de macro disponíveis para facilitar o uso dos comandos SQL. Como pode
personalizar o arquivo "Macros.xml", a instalação de uma nova versão de 4D não substitui automaticamente a versão
existente do arquivo. para usar os novos comando de macro SQL de 4D v12, é necessário:
apagar o arquivo "Macros.xml" na pasta "Macros v2" (se já não o tiver modificado), depois lançar 4D para criar o novo
arquivo de forma automática.
adicionar manualmente as novas macros no arquivo "Macros.xml" da pasta "Macros v2" (se já tiver personalizado o
conteúdo). O novo arquivo modelo de macros é encontrado na pasta da aplicação 4D: 4D\Resources\en.lproj ou
4D\Resources\ fr.lproj.
- 491 -
Procurar e substituir nos métodos
O editor de métodos tem funções de pesquisa e substituição que se aplicam a janela atual.
A área de pesquisa localizada na barra de ferramentas de cada janela de método permite efetuar pesquisa simples ou
chamar a caixa de diálogo de pesquisa (ver o parágrafo Janela do editor de métodos).
Os comandos Procurar/Substituir em métodos estão localizados no submenu Procurar do menu Edição de 4D:
Nota: os comandos de buscar encontrados acima do submenu Procurar não são específicos do editor de métodos,
mas podem ser usados para procurar um valor entre todos os métodos. Para maiores informações sobre este
comando, consulte Procurar e substituir no ambiente Desenho.
Procurar
A seleção do comando Procurar… do menu Edição provoca a visualização da seguinte caixa de diálogo:
A pesquisa definida nesta caixa de diálogo será efetuado no método localizado em primeiro plano.
A área “Buscar:”: permite introduzir a cadeia de caracteres a ser buscada. Esta área é um combo box que guarda
em memória as últimas 15 cadeias de caracteres buscadas ou substituídas durante a sessão. Se você selecionar
o texto antes de escolher o comando Buscar..., o texto selecionado aparecerá nesta área. Você pode então
utilizar o texto ou substituí-lo por outro.
A opção Palavra completa é utilizada para limitar a pesquisa às ocorrências exatas da palavra que você busca.
Quando esta opção está selecionada, a pesquisa da palavra “cliente” não encontrará “clientes” ou “meucliente”.
- 492 -
Por padrão, a opção não está selecionada, portanto, a pesquisa de “var” encontrará “minhaVar”, “variação”, etc.
Atenção, diferentemente da opção Nome completo da caixa de diálogo de pesquisa, a opção Palavra
completa não leva em condideração nomes de objetos. Por exemplo, com esta opção, a pesquisa de
“Minha” em um método encontrará a variável “Minha variável”. Este não é o caso de uma busca global
utilizando a opção Nome completo, onde o mesmo resultado não será encontrado no contexto do exemplo
anterior já que o nome completo (da variável encontrada previamente) é “Minha variável” e portanto não
corresponde exatamente a cadeia introduzida (“Minha”).
A opção Maiúscula/Minúscula permite levar em consideração se os caracteres estão em minúsculas ou
maiúsculas na área de pesquisa. Por exemplo, a pesquisa de “MinhaVar” não encontrará “minhaVar”.
Os botões de opção Anterior/Próximo permitem definir o sentido da pesquisa: até o final do método atual,
começando desde a localização inicial do cursor.
O botão Ok permite iniciar a pesquisa. 4D começa a pesquisa desde o ponto de inserção atual e continua até o final do
método. O primeiro elemento correspondente aos critérios definidos é selecionado na janela do editor de métodos.
Logo é possível continuar a pesquisa utilizando os comandos Buscar próximo e Buscar anterior do menu Edição.
Procurar mesmo
O comando Procurar mesmo permite buscar uma cadeia de caracteres idêntica a selecionada. Este comando só está
ativo se você selecionou pelo menos um caractere no editor de métodos.
A pesquisa efetuada é do tipo “Procurar próximo” no método atual.
Marcar todos
O comando Marcar todos está ativo quando uma busca foi definida na caixa de diálogo de busca ou na de buscar e
substituir. Quando seleciona este comando, 4D põe uma marca em cada linha que contenha um elemento
correspondente ao criterio de busca "atual". Isso facilita visualizar os resultados da pesquisa.
Para mais informação sobre marcas, consulte "Utilizar marcas" Escrever um método.
Substituir
O comando Substituir exibe a seguinte caixa de diálogo:
A área “Buscar:” é utilizada para definir a cadeia de caracteres ou a expressão a ser buscada. Como na caixa de
diálogo Pesquisar, esta área é um combo box que guarda as últimas 15 cadeias de caracteres buscadas. Se
você selecionar o texto antes de escolher o comando Substituir, o texto selecionado aparecerá nesta área.
A área “Substituir por”: permite definir a cadeia de caracteres de substituição. Esta área também é um combo box
que armazena as 15 últimas cadeias de caracteres buscadas ou substituídas.
A opção Palavra completa permite buscar/substituir somente as cadeias de caracteres que correspondam
exatamente à cadeia introduzida. Neste caso, por exemplo, a pesquisa de “cliente” não encontrará as cadeias
“clientes” ou “meucliente”, etc.
A opção Maiúscula/Minúscula permite buscar/substituir somente cadeias de caracteres escritas como se
escreveu a cadeia de caracteres introduzida. Por exemplo, a pesquisa de “MinhaVar” não encontrará “minhaVar”.
Assim como na caixa de diálogo Buscar, os botões de opção Anterior e Próximo permitem definir o sentido da
pesquisa: para o inídio ou final do método atual, começando desde a localização incial do cursor.
O botão Substituir permite iniciar a pesquisa e substituir a primeira ocorrência encontrada. 4D começa a pesquisa
desde o ponto de inserção atual e continua até o final do método. Logo é possível continuar buscando/substituindo
utilizando os comandos Substituir próximo e Substituir anterior do menu Edição.
- 493 -
O botão Todos permite substituir diretamente todas as ocorrências correspondentes ao critério de pesquisa no método
aberto
Ir à definição
O comando Ir á definição permite abrir d
Download