Saltar para o conteúdo principal
Versão: Próximo

Editor de método

4D tem um poderoso editor de código embutido que oferece um amplo conjunto de funcionalidades para edição de código altamente produtiva, como preenchimento inteligente de código, navegação de código, depuração, busca, e mais.

O editor de código funciona de forma semelhante a um editor de texto. Escrever um método ou uma classe é geralmente uma combinação de digitar texto, selecionar componentes e arrastar itens do Explorador ou de outras janelas. Você também pode usar várias funções de preenchimento automático para criar métodos mais rapidamente.

Você pode rolar através do conteúdo de métodos, classes e funções, que podem incluir até 32.000 linhas de código ou 2 GB de texto.

O Editor de código 4D fornece verificação básica de erros de sintaxe. É efetuada uma verificação de erros adicional quando o código é executado. Para obter mais informações sobre como lidar com erros, consulte Depuração.

nota

If you are used to coding with VS Code, you can also use this editor with 4D code after installing the 4D-Analyzer extension.

Interface

Barra de ferramentas

Cada janela do Editor de Código possui uma barra de ferramentas que fornece acesso instantâneo a funções básicas relacionadas à execução e edição de código.

ElementoÍconeDescrição
Execução do métodoexecute-methodAo trabalhar com métodos, cada janela do Code Editor tem um botão que pode ser usado para executar o método atual. Usando o menu associado a este botão, você pode escolher o tipo de execução:
  • Executar novo processo: Cria um processo e executa o método no modo padrão neste processo.
  • Executar e depurar novo processo: Cria um novo processo e exibe o método na janela do Depurador para execução passo a passo neste processo.
  • Executar no processo do Aplicativo: Executa o método no modo padrão no contexto do processo do Aplicativo (ou seja, a janela de exibição do registro).
  • Executar e depurar no processo do Aplicativo: Exibe o método na janela do Depurador para execução passo a passo no contexto do processo do Aplicativo (ou seja, a janela de exibição do registro).
Para obter mais informações sobre a execução de métodos, consulte Chamando Métodos do Projeto.
Procurar no métodosearch-iconExibe a área de *Pesquisa.
Macrosmacros-buttonInsere uma macro na seleção. Clique na seta pendente para visualizar uma lista de macros disponíveis. Para obter mais informações sobre como criar e instanciar macros, consulte Macros.
Expandir tudo / Recolher tudoexpand-collapse-buttonEstes botões permitem expandir ou recolher todas as estruturas de fluxo de controle do código.
Informações sobre o métodomethod-information-iconExibe a caixa de diálogo de Propriedades do Método (apenas métodos de projeto).
Últimos valores da área de transferêncialast-clipboard-values-iconExibe os últimos valores armazenados na área de transferência.
Pranchetasclipboard iconsNove pranchetas disponíveis no editor de código. Você pode usar estes clipboards clicando neles diretamente ou usando atalhos de teclado. Você pode usar uma opção de Preferências para ocultá-las.
Menu de navegação suspensocode-navigation-iconsPermite navegar dentro de métodos e classes com conteúdo marcado automaticamente ou marcadores declarados manualmente. Ver abaixo

Área de edição

É aqui que escreve e edita o seu código. O editor recua automaticamente o texto do código e colore os diferentes elementos de sintaxe para uma estrutura de código clara.

É possível personalizar a apresentação da área de edição. Qualquer personalização é automaticamente passada para todas as janelas do editor de código:

OpçãoDescriçãoDefinido em...
fuente y tamaño de la fuenteDefine o tipo de letra e o tamanho dos caracteres a utilizar na área de ediçãoPreferências > Métodos ou Método > Visualização > Fonte Maior ou Fonte Menor
estilo e cor dos elementos de sintaxeatribui uma cor e/ou estilo específicos a cada tipo de elemento da linguagem 4D. Você também pode alterar as diferentes cores usadas na interface da área de edição (destaque, fundo, etc.).Right-click on a language element (variable, keyword, etc.) Right-click on a language element (variable, keyword, etc.) > Style submenu. > Submenú Estilo. Ou Preferences > Methods
espaçosVocê pode exibir os espaços entre as palavras usando pontos (.) em vez de espaços em branco. Esta opção se aplica a todos os elementos de código (nomes de comandos, variáveis, comentários, etc.).Método > Ver > Espaços em branco
temasPode selecionar o tema Escuro ou Claro, ou definir um tema personalizadoPreferências > Métodos
largura das indentações de códigoDefinir a largura das indentações do códigoPreferências > Métodos

Mudar barras

Barras coloridas mostram instantaneamente onde as linhas de código foram modificadas desde que o método foi aberto:

As barras de alteração mudam de cor para indicar se as modificações foram salvas ou não:

  • amarelo: a linha foi modificada e o método ainda não foi guardado.
  • verde: A linha foi modificada e o método foi guardado.

Área listas

A área de lista permite exibir uma ou mais listas de elementos necessários para escrever métodos e classes (comandos, constantes, formulários, etc.). Você pode escolher o número e o conteúdo das listas exibidas na janela.

Por padrão, o editor de código apresenta quatro listas. Você pode ocultar ou mostrar todas as listas clicando no ícone no canto inferior direito da janela.

Você pode aumentar ou reduzir a largura relativa de cada área da lista arrastando uma de suas divisões. Também é possível ajustar o tamanho da área de lista em relação à área de edição arrastando a linha divisória entre elas.

  • Ao clicar duas vezes em um item em uma lista, ele será inserido na área de edição, na posição do cursor.
  • Para modificar o conteúdo de uma lista, clique na área do título da lista em questão: um menu pop-up será exibido, permitindo que você escolha o tipo de item a ser exibido.

  • Para adicionar ou remover uma lista, clique na área do título de uma das listas e escolha o comando correspondente no menu suspenso. O comando Remover esta lista está desativado quando você clica na última lista. Se você deseja ocultar todas as listas, você deve clicar no botão mostrar ou ocultar listas no canto inferior direito da janela ou ocultá-las por padrão nas Preferências.

  • Pode ocultar as listas em todas as janelas das seguintes formas:

    • Selecione a opção Exibir > Listas no menu Método (uma marca de seleção indica se as listas estão sendo exibidas)
    • Desmarque a opção Preferências > Métodos > Opções > Mostrar Listas. Para que as modificações feitas na caixa de diálogo Preferências sejam consideradas, todos os métodos, classes ou funções abertos devem ser fechados e reabertos.

Listas de itens disponíveis

