Sumário

# Serviço SFDocuments.FormDocument

O serviço FormDocument permite acessar documentos de formulário armazenados em documentos do LibreOffice Base.

Em um documento Base, os documentos de formulário existentes podem ser visualizados selecionando Exibir - Formulários na interface do usuário. Cada documento de formulário pode ser composto por um ou mais formulários, incluindo o formulário principal e outros subformulários.

Este serviço herda métodos e propriedades do serviço Document e é frequentemente usado junto com os serviços Base e Database.

Consulte o serviço Document para saber mais sobre métodos e propriedades que podem ser usado para gerenciar documentos do LibreOffice.

## Invocação do serviço

Antes de usar o serviço FormDocument a biblioteca ScriptForge precisa ser carregada ou importada:

• Macros BASIC precisam carregar a biblioteca ScriptForge usando a seguinte instrução:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Scripts Python exigem uma importação do módulo scriptforge:
from scriptforge import CreateScriptService

##### Em Basic

Uma instância do serviço FormDocument pode ser criada chamando o método OpenFormDocument que existe nos serviços Base e Database.

O exemplo abaixo usa o serviço UI para abrir um documento Base e então recuperar um documento de formulário. Observe que neste exemplo tanto o documento Base quanto o documento formulário serão abertos e exibidos na tela.

        Dim ui As Object, oBase As Object, oFormDoc As Object
        ui = CreateScriptService("UI")
        oBase = ui.OpenBaseDocument("C:\Documents\MyDatabase.odb")
        oFormDoc = oBase.OpenFormDocument("MyFormDocument")
        ' ...
        oFormDoc.CloseDocument()

O exemplo a seguir usa o serviço Database para abrir o documento de formulário. Neste caso, o arquivo Base não será aberto e apenas o documento de formulário será mostrado.

        Dim oDatabase As Object, oFormDoc As Object
        oDatabase = CreateScriptService("Database", "C:\Documents\MyDatabase.odb")
        oFormDoc = oDatabase.OpenFormDocument("MyFormDocument")

Chamar OpenFormDocument para um documento de formulário que já está aberto ativará a janela do documento e a colocará em foco.

##### Em Python

Os exemplos acima podem ser traduzidos para Python da seguinte maneira:

        ui = CreateScriptService("UI")
        baseDoc = ui.OpenBaseDocument("C:\Documents\MyDatabase.odb")
        formDoc = baseDoc.OpenFormDocument("MyFormDocument")
        # ...
        formDoc.CloseDocument()

        database = CreateScriptService("Database", "C:\Documents\MyDatabase.odb")
        formDoc = database.OpenFormDocument("MyFormDocument")

Lista de Métodos do Serviço FormDocument
CloseDocument Forms | GetDatabase | PrintOut

## CloseDocument

Fecha o documento de formulário referido pela instância FormDocument. Retorna True se o documento de formulário foi fechado com sucesso.

### Sintaxe:

svc.CloseDocument(): bool

### Exemplo:

##### Em Basic

        oFormDoc.CloseDocument()

##### Em Python

        formDoc.CloseDocument()

## Forms

Retorna um array com os nomes dos formulários principais contidos no documento de formulário ou uma instância do serviço Form referente a um formulário específico.

Chame este método sem argumentos para obter uma lista de strings iniciada em zero com os nomes de todos os formulários contidos no documento de formulário.

Forneça um nome de formulário ou índice como argumento para obter uma instância de serviço Form correspondente ao formulário especificado.

Um documento de formulário possui pelo menos um formulário principal. Documentos de formulários mais complexos podem ser compostos por mais de um formulário e subformulários.

### Sintaxe:

svc.Forms(): str[0..*]

svc.Forms(form: str): svc

svc.Forms(form: int): svc

### Parâmetros:

form: Este argumento pode ser uma string com o nome de um formulário que existe no documento de formulário ou o índice do formulário que deve ser retornado (iniciando em zero). Se este argumento não for especificado, será retornado um array com o nome de todos os formulários disponíveis.

### Exemplo:

##### Em Basic

O exemplo a seguir verifica se o documento de formulário contém um formulário chamado "MainForm":

        arrForms = oFormDoc.Forms()
        If SF_Array.Contains(arrForms, "MainForm") Then
            ' ...
        End If

O exemplo abaixo recupera o formulário "MainForm" e move sua posição para o último registro:

        Dim oForm As Object
        oForm = oFormDoc.Forms("MainForm")
        oForm.MoveLast()

##### Em Python

        arrForms = formDoc.Forms()
        if "MainForm" in arrForms:
            # ...

        form = formDoc.Forms("MainForm")
        form.MoveLast()

Para saber mais sobre métodos e propriedades de formulário, consulte a página de ajuda do serviço Form.

### GetDatabase

Retorna uma instância do serviço SFDatabases.Database permitindo a execução de comandos SQL no banco de dados que o formulário atual está conectado e/ou está armazenado no documento Base atual.

Cada formulário tem sua própria conexão de banco de dados, exceto documentos Base onde todos compartilham a mesma conexão.

### Sintaxe:

svc.GetDatabase(opt user: str, opt password: str): svc

### Parâmetros:

user, password: Parâmetros opcionais de login (Padrão = "").

### Exemplo:

          Dim myDb As Object ' SFDatabases.Database
          Set myDb = oForm.GetDatabase()

##### Em Python

          db = form.GetDatabase()  # SFDatabases.Database

## PrintOut

Este método envia o conteúdo do documento para a impressora padrão ou para a impressora definida pelo método SetPrinter.

Retorna True se o documento foi enviado à impressora com sucesso.

### Sintaxe:

svc.PrintOut(pages: str = "", copies: int = 1, printbackground: bool = true, printblankpages: bool = false, printevenpages: bool = true, printoddpages: bool = true, printimages: bool = true): bool

### Parâmetros:

pages: as páginas a serem impressas como uma string. Este argumento deve ser especificado da mesma maneira que na interface do usuário (veja a caixa de diálogo Arquivo - Imprimir). Exemplo: "1-4;10;15-18". O valor padrão é uma string vazia "", o que fará com que todas as páginas sejam impressas.

copies: O número de cópias a serem impressas (padrão = 1).

printbackground: especifica se a imagem de fundo deve ser impressa (Default = True).

printblankpages: especifica se páginas em branco devem ser impressas (Padrão = False).

printevenpages: especifica se páginas pares devem ser impressas (Padrão = True).

printoddpages: especifica se páginas ímpares devem ser impressas (Padrão = True).

printimages: especifica se as imagens devem ser impressas (Padrão = True).

### Exemplo:

##### Em Basic

        oFormDoc.PrintOut("1-4", Copies := 2, PrintBackground := False)

##### Em Python

        formDoc.PrintOut("1-4", copies = 2, printbackground = False)

Todas as rotinas ou identificadores do ScriptForge em Basic que possuem o caractere "_" como prefixo são reservadas para uso interno. Elas não devem ser usadas em macros escritas em Basic ou em Python.

Tópicos relacionados

Serviço SFDocuments.Base

Serviço SFDatabases.Database

Serviço SFDocuments.Document

Serviço SFDocuments.Form

Serviço ScriptForge.UI

♥ Doe para nosso projeto! ♥