Saltar para o conteúdo principal
Versão: 20 R9 BETA

Print form

Print form ( {aTable ;} form {; formData} {; areaStart{; areaEnd}} ) : Integer

ParâmetroTipoDescrição
aTableTabelaTabela do formulário ou tabela padrão, se omitida
formText, ObjectNome (string) do formulário (projeto ou tabela), ou caminho POSIX (string) para um arquivo .json que descreve o formulário, ou um objeto que descreve o formulário a ser aberto
formDataObjectDados para associar ao formulário
areaStartIntegerMarcador de impressão ou Área inicial (se areaEnd for especificada)
areaEndIntegerÁrea final (se for especificado pela areaStart)
ResultadoIntegerAltura da seção impressa

Descrição

O comando Print form simplesmente imprime form com os valores atuais dos campos e variáveis de aTable. Normalmente é usado para imprimir relatórios muito complexos que exigem controle total sobre o processo de impressão. O formulário de impressão não faz nenhum processamento de registros, processamento de quebras ou quebras de página. Essas operações são de sua responsabilidade. Print form imprime campos e variáveis em um quadro de tamanho fixo apenas.

No parâmetro form, você pode passar:

  • o nome de um formulário, ou
  • o caminho (na sintaxe POSIX) para um arquivo .json válido que contém uma descrição do formulário a ser usado (consulte Caminho do arquivo de formulário), ou
  • um objeto contendo uma descrição do formulário.

Como Imprimir formulário não emite uma quebra de página após a impressão do formulário, é fácil combinar diferentes formulários na mesma página. Portanto, o Print form é perfeito para tarefas de impressão complexas que envolvam diferentes tabelas e diferentes formulários. Para forçar uma quebra de página entre os formulários, use o comando PAGE BREAK. Para transferir a impressão para a próxima página em um formulário cuja altura seja maior que o espaço disponível, chame o comando CANCEL antes do comando PAGE BREAK.

Três sintaxes diferentes podem ser usadas:

  • Impressão da área de detalhe

Sintaxe:

 height:=Print form(myTable;myForm)

Nesse caso, Imprimir formulário imprime apenas a área de detalhes (a área entre a linha do cabeçalho e a linha de detalhes) do formulário.

  • Impressão da área do formulário

Sintaxe:

 height:=Print form(myTable;myForm;marker)

Nesse caso, o comando imprimirá a seção designada pelo marker. Passe uma das constantes do tema Form Area no parâmetro do marcador:

ParâmetrosTipoValor
Form break0Integer300
Form break1Integer301
Form break2Integer302
Form break3Integer303
Form break4Integer304
Form break5Integer305
Form break6Integer306
Form break7Integer307
Form break8Integer308
Form break9Integer309
Form detailInteger0
Form footerInteger100
Form headerInteger200
Form header1Integer201
Form header10Integer210
Form header2Integer202
Form header3Integer203
Form header4Integer204
Form header5Integer205
Form header6Integer206
Form header7Integer207
Form header8Integer208
Form header9Integer209
  • Impressão da seção

Sintaxe:

 height:=Print form(myTable;myForm;areaStart;areaEnd)

Nesse caso, o comando imprimirá a seção incluída entre os parâmetros areaStart e areaEnd. Os valores inseridos devem ser expressos em pixels.

formData

Opcionalmente, é possível passar parâmetros para o form usando o objeto formData ou o objeto de classe de formulário instanciado automaticamente pelo 4D se você tiver associado uma classe de usuário ao formulário. Todas as propriedades do objeto de dados do formulário estarão disponíveis no contexto do formulário por meio do comando Form. O objeto de dados do formulário está disponível no evento de Detalhes de Impressão.

Para obter informações detalhadas sobre o objeto de dados do formulário, consulte o comando DIALOG.

Valor retornado

O valor retornado por Print form indica a altura da área impressa. Esse valor será automaticamente levado em conta pelo comando Get printed height.

As caixas de diálogo da impressora não são exibidas quando você usa Print form. O relatório não usa as configurações de impressão que foram atribuídas ao formulário no ambiente Design. Há duas maneiras de especificar as configurações de impressão antes de emitir uma série de chamadas para Print form:

Print form* cria cada página impressa na memória. Cada página é impressa quando a página na memória está cheia ou quando você chama [PAGE BREAK] (../commands-legacy/page-break.md). Para garantir a impressão da última página após qualquer uso de formulário de impressão, você deve concluir com o comando PAGE BREAK (exceto no contexto de um ABERTO PRINTING JOB, ver nota). Caso contrário, se a última página não estiver cheia, ela permanecerá na memória e não será impressa.

Aviso: Se o comando for chamado no contexto de um trabalho de impressão aberto com OPEN PRINTING JOB, você NÃO deve chamar PAGE BREAK para a última página porque ela é impressa automaticamente pelo comando CLOSE PRINTING JOB. Se você chamar PAGE BREAK nesse caso, uma página em branco será impressa.

Esse comando imprime áreas e objetos externos (por exemplo, áreas 4D Write ou 4D View). A área é redefinida para cada execução do comando.

Aviso: Os subformulários não são impressos com Imprimir formulário. Para imprimir apenas um formulário com esses objetos, use PRINT RECORD em vez disso.

Print form gera apenas um evento On Printing Detail para o método formulário.

4D Server: Esse comando pode ser executado no 4D Server dentro da estrutura de um procedimento armazenado. Neste contexto:

  • Certifique-se de que nenhuma caixa de diálogo seja exibida no computador do servidor (exceto por um requisito específico).
  • No caso de um problema relacionado à impressora (falta de papel, impressora desconectada, etc.), nenhuma mensagem de erro é gerada.

Exemplo 1

O exemplo a seguir funciona como um comando PRINT SELECTION. No entanto, o relatório usa um de dois formulários diferentes, dependendo se o registro é de um cheque ou de um depósito:

 QUERY([Register]) // Selecionar os registros
 If(OK=1)
    ORDER BY([Register]) // Ordenar os registros
    If(OK=1)
       PRINT SETTINGS // Exibir caixas de diálogo de impressão
       If(OK=1)
          For($vlRecord;1;Records in selection([Register]))
             If([Register]Type ="Check")
                Print form([Register];"Check Out") // Use um formulário para cheques
             Else
                Print form([Register];"Deposit Out") // Use outro formulário para depósitos
             End if
             NEXT RECORD([Register])
          End for
          PAGE BREAK // Certifique-se de que a última página seja impressa
       End if
    End if
 End if

Exemplo 2

Consulte o exemplo do comando SET PRINT MARKER.

Exemplo 3

Esse formulário é usado como diálogo e depois impresso com modificações:

O método formulário:

 If(Form event code=On Printing Detail)
    Form.lastname:=Uppercase(Form.lastname)
    Form.firstname:=Uppercase(Substring(Form.firstname;1;1))+Lowercase(Substring(Form.firstname;2))
    Form.request:=Lowercase(Form.request)
 End if

O código que chama a caixa de diálogo imprime seu corpo:

 $formData:=New object
 $formData.lastname:="Smith"
 $formData.firstname:="john"
 $formData.request:="I need more COFFEE"
 $win:=Open form window("Request_obj";Plain form window;Horizontally centered;Vertically centered)
 DIALOG("Request_obj";$formData)
 $h:=Print form("Request_var";$formData;Form detail)

Veja também

CANCEL
PAGE BREAK
PRINT SETTINGS
SET PRINT OPTION

Propriedades

Número de comando5
Thread safe