Você pode exibir as seguintes listas de itens na área de listas da janela do Code Editor:

  • Todas as tabelas e campos: Nomes de tabelas e campos do banco de dados em forma de lista hierárquica. Quando você inserir um nome de campo no método, clicando duas vezes no seu nome, A 4D inseriu-a respeitando a sintaxe e adiciona o nome da tabela ou subtabela, como o caso pode ser.
  • Tabela (submenú): Nomes dos campos da tabela selecionada usando o submenu.
  • Tabela atual: Nomes dos campos da tabela atual (disponível em gatilhos, métodos de formulário e métodos de objeto).
  • Formulários projeto: Nomes de formulários projeto de banco de dados. Quando você clica duas vezes no nome de um projeto de formulário, 4D insere o mesmo respeitando a sintaxe: o nome do formulário é inserido entre as cotações.
  • Formulários de tabela: Nomes de tabelas do banco de dados e nomes de formulários em forma de lista hierárquica. Quando você inserir o nome de um formulário em um método, clicando duas vezes em seu nome, 4D insere ele respeitando a sintaxe: o nome do formulário é inserido entre aspas e é precedido pelo nome da tabela e um ponto e vírgula. Por exemplo: [Table]; "Form".
  • Métodos: nomes de métodos projeto do banco de dados.
  • Todas as pastas: Nomes das pastas de objetos e subpastas definidas no banco de dados exibidas na forma de uma lista hierárquica. As pastas podem ser utilizadas para organizar objetos de uma forma personalizada. São geridos a partir da página inicial do explorador.
  • Pastas (submenú): Conteúdo da pasta selecionada usando o submenu.
  • Macros: Nomes de macros definidos para o banco de dados (ver Criando e utilizando macros).
  • Comandos: comandos de idioma 4D em ordem alfabética.
  • Comandos por temas: comandos da linguagem 4D classificados por tema em forma de lista hierárquica.
  • Barras de menu: Nomes e números das barras de menu criadas com o editor de barras de menu 4D.
  • Constantes: constantes do 4D e de quaisquer plug-ins, classificadas por tema em forma de lista hierárquica.
  • Listas: Nomes de listas.
  • Todos os comandos de plug-in: Comandos para todos os plug-ins instalados no banco de dados (se houver), classificados por tema em forma de lista hierárquica.
  • Palavras SQL: conjunto de palavras-chave reconhecidas pelo analisador de sintaxe 4D SQL. Essa lista inclui comandos (por exemplo, SELECT), cláusulas (por exemplo, WHERE), bem como funções (ABS).
  • Funções SQL: funções SQL 4D.

Nota: Com exceção do elemento Macros, todas as listas estão por ordem alfabética.

Guardar como modelo

Você pode salvar as listas definidas na janela do Editor de Código na forma de um modelo. Depois que o modelo é salvo, os parâmetros definidos nele serão usados para cada nova janela do Editor de Código que é aberta.

Os seguintes parâmetros são armazenados no modelo:

  • Tamanho relativo das áreas de edição e de lista
  • Número de listas
  • Localização e conteúdo de cada lista
  • Largura relativa de cada lista

Para salvar uma janela do Editor de Código como um modelo, escolha Método > Salvar como Modelo. O modelo é guardado imediatamente (não aparece nenhuma caixa de diálogo). Está armazenado nas Preferências do aplicativo 4D. Se já existir um modelo anterior, ele será substituído.

Área de pontos de paragem

Esta área, localizada à esquerda da área de edição, permite que você exiba os números de linha e insira pontos de interrupção diretamente ao lado de instruções específicas. Os pontos de interrupção são úteis durante a fase de depuração de sua programação. Eles interrompem a execução do seu código em locais específicos e exibem o depurador.

Para mais informações sobre pontos de interrupção, consulte a seção Depuração.

Você pode exibir ou ocultar os números de linhas na área de pontos de quebra para cada janela do Editor de Código.

  • Para habilitar ou desabilitar a exibição dos números de linha por padrão, escolha Preferências > Métodos > Mostrar números de linha.
  • Para modificar essa exibição separadamente para cada janela do Editor de Código, escolha Método > Visualizar > Números de Linha.

Exibir as linhas de números torna mais fácil encontrar o seu caminho na janela. O comando Método > Ir al número de linha... também permite aproveitar essa exibição.

Este tipo de busca é útil quando usada em conjunto com o compilador, que sinaliza erros de tempo de execução pelo número da linha em que eles ocorrem.

Barra de estado

A barra de status localizada na parte inferior direita do editor da janela exibe a posição do cursor em todos os momentos:

  • Ln: Número da linha
  • C: número de coluna, ou seja, o nível na hierarquia das estruturas de programação. O primeiro nível é 0. O número da coluna é útil para debugar, pois essa informação pode ser fornecida pelo interpretador em caso de erro no código.
  • Ch: Localização do caractere na linha.
  • : Ocultar/exibir listas.

Quando você define o cursor em um comando, função ou parâmetros, a barra de status exibe a sintaxe do comando. Se você escrever ou selecionar um parâmetro, a área mostra o parâmetro atual em bold:

O menu suspenso de navegação ajuda você a organizar seu código e navegar com mais facilidade dentro de suas classes e métodos:

dropdown-list

Algumas tags são adicionadas automaticamente, e você pode complementar a lista suspensa usando marcadores.

Clique em um item da lista suspensa para acessar sua primeira linha no código. Você também pode navegar com as teclas de seta e pressionar Enter.

Marcação automática

Construtores, declarações de métodos, funções e atributos computados são automaticamente marcados e adicionados à lista suspensa.

Quando não existe uma etiqueta na classe/método, a ferramenta apresenta "Sem etiqueta".

Os seguintes itens são adicionados automaticamente:

ÍconeElemento
no-tag-iconSem etiqueta
constructor-iconClass constructor ou declaração de método
computed-attribute-iconAtributo calculado (get, set, orderBy e query)
function-iconNome da função de classe

Marcação manual

Ao adicionar marcadores no seu código, pode adicionar as seguintes etiquetas ao menu pendente:

ÍconeElemento
mark-tag-iconMARK: etiqueta
todo-tag-iconTODO: etiqueta
fixme-iconFIXME: etiqueta

Declara-os acrescentando comentários como:

// FIXME: Correção dos seguintes itens

As declarações não diferenciam maiúsculas de minúsculas; escrever fixme: tem o mesmo efeito.

A adição de um hífen após a tag MARK: desenha uma linha de separação no editor de código e no menu suspenso. Por isso, estou a escrever isto:

mark-hyphen-image

Os resultados são os seguintes:

mark-hyphen-image

Todos os marcadores localizados dentro de funções são recuados na lista suspensa, exceto as tags MARK: localizadas no final das funções e não seguidas de instruções. Estes aparecerão no primeiro nível.

Ordem de visualização

As etiquetas são exibidas em sua ordem de aparecimento dentro do método/classe.

Para exibir as tags de um método ou classe em ordem alfabética, faça uma das seguintes:

  • **Clique direito na ferramenta suspensa
  • mantenha pressionado Cmd no macOS ou Alt no Windows e clique na ferramenta suspensa

As etiquetas em funções movem-se com os seus itens pais.

Atalhos

Várias funcionalidades do editor de código do 4D estão disponíveis através de atalhos de teclado padrão.

macOS

No macOS, use a tecla Command em vez da tecla Ctrl mencionada (Windows).

