Saltar para o conteúdo principal
Versão: 21

Fórmulas

Visão Geral

4D Write Pro documents can contain references to 4D formulas such as variables, fields, expressions, project methods, or 4D commands. Specific information such as the page number can also be referenced through formulas (see Inserting document and page expressions below).

Inserting formulas in 4D Write Pro areas is done with the WP INSERT FORMULA command and can be read using the WP Get formulas command. Eles também são devolvidos pelo comando WP Get text.

As fórmulas são avaliadas:

  • quando são inseridos em um objeto de formulário que exibe valores computados
  • quando o objeto 4D Write Pro é carregado em um objeto de formulário que exibe valores computados
  • quando o comando WP COMPUTE FORMULAS for chamado
  • quando são "congelados" usando o comando WP FREEZE FORMULAS (se ainda não tiverem sido computados)
  • antes da impressão (se ainda não tiver sido computado)
  • antes de exportar para .docx (se a fórmula não puder ser mapeada com fórmulas do MS Word)
  • quando as ações padrão para congelar, imprimir, exportar ou calcular fórmulas são chamadas. Veja Ações padrão

As fórmulas não são avaliadas quando um documento é carregado (usando WP New, WP Insert document body, ou wpArea:=[table]field):

  • se o documento estiver apenas fora da tela,
  • se o documento for exibido na tela, mas o objeto de formulário mostrar apenas referências.

As fórmulas se tornam valores estáticos se você chamar o comando WP FREEZE FORMULAS (exceto para número de página e contagem de páginas, veja abaixo).

Compatibility Note: Handling expressions using the ST INSERT EXPRESSION, ST Get expression, ST COMPUTE EXPRESSIONS, and ST FREEZE EXPRESSIONS commands is deprecated, however, it is still supported in 4D Write Pro for compatibility.

nota

For security reasons, when formulas are pasted from a different 4D application or an external environment, only the computed values (text or images) available at the time of copying are pasted. If no value was available (e.g., the formula was never computed), 4D pastes the formula source as plain text.

Exemplo

Você deseja substituir a seleção em uma área do 4D Write Pro pelo conteúdo de uma variável:

 var fullName: Text
var $sel: Object
fullName:="John Smith"
$sel:=WP Selection range(4DWPArea)
Case of
:(Form event code=On Clicked)
WP INSERT FORMULA($sel;Formula(fullName);wk replace)
End case

Objeto de contexto de fórmula

Você pode inserir expressões especiais relacionadas aos atributos de documento em qualquer área de documento (corpo, cabeçalho, rodapé) usando o comando WP Insert formula. Em uma fórmula, um objeto de contexto de fórmula é exposto automaticamente. Você pode usar as propriedades desse objeto por meio de This:

PropriedadesTipoDescrição
This.titleTextTítulo definido no atributo wk title
This.authorTextAutor definido no atributo wk author
This.subjectTextAssunto definido no atributo wk subject
This.companyTextEmpresa definida no atributo wk company
This.notesTextNotas definidas no atributo wk notes
This.dateCreationDateData de criação definida no atributo wk date creation
This.dateModifiedDateData de modificação definida no atributo wk date modified
This.pageNumber (*)NumberPage number as it is defined:
  • From the document start (default) or
  • From the section page start if it is defined by section page start.
This formula is always dynamic; it is not affected by the WP FREEZE FORMULAS command.
This.pageCount (*)NumberContagem de páginas: contagem total de páginas.
Esta fórmula é sempre dinâmica; não é afetada pelo comando WP FREEZE FORMULAS.
This.documentObjectDocumento 4D Write Pro
This.dataObjectContexto dos dados do documento 4D Write Pro definido por WP SET DATA CONTEXT
This.sectionIndexNumberO índice da seção no documento 4D Write Pro a partir de 1
This.pageIndexNumberO número real da página no documento 4D Write Pro a partir de 1 (independentemente dos números de página da seção)
This.sectionNameStringO nome que o usuário dá à seção
nota

Additional context properties are available when you work with tables. See Handling tables for more information.

