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

Managing Methods and Classes

O código 4D usado em seu projeto está escrito em métodos e classes.

O IDE 4D fornece vários recursos para criar, editar, exportar ou excluir seu código. Normalmente, você usará o editor de código 4D incluído para trabalhar com seu código. Você também pode usar outros editores, como VS Code, para o qual a extensão 4D-Analyzer está disponível.

Criação de métodos

Um método em 4D é armazenado em um arquivo .4dm localizado na pasta apropriada da pasta /Project/Sources/.

Você pode criar vários tipos de métodos:

  • All types of methods can be created or opened from the Explorer window (except Object methods which are managed from the Form editor).
  • Os métodos projeto também podem ser criados ou abertos no menu File, ou na barra de ferramentas (**Novo/Método.. ** ou Abrir/Método...) ou usando atalhos na janela do editor de código.
  • Triggers can also be created or opened from the Structure editor.
  • Los métodos formulario también pueden crearse o abrirse desde el editor de formularios.

Criação de classes

User classes

Uma classe usuário no 4D é definida por um arquivo de método específico (.4dm), armazenado na pasta /Project/Sources/Classes/. O nome do arquivo é o nome da classe. For example, a class named "Polygon" will be stored in the following file:

Project folder

You can create a class file from the File menu or toolbar (New > Class...) or in the Methods page of the Explorer window. Você também pode usar o atalho Ctrl+Shift+Alt+k.

Na página de Métodos do Explorador, as classes são agrupadas na categoria Classes.

Para criar uma nova classe, pode:

  • selecione a categoria Classes e clique no botão .
  • selecione Nova Classe... no menu de ação na parte inferior da janela do Explorer, ou no menu contextual do grupo Classes.
  • selecione Novo > Classe... a partir do menu contextual da página inicial do Explorador.

Ao nomear classes, deve ter em mente as seguintes regras:

  • Um nome de classe deve estar em conformidade com as regras de nomenclatura das propriedades.
  • Nomes de classe diferenciam minúsculas de maiúsculas.
  • Não se recomenda dar o mesmo nome a uma classe e a uma tabela de base de dados, a fim de evitar qualquer conflito.

ORDA classes

ORDA data model user classes are high-level class functions created above the data model.

An ORDA data model class is defined by adding, at the same location as regular class files (i.e. in the /Sources/Classes folder of the project folder), a .4dm file with the name of the class. Por exemplo, uma classe de entidade para o dataclass Utilities será definida através de um arquivo UtilitiesEntity.4dm.

4D pré-criou automaticamente classes vazias na memória para cada objeto de modelo de dados disponível.

Por padrão, as classes ORDA vazias não são exibidas no Explorer. Para mostrar a eles, você precisa selecionar Mostrar todas as classes de dados do menu de opções do Explorador:

As classes de utilizadores ORDA têm um ícone diferente das classes normais. As classes vazias são escurecidas:

Para criar um arquivo de classe ORDA, basta fazer duplo clique na classe predefinida correspondente no Explorador. 4D creates the class file and add the extends code. Por exemplo, para uma classe Entity:

Class extends Entity

Quando uma classe for definida, o seu nome deixa de estar obscurecido no Explorador.

Para abrir una clase ORDA definida en el editor de código 4D, seleccione o haga doble clic en el nombre de una clase ORDA y utilice Editar... en el menú contextual/menú de opciones de la ventana del Explorador:

Para as classes ORDA baseadas no armazenamento de dados local (ds), é possível acessar diretamente o código da classe pela janela 4D Structure:

Support in 4D projects

Nas várias janelas 4D (editor de código, compilador, depurador, explorador de tempo de execução), o código de classe é basicamente tratado como um método de projecto com algumas especificidades:

  • No editor de código:
    • uma aula não pode ser executada
    • uma função de classe é um bloco de código
    • Ir para a definição em um membro do objeto procura por declarações da classe Função; por exemplo, "$o.f()" encontrará "Função f".
    • Procurar referências na declaração de função da classe procura a função utilizada como membro do objeto; por exemplo, "Função f" irá encontrar "$o.f()".
    • variables typed as a user or ORDA class automatically benefit from autocompletion features. Exemplo com uma variável de classe Entity:

  • No explorador e Depurador de Runtime, as funções de classe são exibidas com o formato <ClassName> construtor ou <ClassName>.<FunctionName>.

Excluir os métodos ou as classes

Para eliminar um método ou classe existente, pode:

  • em seu disco, remova o arquivo .4dm da pasta "Sources",
  • in the 4D Explorer, select the method or class and click or choose Move to Trash from the contextual menu.

To delete an object method, choose Clear Object Method from the Form editor (Object menu or context menu).

Design Object Access commands

You can access the contents and paths of all methods in your applications by programming, thanks to the "Design Object Access" command theme. This source toolkit facilitates the integration into your applications of code control tools and more particularly version control systems (VCS). It also lets you implement advanced systems for code documentation, for building a custom explorer or for organizing scheduled backups of the code saved as disk files.

The following principles are implemented:

  • Each method and form in a 4D application has its own address in the form of a pathname. For example, the trigger method for table 1 can be found at "[trigger]/table_1". Each object pathname is unique in an application.
  • You can access objects in the 4D application using the commands of the "Design Object Access" command theme, for example METHOD GET NAMES or METHOD GET PATHS.
  • Most of the commands in this theme work in both interpreted and compiled mode. However, commands that modify properties or access contents executable from methods can only be used in interpreted mode (see the table below).
  • You can use all the commands of this theme with 4D in local or remote mode. However, keep in mind that you cannot use certain commands in compiled mode: the purpose of this theme is to create custom development support tools. You must not use these commands to dynamically change the functioning of a database that is running. For example, you cannot use METHOD SET ATTRIBUTE to change a method attribute according to the status of the current user.
  • When a command of this theme is called from a component, by default it accesses the component objects. In this case, to access objects of the host, you just pass a * as the last parameter.

Use in compiled mode

For reasons related to the principle of the compilation process, only certain commands in this theme can be used in compiled mode. The following table indicates the available of the commands in compiled mode:

ComandoCan be used in compiled mode
Current method pathSim
FORM GET NAMESSim
METHOD Get attributeSim
METHOD GET ATTRIBUTESSim
METHOD GET CODENão
METHOD GET COMMENTSSim
METHOD GET FOLDERSSim
METHOD GET MODIFICATION DATESim
METHOD GET NAMESSim
METHOD Get pathSim
METHOD GET PATHSSim
METHOD GET PATHS FORMSim
METHOD OPEN PATHNão
METHOD RESOLVE PATHSim
METHOD SET ACCESS MODESim
METHOD SET ATTRIBUTENão
METHOD SET ATTRIBUTESNão
METHOD SET CODENão
METHOD SET COMMENTSNão
nota

The error -9762 "The command cannot be executed in a compiled database." is generated when the command is executed in compiled mode.

Creation of pathnames

Pathnames generated for 4D objects must be compatible with the file management of the operating system. Characters that are forbidden at the OS level such as ":" are automatically encoded in method names, so that generated files may be integrated automatically in a version control system.

Here are the encoded characters:

CaracteresEncoding
"%22
*%2A
/%2F
:%3A
<%3C
>%3E
?%3F
\
\%5C
%%25

Exemplos

Form?1 is encoded Form%3F1
Button/1 is encoded Button%2F1