AtalhoAção
Selecção e navegação
Duplo cliqueSelecionar o nome de um elemento da linguagem
[Alt]+Clique duas vezesSelecionar um nome de elemento de língua contendo espaços (constante, método, etc.)
[Shift]+[seta para a direita]Criar e ampliar a seleção, personagem por caractere, para a direita ou Reduzir a seleção, personagem por caracter a partir da esquerda
[Shift]+[seta para a esquerda]Reduzir a seleção, caractere por caractere, da direita ou Criar e ampliar a seleção, caractere por caractere, para a esquerda
[Shift]+[seta para baixo]Criar e ampliar uma seleção, linha por linha, da parte superior à parte inferior
[Shift]+[seta para cima]Criar e ampliar uma seleção, linha por linha, de baixo para cima
[Ctrl]+[Shift]+[seta para a direita]Criar e ampliar a seleção, palavra a palavra, a partir da direita
[Ctrl]+[Shift]+[seta para a esquerda]Reduza a seleção, palavra por palavra, à direita, ou crie e amplie a seleção, palavra por palavra, à esquerda
[Ctrl]+[seta para a direita]Mover o ponto de inserção, palavra a palavra, da esquerda para a direita
[Ctrl]+[left arrow]Mover o ponto de inserção, palavra a palavra, da direita para a esquerda
[Alt]+[seta para baixo]Mover a(s) linha(s) onde se encontra o cursor para a parte inferior
[Alt]+[seta para cima]Mover a(s) linha(s) onde se encontra o cursor para o topo
[Home]Posicione o ponto de inserção no início da linha
[End]Colocar o ponto de inserção no fim da linha
[Ctrl]+[Home]Colocar o ponto de inserção no início do método
[Ctrl]+[End]Colocar o ponto de inserção no final do método
[Shift]+[Home]Selecione todos os caracteres da linha que estão à esquerda do cursor
[Shift]+[End]Selecione todos os caracteres da linha que estão à direita do cursor
[PgUp]Rolar o conteúdo do método, página por página, da parte inferior até a parte superior (não modificar o ponto de inserção)
[PgDn]Rolar o conteúdo do método, página por página, de cima para baixo (não modifica o ponto de inserção)
Introspecção
[Ctrl]+K ou [Alt]+clique duas vezesMesmo que o comando Ir para definição
[Ctrl] (Windows) or [Alt] (macOS)+hovering over a tokenSublinhar o token (elemento linguístico identificado). Clique no token sublinhado = igual ao comando [Goto definition] (#goto-definition)
Encontrar e substituir
[Ctrl]+FFind
[Ctrl]+GEncontrar o próximo
[Ctrl]+[Shift]+GProcurar Anterior
[Ctrl]+EEncontrar o mesmo próximo
[Ctrl]+[Shift]+EEncontrar o mesmo anterior
[Ctrl]+[Alt]+FSubstituir
[Ctrl]+[Alt]+GSubstituir próximo
[Ctrl]+[Alt]+[Shift]+GReemplazar anterior
Clipboards
[Shift]+clique ou [Alt]+clique no ícone da área de transferênciaCopiar texto selecionado para uma área de transferência
[Ctrl]+[Shift]+tecla numéricaCopiar texto selecionado numa área de transferência numérica
[Ctrl]+clique no ícone da área de transferênciaColar o conteúdo de uma área de transferência na localização do cursor
[Ctrl]+chave numéricaColar o conteúdo da área de transferência numérica na localização do cursor
tip

A maioria desses atalhos pode ser personalizada na caixa de diálogo [4D Preferences] (../Preferences/shortcuts.md).

Editar código

O 4D utiliza técnicas padrão de edição de texto para digitar e editar no Editor de código.

O Editor de código usa convenções de exibição (estilo, cor) para os elementos de sintaxe. Você pode personalizar estas convenções. Conforme você digita, ao validar sua entrada, o 4D avalia o texto da linha e aplica o formato de exibição apropriado. 4D também recua cada linha para seu nível adequado em relação à linha anterior quando você usa estruturas de programação (If, End if...).

Pode utilizar as teclas de setas para se deslocar rapidamente de uma linha para outra. Usar as teclas de seta para mover-se por várias linhas é mais rápido do que clicar, pois o editor atrasa a avaliação da linha em busca de erros.

No Windows, o editor de código inclui um Editor de Código de Entrada (IME) para facilitar a edição de código em sistemas japoneses ou chineses.

O Editor de Código inclui numerosos atalhos de navegação.

Uso de la barra invertida

O caractere de barra invertida (\) tem um suporte específico na linguagem 4D:

caution

O caractere de barra invertida (\) é usado como separador em nomes de caminho no Windows. Em geral, o 4D interpretará corretamente os nomes de caminho do Windows inseridos no Code Editor substituindo a barra invertida simples por uma barra invertida dupla. Por exemplo, C:\MyDocuments se tornará C:\\MyDocuments. No entanto, se escrever C:\MyDocuments\New, 4D mostrará C:\MyDocuments\New". Nesse caso, a segunda barra invertida é interpretada incorretamente como \N(uma [sequência de escape] existente(../Concepts/quick-tour.md#escape-sequences)). Você deve então digitar um duplo\` quando quiser inserir uma barra invertida antes de um caractere usado em uma das sequências de escape reconhecidas por 4D.

Arrastar e largar

Do explorer, você pode arrastar e soltar tabelas, campos, formulários, métodos de projeto, constantes ou comandos 4D. Quando você arrasta e solta um elemento, 4D sempre usa a sintaxe correta. Por exemplo, se você arrastar o nome do campo First Name da tabela [People], ele aparecerá no Code Editor como [People]First Name. Da mesma forma, se você arrastar o nome do formulário Input da tabela People, ele aparecerá no Code Editor como [People]; "Input".

Quando você insere um comando arrastando-o da página Comandos do Explorer, ele aparece com sua sintaxe (que consiste em todos os seus parâmetros) no Editor de código. Essa funcionalidade simplesmente lembra você dos parâmetros que o comando espera. Assim, você pode usar uma sintaxe mais adequada ao seu uso.

In the Code Editor, the drag-and-drop mechanism is activated as soon as a portion of text is selected. You can also drag-and-drop within a method, class, function or between two different ones. Por padrão, o mecanismo de arrastar e soltar move o texto selecionado. Para copiá-lo, mantenha pressionada a tecla Ctrl (Windows) ou a tecla Option (macOS) durante a operação.

Alternância entre letras maiúsculas e minúsculas

Você pode modificar automaticamente o caso dos caracteres selecionados usando os comandos em Métodos > Caixa ou o menu de contexto do editor:

  • Maiúsculas / Minúsculas: Muda os caracteres selecionados para maiúsculas ou minúsculas.
  • camelCase / CamelCase : Muda os caracteres selecionados para "camel case". Isso consiste em alterar a primeira letra de cada palavra do grupo para maiúscula. Este tipo de notação é frequentemente utilizado para as nomenclaturas de variáveis. hireDate e PurchaseDate são exemplos de duas variantes da notação camel case.

Quando você aplica um desses comandos a uma seleção de texto, os espaços e os caracteres "_" são removidos e a primeira letra de cada palavra se torna maiúscula.

Trocar expressão

A função Swap Expression pode ser usada para inverter os argumentos de uma expressão que atribui um valor. Por exemplo,

variable1:=variable2

torna-se

variable2:=variable1

Essa função é extremamente útil para reverter um conjunto de atribuições usadas para obter ou definir propriedades ou para corrigir erros de entrada. Para usar essa função, selecione a(s) linha(s) a ser(em) modificada(s) e, em seguida, escolha Method > Swap Expression ou use o menu de contexto da área. Dentro da seleção, apenas as linhas que atribuem um valor serão modificadas.

Pranchetas

Além da operação padrão de copiar e colar, o 4D oferece duas funções adicionais que permitem trabalhar com o conteúdo de diferentes áreas de transferência:

  • O programa armazena em memória as últimas 10 ações de "copiar" ou "recortar" que foram executadas no Editor de Código durante a sessão atual. Cada um dos diferentes conteúdos salvos desta forma pode ser reutilizado a qualquer momento. Para isso, use o comando Clipboard History do menu de contexto do Editor de código ou o botão "Last Clipboard values" da barra de ferramentas:

    São apresentadas as primeiras palavras dos itens copiados ou cortados. Selecione um item para inseri-lo no local atual do cursor.

  • Nove áreas de transferência numeradas adicionais estão disponíveis e podem ser empregadas diretamente usando os botões da barra de ferramentas do Editor de Código ou usando atalhos de teclado:

Linhas em movimento

Você pode mover a linha onde o cursor está diretamente, sem selecioná-la primeiro, usando os comandos Mover Linhas para Cima e Mover Linhas para Baixo no menu Método. Você também pode fazer isso usando Alt/Option + Seta para cima ou Seta para baixo [atalho de teclado] (#atalhos).

Funções de preenchimento automático

O editor de código fornece funções de preenchimento automático. 4D exibe automaticamente sugestões baseadas nos primeiros caracteres digitados.

No exemplo abaixo, digitar a string "cop" faz com que seja exibido um triângulo azul indicando que há várias sugestões disponíveis:

Quando os caracteres inseridos correspondem a uma única possibilidade, esse valor sugerido aparece em cinza (e é inserido se você pressionar a tecla Tab): --->

Se você marcou as opções **Inserir () e fechar } ) ] " na página Métodos das Preferências, o 4D também adicionará automaticamente () depois de um comando 4D, palavra-chave ou método de projeto que requer um ou mais argumentos obrigatórios (depois de aceitar uma sugestão ou conclusão): ->