(*) Importante: This.pageNumber, This.pageIndex e This.pageCount devem ser usados apenas diretamente em uma fórmula do 4D Write Pro (eles devem estar presentes na string formula.source). Eles retornarão valores incorretos se forem usados pela linguagem 4D em um método chamado pela fórmula. No entanto, eles podem ser passados como parâmetros para um método chamado diretamente pela fórmula:

  • Isso funcionará: " formatNumber(This.pageNumber) "
  • Isso NÃO funcionará: " formatNumber " com o método formatNumber processando This.pageNumber.

Por exemplo, para inserir o número da página na área do rodapé:

 $footer:=WP Get footer(4DWP;1)
WP INSERT FORMULA($footer;Formula(This.pageNumber);wk append)
//Usando Formula(myMethod) com myMethod processando This.pageNumber
//não funcionaria corretamente

Table formula context object

When used in a formula within the table, the This keyword gives access to different data according to the context:

ContextExpressionTipoRetorna
AnywhereThis.tableObjectCurrent table
This.rowObjectCurrent table row element
This.rowIndexNumberIndex of the current row, starting from 1
When a datasource has been defined for the tableThis.table.dataSourceObject (fórmula)Datasource as a formula
This.tableDataCollection or Entity selection (usually)Evaluated table.dataSource
In each data row when a table datasource returns a collection or an entity selectionThis.item.xxxQualquerMapped to each item of the table datasource collection or entity selection, for example This.item.firstName if the associated entity has the firstName attribute
This.itemIndexNumberIndex of the current item in the collection or entity selection, starting from 0
In any row (except header rows) when a table datasource returns a collection or an entity selectionThis.previousItemsCollection or Entity selectionItems displayed on the pages before the bottom carry over row (if any) or before the row of the expression, including the page where is displayed the row containing the expression.
This expression returns the same type of value as the This.tableData expression.
In a break rowThis.breakItemsCollection or Entity selectionItems of the collection or entity selection displayed in the rows between:
  • the current break row and the previous break row of the same level (or the start of the table) if the break row(s) are displayed after the data row.
  • the current break and the next break row of the same level (or the end of the table) if the break row(s) are displayed before the data row.

In any other contexts, these expressions will return undefined.

nota

For more information about formula insertion, see WP INSERT FORMULA.

Inserção de fórmulas de data e hora

Date

When the Current date command, a date variable, or a method returning a date is inserted in a formula, it will automatically be transformed into text using the system date short format.

Time

Quando o comando Current time, uma variável de tempo ou um método que retorna um tempo é inserido em uma fórmula, ele deve ser incluído em um comando String porque o tipo de tempo não é compatível com JSON. Considere os seguintes exemplos de fórmulas:

  // Este código é a melhor prática
$formula1:=Formula(String(Current time)) //OK

// Este código funcionará, mas geralmente não é recomendado, exceto após "Editar fórmula"
$formula2:=Formula from string("String(Current time)") //OK

// Código errado porque os valores de tempo seriam exibidos como um longint para segundos (ou milissegundos), não como um tempo
$formula3:=Formula from string("Current time") //NOT valid
$formula4:=Formula(Current time) //NOT valid

Compatibilidade da estrutura virtual

As expressões de tabela e campo inseridas nos documentos do 4D Write Pro são compatíveis com a definição da estrutura virtual do banco de dados. A estrutura virtual exposta às fórmulas é definida por meio dos comandos SET FIELD TITLES(...;*) e SET TABLE TITLES(...;*).

Quando uma estrutura virtual for definida:

  • referências a expressões que contenham campos mostrarão nomes virtuais quando o documento 4D Write Pro mostrar referências e não valores.
  • WP Get text retorna nomes de estrutura virtual se a opção wk expressions as source estiver definida no parâmetro de expressões.
  • WP Insert formula ignora a estrutura virtual e sempre espera tabela/nomes de campo reais
nota

