Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19
Criar e utilizar macros
|
Etiquetas de elementos | Descrição |
<macros> </macros> | Início e fim do arquivo macro (etiqueta obrigatória). |
<macro> </macro> | 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". | |
<selection/> | Etiqueta substituída pelo texto selecionado no momento da chamada à macro. A seleçã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 de projeto e de seu parâmetro (opcional). O método é executado quando a macro é chamada. Pode passar um parâmetro no formato ("param1;param2;..."). Este 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:
Conteúdo da macro | Comentários |
<?xml version=”1.0”...?> | Declaração XML |
<!DOCTYPE macros SYSTEM> | Declaração de documento |
<macros> | Início de arquivo XML de 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 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) |
SAVE RECORD(<Selection/>) | |
NEXT RECORD(<Selection/>) | |
End for | |
</text> | Fim do código da macro |
</macro> | Fim da definição da macro |
</macros> | Fim do arquivo XML de macros |
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.
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.
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.
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.
É 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.
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.
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:
<macro name="MyMacro" version="2">
--- Texto de la macro ---
</macro>
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.
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.
Produto: 4D
Tema: Editar Métodos
Manual de Desenho 4D ( 4D v19)