O autocompletamento também funciona com estruturas de código (por exemplo, If...End if, For each...End for each): quando você insere a primeira parte da estrutura, o Code Editor sugere automaticamente a parte final:

Se houver várias sugestões disponíveis, 4D as exibe em uma lista pop-up quando você pressiona a tecla Tab:

A lista está por ordem alfabética. Escolha o valor clicando duas vezes nele ou role a lista usando as teclas de seta do teclado e, em seguida, pressione Enter, Carriage Return ou Tab para inserir o valor selecionado.

Por padrão, você também pode inserir um valor sugerido pressionando uma das seguintes teclas delimitadoras ( ; : = < [ { após selecionar um valor: o valor inserido é seguido pelo delimitador, pronto para a entrada de dados.

+ ( key -->

Você pode desativar o uso de delimitadores para inserir valores sugeridos em Preferences > Methods > Options.

Você pode pressionar a tecla Esc para fechar a lista pop-up ou pode continuar digitando enquanto ela estiver aberta. Os valores sugeridos na lista pop-up são atualizados como caracteres adicionais são digitados.

Se os caracteres digitados correspondem a diferentes tipos de objetos, a lista os exibe em seu estilo atual. Podem ser visualizados os seguintes tipos de objetos:

  • Comandos 4D
  • Comandos SQL
  • Métodos utilizador
  • Nomes de tabelas
  • Nomes de campos
  • Constantes
  • Variáveis declaradas no método
  • Nomes de propriedade de objeto
  • Comandos Plug-in
  • Palavras-chave 4D
  • Palavras-chave SQL
  • Macros (apresentadas entre < >)

Por motivos práticos, você pode desativar a exibição automática da lista de sugestões para constantes, variáveis (locais ou entre processos) e atributos de objetos, tabelas e/ou protótipos. Essas opções podem ser encontradas em Preferências > Métodos > Opções

Nomes de propriedade de objeto

O 4D exibe automaticamente sugestões sensíveis a maiúsculas e minúsculas de todos os nomes de propriedades de objetos válidos no código 4D quando você:

  • digite um ponto "." depois de um objeto ou
  • utilizar a tecla Tab após um ponteiro objeto desreferenciado "->".

A propriedade length é sempre incluída para uso com coleções.

Uma vez criados, os nomes das propriedades são armazenados em uma lista global interna e ficam disponíveis sempre que um método/classe/função é aberto, fechado ou muda de foco.

A lista de sugestões é atualizada dinamicamente enquanto você edita o código. Ao alternar entre janelas, os nomes de propriedades novos/editados são sempre adicionados à lista global. A lista também é atualizada quando você visualiza um método, uma classe ou uma função no Explorer.

Quando o banco de dados é reiniciado, a lista é reinicializada.

Você pode desativar a exibição automática das propriedades do objeto em Preferências > Métodos > sugestões.

Procurar e substituir

O editor de código possui poderosas funcionalidades de buscar e substituir que se aplicam à janela atual.

Uma área de busca e substituição pode ser exibida na barra de ferramentas de qualquer janela de método:

find-dialog

Para exibir essa área, clique no ícone Encontrar no método da [barra de ferramentas](#barra de ferramentas) ou selecione uma função de localização ou substituição por meio de um atalho ou de um comando do submenu Editar > Localizar. Você pode fechar essa área a qualquer momento clicando no botão x no lado direito da barra de ferramentas.

tip

A funcionalidade Localizar no Design na barra de ferramentas do 4D ou no menu Editar não é específica do editor de código, mas pode ser usada para pesquisar um valor entre todos os métodos e classes.

Find

Selecione Find > Find... no menu Edit ou digite Ctrl+F (Windows)/Cmd+F (macOS) para exibir/ativar a área Search.

A pesquisa definida nessa área será executada no código localizado na janela.

A área de entrada find permite que você insira a string a ser pesquisada. Esta área é uma caixa de combinação que armazena as últimas 10 sequências de caracteres que foram pesquisadas ou substituídas durante a sessão. Se você destacar o texto antes de escolher o comando Find..., ele aparecerá nessa área. Pode então utilizar este texto ou substituí-lo por outro.

Depois que uma cadeia é inserida ou selecionada, todas as ocorrências encontradas na janela aberta são destacadas e o lado direito da área exibe o número total de ocorrências encontradas. Também indica a posição atual do cursor entre todos os resultados.

Pressione a tecla Enter para selecionar a ocorrência mais próxima ao cursor. Você também pode clicar nos botões Próximo / Anterior find-next-previous para selecionar todas as ocorrências sequencialmente no início ou no fim do método atual, a partir da localização inicial do cursor, ou usar os comandos Procurar Próximo e Procurar Anterior do menu Editar.

Opções

  • Sensível a maiúsculas e minúsculas case-sensitive: Leva em consideração as maiúsculas e minúsculas dos caracteres conforme eles foram inseridos na área de localização. Essa opção também considera os caracteres diacríticos. Por exemplo, uma busca por "MyVar" não encontrará "myVar"; uma busca por "dej" não encontrará "déjà".
  • Palavra Inteira full-word: Limita a pesquisa a ocorrências exatas da palavra que está sendo procurada. Quando esta opção for marcada, por exemplo, uma busca por "cliente" não irá encontrar nem "clientes" nem "meucliente." Por padrão, essa opção não está marcada; portanto, uma pesquisa por "var" encontrará "Myvar", "variation" etc.

Substituir

Clique no botão de alternância v no lado esquerdo da área Search para exibir/ocultar a área Replace. Você também pode selecionar Find > Replace... no menu Edit ou digitar Ctrl+Alt+F (Windows)/Cmd+Alt+F (macOS) .

A área de entrada Replace é usada para definir a cadeia de caracteres que substituirá a definida acima.

Clique no botão Replace para iniciar a pesquisa com todas as opções definidas e substituir a primeira ocorrência encontrada. 4D começa a pesquisar a partir do ponto de inserção de texto atual e continua até o final do método. É possível então continuar encontrando/substituindo usando os comandos Substituir Próximo e Substituir o anterior do menu Editar.

Clique no botão Replace all para substituir todas as ocorrências correspondentes aos critérios de pesquisa diretamente no método aberto.

Encontrar o mesmo

O comando Find Same é usado para localizar cadeias de caracteres idênticas à selecionada. Esse comando só estará ativo se você tiver selecionado pelo menos um caractere no Code Editor.

A pesquisa realizada é do tipo "Localizar próximo" na janela atual do editor de código.

Os comandos Find Same Next e Find Same Previous são usados para localizar cadeias de caracteres estritamente idênticas às selecionadas. Por exemplo, as maiúsculas e minúsculas devem corresponder.

Marcar tudo

O comando Editar > Marcar tudo é ativado quando uma pesquisa já tiver sido especificada na caixa de diálogo localizar ou substituir. Quando você seleciona esse comando, 4D coloca um marcador em cada linha que contém um item correspondente aos critérios de pesquisa "atuais". Deste modo, é fácil identificar todos os resultados da pesquisa. Para obter mais informações sobre marcadores, consulte Marcadores.

Avisos e erros

Graças ao 4D Code Live Checker, a sintaxe, a consistência e a estrutura do código inserido são verificadas automaticamente para evitar erros de execução. Por exemplo, o Code Live Checker pode detectar a falta de um parêntese à direita ou o uso de um atributo de classe de dados desconhecido.

O Code Live Checker é ativado em três níveis:

  • quando você escreve código no editor de código,
  • quando você verifica a sintaxe no compilador,
  • quando você compila o projeto.

4D verifica automaticamente a sintaxe do código para ver se está correta. Se você inserir um texto ou selecionar um componente que não esteja correto, o 4D exibirá um símbolo para indicar a expressão incorreta.

Dois tipos de símbolos são exibidos:

  • warnings warning: Warnings are intended to draw your attention to statements that might lead to execution errors. Não impedem a compilação.
  • errorserror: erros são anomalias que impedem que o código seja executado corretamente. Eles devem ser corrigidos, caso contrário o projeto não será compilado.

Quando você passa o mouse sobre o símbolo, uma dica de ajuda exibe a causa do erro:

O Verificador de código ao vivo é ativado enquanto você insere o código. Quando uma linha de um método, classe ou função for marcada como tendo sintaxe inadequada, verifique e corrija a entrada. Se a linha estiver correta, 4D removerá o símbolo de erro. Quando salvar ou fechar a janela, todo o método é validado.

Você pode formatar a linha atual (sem avançar para a próxima linha) pressionando a tecla Enter no teclado numérico. 4D avalia a linha, formata, marca qualquer erro e coloca o ponto de inserção no final da linha.

O Verificador ao Vivo do Código verifica por:

  • erros básicos de sintaxe (operadores errados, erros de ortografia e similares)
  • a estrutura das declarações (If, End if e assim por diante)
  • correspondência de caracteres de fechamento no código, como parênteses ou colchetes (veja a dica abaixo)
  • as chamadas de atributos e funções de acordo com seu modelo (ORDA) e definições de classe de usuário. Por exemplo, o Code Live Checker gera um erro quando uma chamada para um atributo computado de classe de dados não é compatível com o tipo de atributo computado declarado.
tip

Quando você digita um caractere de fechamento, 4D indica a correspondência enquadrando os caracteres de início/fim com retângulos cinza por padrão:

Você pode modificar a forma como o 4D indica os caracteres correspondentes ou desativar esse recurso em Preferences.

O Code Live Checker não consegue detectar alguns erros que ocorrem somente durante a execução. Erros de execução são capturados por 4D quando o código é executado. No entanto, lembre-se de que o compiler também fornece ajuda indispensável para a detecção de erros.

Dicas de ajuda

O Editor de código fornece várias informações contextuais utilizando dicas de ajuda. Aparecem quando se passa o rato por cima de um objeto.

tip

A barra de status também fornece informações contextuais.

  • Erros: Quando você passa o mouse sobre o símbolo que indica um erro à esquerda da área de edição, uma dica de ajuda exibe a causa do erro (consulte Syntax errors).

  • Documentação do comando 4D: Quando você passa o mouse sobre um comando ou função 4D, uma dica de ajuda fornece sua sintaxe juntamente com uma breve descrição de como funciona.

  • Tipo de variável e descrição: Quando você passa o mouse sobre uma variável, uma dica de ajuda mostra seu tipo (se tiver sido explicitamente definido no método) e o comentário associado, se houver.

  • Métodos ou funções do projeto: Quando você passa o mouse sobre um método de projeto ou função de classe, uma dica de ajuda é exibida:

    • ou os comentários especificados no Explorador.
    • ou as primeiras linhas da função do método ou da classe, se ela incluir comentários (linhas que começam com // ou /.../ bloco de comentários). É prática comum inserir documentação para o método, assim como seus parâmetros, na forma de comentários no início do método. Você pode obter essa informação diretamente na gorjeta de ajuda, apenas certifique-se de remover primeiro quaisquer comentários encontrados no Explorer. Comentários no início de um método: Dica de ajuda em outro método:
  • Você também pode criar um arquivo de documentação dedicado chamado <MethodName>.md na pasta <package>/documentation. Veja Visualizar a documentação no editor de código

Comentar / Não comentar

A linguagem 4D suporta comentários, que são linhas de código inativas. O editor de código não aplica nenhum estilo específico nos comentários. O comprimento dos comentários é limitado ao tamanho máximo de 32.000 caracteres por linha.

Há dois tipos de comentários: //comment (comentário de linha única) e /*comment*/ (comentários em linha ou blocos de comentários de várias linhas).

Os comentários podem ser criados digitando caracteres /. Ou o comando Comment/Uncomment, encontrado no menu Method e também no menu de contexto do Code Editor, é usado para marcar um grupo de linhas de código selecionadas como comentários de linha única ou, ao contrário, para remover os caracteres de comentário de linha única de uma seleção. Para usar esse comando, selecione o código que será marcado como comentado e em seguida selecione o comando Comment/Uncomment:

-->

Quando a seleção contém apenas código ativo, o comando Comentário é aplicado. Or, the Comment/Uncomment command, found in the Method menu as well as in the Code Editor context menu is used to mark a group of selected lines of code as single line comments, or, on the contrary, to remove the single line comment characters from a selection. Quando a seleção contém apenas linhas comentadas, o comando Uncomment é aplicado.

O comando Comentar/Descomentar opera apenas com linhas completas --- não pode ser usado para comentar apenas parte de uma linha.

Expandir / Recolher

O código 4D localizado dentro de loops e condições agora pode ser recolhido ou expandido, para facilitar a leitura dos métodos:

  • Código expandido:

  • Código recolhido:

Se você posicionar o mouse sobre o botão de expansão [...], uma dica de ajuda aparece, exibindo as primeiras linhas do código oculto.

Uma porção colapsada de código pode ser selecionada, copiada, colada ou excluída. Todas as linhas incluídas nesse documento serão copiadas, coladas ou excluídas, respectivamente. Quando uma parte do código é colada, é automaticamente expandida.

Existem várias formas de expandir e recolher código:

  • Clique nos ícones de expansão/colapso ([+] e [-] no Windows) ou no botão de abertura [...]

  • Use os comandos do submenu Method > Collapse/Expand:

    • Recolher Seleção / Expandir Seleção: recolhe ou expande todas as estruturas de código encontradas na seleção de texto.
    • Recolher Nível Atual / Expandir Nível Atual: recolhe ou expande a estrutura do código no nível em que o cursor está localizado. Esses comandos também estão disponíveis no menu de contexto do editor.
    • Recolher tudo / Expandir tudo: colapsa ou expande todos os laços e condições de um método. Estes comandos também estão disponíveis na barra de ferramentas do editor.

Blocos

Os blocos podem ser definidos por:

  • Aspas
  • Parênteses
  • Uma estrutura lógica (If/Else/End if, While/End while, Repeat/Until Case of/End case)
  • Parêntesis

Selecionar bloco envolvente

A função Select Enclosing Block é usada para selecionar o "bloco envolvente" do código que contém o ponto de inserção.

Se um bloco de texto já estiver selecionado, a função seleciona o bloco que o envolve com o nível superior seguinte e assim por diante, até que o método inteiro seja selecionado.

Pressionar Ctrl+Shift+B (Windows) ou Command+Shift+B (macOS) permite reverter essa operação e desmarcar o último bloco selecionado.

Observação: Se o ponto de inserção for colocado em uma estrutura do tipo If ou Else, o bloco anexo será aquele que contém, respectivamente, a instrução If ou Else.

Início do bloco ou fim do bloco

Dois comandos facilitam a movimentação dentro das estruturas de código (por exemplo, If...Else...End if):

  • Início do Bloco: coloca o cursor no início da estrutura atual, logo antes da palavra-chave inicial.
  • Fim do bloco: coloca o cursor no final da estrutura atual, logo após a palavra-chave final.

Esses comandos são encontrados no menu Méto e no menu de contexto do editor. Também pode utilizar os seguintes atalhos:

  • Windows: Ctrl + seta para cima ou Ctrl + seta para baixo'
  • macOS: Comando + seta para cima ou Comando +seta para baixo.

Marcadores

4D permite que você associe marcadores a certas linhas em seus métodos. Você pode navegar rapidamente dentro do código passando de um favorito para outro usando comandos específicos.

Um favorito se move junto com sua linha original se linhas adicionais forem inseridas no método. Os marcadores são guardados com os métodos.

Os marcadores são gerenciados usando o submenu Bookmarks do menu Method:

  • Alternar: Associa um favorito com a linha atual (onde o cursor está localizado) se ele ainda não tiver um ou remover o favorito existente se o fizer. Essa função também está disponível usando o comando Toggle Bookmark do menu de contexto do editor ou usando o atalho de teclado Ctrl+F3 (Windows) ou Command+F3 (macOS).
  • Remover tudo: Remove todos os favoritos da janela em primeiro plano.
  • Para o próximo / Para o anterior: Permite a navegação entre os marcadores na janela. Selecionar um desses comandos coloca o cursor sobre o primeiro caractere da linha associada ao marcador em questão. Você também pode usar os atalhos de teclado F3 (ir para o próximo) ou Shift+F3 (ir para o anterior).
info

Você pode usar marcadores como marcadores de linhas que contêm um [item encontrado por uma pesquisa] (#find). Neste caso, 4D adiciona automaticamente os marcadores. Para obter mais informações, consulte Bookmark all.

Revelar no Explorador

O comando Revelar no Explorer... abre uma janela do Explorer com o elemento de destino selecionado. Para fazer isso, coloque o cursor dentro do nome do elemento ou selecione-o e, em seguida, escolha Método > Revelar no Explorer... .

Pesquisar chamadores

O comando Search Callers no menu Method só é ativado para métodos de projeto. Ele procura todos os objetos (outros métodos ou menus) que fazem referência ao método do projeto.

Nota: O comando Pesquisar Chamadores... também está disponível em Explorador > Métodos

Este comando apresenta os seus resultados numa nova janela.

Ir para Definição

O comando Goto Definition abre a definição de um elemento referenciado no Editor de código. Para fazer isso, coloque o cursor dentro do nome do objeto ou selecione-o e escolha Method > Goto Definition... ou use o menu de contexto do editor.

tip

Essa funcionalidade também está disponível através do atalho de teclado Ctrl+K (Windows) / Command+K (macOS) ou Alt+double-click.

O efeito do comando Ir a Definição... varia dependendo do elemento de destino:

  • com um método de projeto, ele exibe o conteúdo do método em uma nova janela do Editor de Código
  • com um nome de classe ou função classe, ele abre a classe no Editor de código
  • com um comando ou função 4D integrado, ele tem o mesmo efeito que o comando Mostrar documentação.

Mostrar documentação

O comando Mostrar documentação... abre a documentação do elemento de destino. Para fazer isso, coloque o cursor dentro do nome do elemento ou selecione-o e, em seguida, escolha Método > Mostrar documentação... ou use o menu contextual. O efeito varia consoante o elemento alvo. Por exemplo:

  • Selecionar um método de projeto ou uma classe de usuário e escolher Mostrar documentação... seleciona o método no Explorador e muda para a guia de documentação
  • Ao selecionar um comando, função ou nome de classe 4D e escolher Mostrar documentação... será exibida a documentação online.
  • Se nenhum elemento for selecionado, o comando abre a documentação do método atualmente aberto no Editor de Código, se houver.
tip

Para exibir a documentação de um comando da linguagem "clássica" do 4D, selecione o nome do comando ou simplesmente coloque o cursor no nome e pressione F1. A documentação do comando é exibida em uma nova janela do seu navegador padrão. O 4D procura a documentação dependendo das configurações feitas nas Preferências (consulte Local da documentação).

Pesquisar referências

O comando Search References... encontrado no menu Method ou no menu de contexto do Editor de código localiza todos os objetos (métodos e formulários) no projeto em que o item atual do método é referenciado (usado).

O item atual é aquele selecionado ou aquele em que o cursor está localizado. Pode ser um nome de campo, nome de variável, comando, cadeia de caracteres e assim por diante. Por exemplo, a ação a seguir procura todas as ocorrências da variável vlNbCmd no banco de dados:

find-dialog

Este comando apresenta os seus resultados numa nova janela.

Macros

Pode utilizar macro-comandos nos seus métodos. A utilização de macro-comandos poupa muito tempo durante a introdução de código.

Um macro-comando é uma secção de código 4D que está permanentemente acessível e que pode ser inserida em qualquer lugar nos seus métodos, qualquer que seja o tipo de base de dados aberta. As macros podem conter todos os tipos de texto, comandos e constantes 4D, bem como etiquetas especiais que são substituídas no momento da inserção da macro por valores derivados do contexto do método. Por exemplo, uma macro pode conter a tag <method_name/>; no momento da inserção da macro, essa tag será substituída pelo nome do método do projeto atual.

As macros são armazenadas num ou mais ficheiros de formato XML (texto). Podem ser colocados numa lista do editor de código; também podem ser chamados através do menu de contexto do editor ou através da função de preenchimento automático.

As macros 4D são escritas em formato XML. Pode usar o ficheiro macro padrão 4D como está ou modificá-lo.

Localização das macros

4D carrega as macros de uma pasta chamada Macros v2. As macros devem estar na forma de um ou mais ficheiros XML que são colocados nesta pasta.

A pasta "Macros v2" pode ser localizada:

  • Na pasta 4D ativa da máquina. As macros são então partilhadas para todas as bases de dados. **Nota: O local da pasta 4D ativa varia de acordo com o sistema operacional utilizado. Para mais informações, consulte a descrição do comando Get 4D folder no manual de Referência de Linguagem do 4D.
  • Junto ao ficheiro de estrutura da base de dados. As macros só são carregadas para esta estrutura.
  • Para componentes: na pasta Components da base de dados. 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 predefinidas

4D oferece um conjunto de macros padrão contendo, por exemplo, palavras-chave de fluxo de controlo. Estas macros se incluyen en el archivo por defecto "Macros.xml", ubicado en la carpeta "Macros v2" que se crea en la carpeta 4D activa de la máquina durante el arranque inicial de 4D.

Pode modificar este ficheiro ou o conteúdo da pasta posteriormente, como desejar (ver o parágrafo seguinte). No caso de problemas com essa pasta, ela pode ser apagada e 4D a recriará na próxima inicialização.

Adicionar macros personalizadas

Pode adicionar macros personalizadas no ficheiro "Macros.xml" utilizando um editor de texto padrão ou através de programação. Também é possível adicionar ficheiros XML de macros personalizadas nesta pasta.

No modo local, o arquivo de macros pode ser aberto enquanto se usa 4D. A lista de macros disponíveis é atualizada em cada evento que ativa 4D. Por exemplo, é possível colocar o editor de texto em primeiro plano, modificar o ficheiro de macros e depois voltar ao método: a nova macro fica então disponível no editor de código.

As macros vazias ou incorretas não são mostradas.

Verificando a sintaxe das macros personalizadas

Os arquivos de macro-comandos de 4D devem estar em conformidade com o padrão XML. Isso significa, mais especificamente, que a declaração XML <?xml version="1.0" ...?> e a declaração de documento <!DOCTYPE macros SYSTEM "http://www.4d.com/dtd/2007/macros.dtd"> são obrigatórias no início de um arquivo de macro para que ele seja carregado. São suportados os diferentes tipos de codificação XML. No entanto, recomenda-se a utilização de uma codificação compatível com Mac/PC (UTF-8). 4D fornece uma DTD que pode ser usada para validar os ficheiros macro. Este ficheiro encontra-se na seguinte localização:

  • Windows: \Resources\DTD\macros.dtd
  • Mac OS: :Contents:Resources:DTD:macros.dtd

Se um ficheiro de macros não contiver os comandos de declaração ou não puder ser validado, não é carregado.

Sintaxe das macros 4D

As macros 4D são construídas usando etiquetas XML personalizadas chamadas "elementos".

Algunas etiquetas indican el inicio y el final de la definición (etiquetas dobles del tipo <tag> </tag>), otras se sustituyen por valores de contexto de inserción (<tag/>).

Em conformidade com as especificações XML, algumas etiquetas de elementos podem incluir atributos. Salvo indicação em contrário, estes atributos são facultativos sendo utilizado um valor por defeito quando são omissos. A sintaxe dos elementos com atributos é a seguinte:

  • Etiquetas dobles: <tag attribute="value"> </macro>
  • Etiquetas individuales: <tag attribute="value"/>

Se o elemento aceitar vários atributos, você poderá agrupá-los na mesma linha de comando, separados por um espaço: \<tag attribute1="value" attribute2="value" attribute3="value"... >

Eis a lista de etiquetas e o seu modo de utilização:

Etiquetas dos elementosDescription
<macros> </macros>Início e fim do ficheiro macro (etiqueta obrigatória).
<macro> </macro>Início e fim da definição de uma macro e dos seus atributos.
Atributos:
- name: Nome**da macro tal como aparece nos menus e nas listas do Editor de código (atributo obrigatório).
- type_ahead_text: Cadeia de caracteres** a introduzir para chamar a macro utilizando a função type-ahead (também conhecida como autocomplete)*.
- in_menu: Booleano que indica se a macro pode ser chamada utilizando o menu de contexto*. Valores = "true" (padrão) ou "false."
- type_ahead: Booleano que indica se a macro pode ser chamada utilizando a função type-ahead (também conhecida como autocomplete)*. Valores = "true" (padrão) ou "false."
- method_event: Utilizado para acionar a chamada automática da macro em função da fase de tratamento atual de cada método (criação, encerramento, etc.). Valores = "on_load": A macro é acionada na abertura de cada método, "on_save": A macro é acionada quando cada método é salvo (fechamento de um método modificado ou salvamento usando o comando File>Save, "on_create": A macro é acionada quando cada método é criado, "on_close": A macro é acionada quando cada método é fechado.
"on_save" e "on_close" podem ser utilizados em conjunto --- por outras palavras, ambos os eventos são gerados quando um método modificado é fechado. Por outro lado, "on_create" e "on_load" nunca são gerados de forma consecutiva. Este atributo pode ser utilizado, por exemplo, para pré-formatar métodos quando estes são criados (comentários na área do cabeçalho) ou para registar informações como a data e a hora em que são encerrados.
- version: utilizada para activar el nuevo modo de soportar selecciones de texto para la macro (ver más adelante la sección "Acerca de la etiqueta <method>"). Para ativar este novo modo, passe o valor "2". Se omitir este atributo ou passar version="1", o modo anterior é mantido.
- in_toolbar: Booleano que indica se a macro deve estar presente no menu do botão Macro da barra de ferramentas. Valores= "true" (padrão) ou "false".
<selection/>Etiqueta substituída pelo texto selecionado quando a macro é inserida. A selecção pode estar vazia.
<text> </text>Início e fim do código que deve ser inserido no método. Um retorno de carro será adicionado antes e depois do código.
<method> </method>Início e fim do nome do método do projeto e do seu parâmetro (opcional). O método é executado quando a macro é chamada. Pode passar um parâmetro na forma ("param1;param2;..."). Este parâmetro será recebido no método usando as variáveis $1, $2, etc. Para más información sobre esta etiqueta, consulte la sección "Acerca de la etiqueta <method>".
<caret/>Localização do ponto de inserção no código após a macro ter sido inserida.
<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/>Tag substituída pelo nome do método atual.
<method_path/>Tag substituída pela sintaxe do caminho (conforme retornado por METHOD Get path do método atual.
<date/>Tag substituída pela data actual.
Attribute:
- format: Formato 4D utilizado para mostrar a data. Se nenhum formato for definido, será usado o formato padrão. Valores = número do formato 4D (0 a 8).
<time/>Tag substituída pela hora atual.
Attribute:
- format: Formato 4D utilizado para mostrar a hora. Se nenhum formato for definido, será usado o formato padrão. Valores = número do formato 4D (0 a 6).
<clipboard/>Etiqueta substituída pelo conteúdo da área de transferência.
Attribute:
- index: Área de transferência a ser colada. Valores = número da área de transferência (0 a 9).
  • As macros podem ser chamadas utilizando o menu de contexto do editor de código ou utilizando a função de antecipação de digitação (ver a seção seguinte).

  • Se quiser estar em conformidade com as especificações da linguagem XML, não deve utilizar caracteres alargados (caracteres acentuados, aspas, etc.).

Aqui está um exemplo de definição de macro:

Conteúdo da macroComments
<?xml version="1.0"...?>Declaração XML
<!DOCTYPE macros SYSTEM>Declaração do documento
<macros>Início do ficheiro XML das macros
<macro name="RecordLoop">Início da definição e nome da macro
<text>Início do código da macro
For($i;1;Records in selection(<Selection/>))A tag <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)
SAVE RECORD(<Selection/>)
NEXT RECORD(<Selection/>)
End for
</text>Fim do código macro
</macro>Fim da definição de macro
</macros>Fim do ficheiro XML das macros

Sobre a tag <method>

A etiqueta <method> permite-lhe gerar e utilizar macro-comandos que executam métodos de projeto 4D. Isto permite aos programadores criar funções sofisticadas que podem ser distribuídas através de macro-comandos associados a componentes. Por exemplo, a macro a seguir fará com que o método MyMethod seja executado com o nome do método atual como parâmetro:

<method>MyMethod("<method_name/>")</method>

O código de um método chamado é executado num novo processo. Este processo é encerrado quando o método é executado.

O processo da estrutura permanece congelado até que a execução do método chamado seja concluída. Deve certificar-se de que a execução é rápida e que não há risco de bloquear a aplicação. If this occurs, use the Ctrl+F8 (Windows) or Command+F8 (Mac OS) command to "kill" the process.

Chamada de macros

Por predefinição, as macros podem ser chamadas utilizando o menu de contexto ou a barra de ferramentas do Editor de código, a função de preenchimento automático ou uma lista específica na parte inferior da janela do Editor de código.

Note-se que, para cada macro, é possível restringir a possibilidade de a chamar utilizando o menu de contexto e/ou a função de preenchimento automático.

Por predefinição, todas as macros podem ser chamadas através do menu de contexto do Editor de código (utilizando o comando hierárquico Inserir macro) ou o botão Macros da barra de ferramentas.

O atributo in_menu da tag <macro> é usado para definir se a macro aparece ou não neste menu.

No menu de contexto, as macros são apresentadas pela ordem do ficheiro "Macros.xml" e de quaisquer ficheiros XML adicionais. Assim, é possível alterar a ordem modificando estes arquivos.

Autocompletar

Por padrão, todas as macros são acessíveis usando a função autocomplete (aka type-ahead) (veja escrevendo um método). O atributo type_ahead da tag <macro> pode ser usado para excluir uma macro deste tipo de operação.

Nota: Se a macro contiver a etiqueta <selection/>, ela não aparecerá na janela pop-up de preenchimento automático.

Lista do editor de código

Você pode exibir seus macros em uma lista do Editor de Código (veja Escrevendo um método). Basta fazer duplo clique no nome de uma macro na lista para a chamar. Não é possível excluir uma macro específica desta lista.

Notas de compatibilidade

O suporte de macro pode mudar de uma versão de 4D para outra. Para manter as diferentes versões compatíveis enquanto mantém suas personalizações, 4D não remove nenhuma versão anterior. Se quiser utilizar as últimas funcionalidades disponíveis, tem de adaptar a sua versão em conformidade.

Variáveis de seleção de texto para métodos

É recomendado gerenciar seleções de texto usando o GET MACRO PARAMETER e os comandos SET MACRO PARAMETER. Estes comandos podem ser utilizados para ultrapassar o particionamento dos espaços de execução do projeto/componente anfitrião, permitindo assim a criação de componentes dedicados à gestão de macros. Para ativar este modo para uma macro, é necessário declarar o atributo Versão com o valor 2 no elemento Macro. Neste caso, o 4D não gerencia mais as variáveis predefinidas _textSel,_textReplace, etc. e são utilizados os comandos GET MACRO PARAMETER e SET MACRO PARAMETER. Este atributo deve ser declarado da seguinte forma:

<macro name="MyMacro" version="2">
--- Text of the macro ---
</macro>

Se este atributo não for indicado, é mantido o modo anterior.

Incompatibilidades relacionadas com a norma XML

Devem ser observadas regras de sintaxe rigorosas para que os arquivos de macros respeitem a norma XML. Isto pode levar a incompatibilidades com o código das macros criadas com versões anteriores e impedir o carregamento de ficheiros XML. As principais causas de mau funcionamento são as seguintes

  • Comentários do tipo "// meu comentário", permitido dentro de <macro> elementos 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 normalizada "<!-- o meu comentário -->".
  • Os símbolos <> usados mais especialmente para nomes de objetos entre processos devem ser codificados. Por exemplo, a variável <>params deve ser escrita &lt;>params.
  • A etiqueta de declaração inicial <macros> podia ser omitida em versões anteriores de 4D. Agora é obrigatório; caso contrário, o ficheiro não será carregado.