Quando um documento for exibido no modo "exibir expressões", referências a tabelas ou campos que não pertençam à estrutura virtual são exibidas com "? " caracteres, por exemplo [VirtualTableName]?` quando o campo não estiver definido na estrutura virtual.

Exibindo fórmulas

Você pode controlar como as fórmulas são exibidas em seus documentos:

  • como valores ou como referências
  • quando mostrados como referências, exibem o texto, o símbolo ou o nome da fonte.

Referências ou valores

Por padrão, as fórmulas 4D são exibidas como valores. Quando você insere uma fórmula 4D, o 4D Write Pro calcula e exibe seu valor atual. Se você quiser saber qual fórmula é usada ou qual é o nome dela, precisará exibi-la como referência.

Para exibir fórmulas como referências, você pode:

  • verifique a opção Mostrar referências na lista de propriedades (veja Configurando propriedades de visualização), ou
  • usar a ação padrão visibleReferences (consulte Expressões dinâmicas), ou
  • use o comando WP SET VIEW PROPERTIES com o seletor wk visible references como True.

As referências à fórmula podem ser exibidas como:

  • textos de origem (padrão)
  • symbols
  • names

Referências como textos de origem (padrão)

Quando as fórmulas forem exibidas como referências, por padrão, o texto de origem da fórmula aparece em seu documento, com um fundo cinza padrão (pode ser personalizado usando o seletor wk formula highlight).

Por exemplo, se você tiver inserido a data atual junto com um formato, a data será exibida:

Quando você exibir fórmulas como referências, a fonte da fórmula é exibida:

Referências como símbolos

Quando os textos de origem da fórmula forem exibidos em um documento, o design pode ser confuso se você trabalhar com modelos sofisticados usando tabelas, por exemplo, e quando as fórmulas forem complexas:

Neste caso, você pode exibir referências de fórmula como símbolos , para que o documento seja mais compacto:

Para exibir referências de fórmulas como símbolos, você pode:

  • marcar a opção Exibir fonte de fórmula como símbolo na lista de propriedades (consulte Configuração das propriedades da visualização) ou
  • usar a ação padrão de FormulaAsSymbol (veja Usando as ações 4D Write Pro), ou
  • use o comando WP SET VIEW PROPERTIES com o seletor wk display formula as symbol como True.

Referências como nomes

Você pode atribuir nomes a fórmulas, fazendo com que 4D Write Pro modelos de documentos mais fáceis de ler e entender para os usuários finais. Quando fórmulas forem exibidas como referências (e não exibidas como símbolos) e você definiu um nome para uma fórmula, o nome da fórmula é exibido.

Por exemplo, as referências de fórmula a seguir são exibidas como texto fonte por padrão:

Se você atribuir nomes de fórmulas, eles serão exibidos em vez de textos:

Para atribuir um nome a uma fórmula, você precisa usar o comando WP Insert formula com um parâmetro objeto. Por exemplo:

  //insere o dia anterior no documento
$o:=New object("formula";Formula(Current date-1); "name"; "Yesterday")
$range:=WP Text range(WPArea;wk start text;wk end text)
WP INSERT FORMULA($range;$o;wk append)

nota

Somente as fórmulas inline podem ter um nome (fórmulas para imagens ancoradas, linhas de quebra e fórmulas de fonte de dados de tabela não podem ter nomes).

Dicas de fórmula

Qualquer que seja o modo de exibição da fórmula, você pode obter informações adicionais sobre as fórmulas por meio de tips que são exibidas quando você passar o mouse sobre as fórmulas.

  • Quando as fórmulas não tiverem nomes, as dicas fornecem o texto de origem das fórmulas:

  • Quando as fórmulas tiverem nomes, mas são exibidas como valores ou como símbolos, a dica fornece o nome das fórmulas:

Nesse contexto, você pode exibir o texto de origem da fórmula pressionando Ctrl (Windows) ou Cmd (macOS) enquanto passa o mouse sobre a fórmula.

  • Quando as fórmulas tiverem nomes e forem exibidas como nomes, nenhuma dica será exibida como padrão. You can display the source text of the formula by pressing Ctrl (Windows) or Cmd (macOS) while hovering on the formula: [

Veja também

Download do banco de dados HDI
Usando comandos do tema Styled Text