Contenuto

# Servizio SFDocuments.FormDocument

Il servizio FormDocument consente di accedere ai formulari memorizzati nei documenti di LibreOffice Base.

In un documento di Base, i formulari esistenti possono essere visualizzati selezionando Visualizza - Formulari nell'interfaccia utente. Ogni formulario può essere composto da uno o più formulari, compresi quello principale e altri secondari.

Questo servizio eredita i metodi e le proprietà dal servizio Document e spesso viene affiancato dai servizi Base e Database .

Per saperne di più sui metodi e le proprietà da utilizzare per gestire i documenti di LibreOffice, fare riferimento al Servizio Document.

## Invocazione del servizio

Prima di usare il servizio FormDocument è necessario caricare o importare le librerie ScriptForge:

• Le macro in Basic richiedono il caricamento della libreria ScriptForge usando la seguente istruzione:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Gli script in Python richiedono un'importazione dal modulo scriptforge:
from scriptforge import CreateScriptService

##### In Basic

Un'istanza del servizio FormDocument può essere creata chiamando il metodo OpenFormDocument che esiste in entrambi i servizi Base e Database.

L'esempio sotto riportato usa il servizio UI per aprire un documento di Base e recuperare un formulario. Da notare che in questo esempio sia il documento di Base, sia il formulario saranno aperti e visualizzati sullo schermo.

        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()

L'esempio seguente usa il servizio Database per aprire il formulario. In questo caso, il documento di Base non sarà aperto e sarà visualizzato solamente il formulario.

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

Richiamando OpenFormDocument per un formulario già aperto si attiverà la finestra del documento alla quale sarà trasferito il fuoco.

##### In Python

Gli esempi qui sopra possono essere portati in Python come segue:

        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")

Elenco dei metodi del servizio FormDocument
CloseDocument Forms | GetDatabase | PrintOut

## CloseDocument

Chiude il formulario cui fa riferimento l'istanza di FormDocument. Restituisce True se il formulario viene chiuso correttamente.

### Sintassi:

svc.CloseDocument(): bool

### Esempio:

##### In Basic

        oFormDoc.CloseDocument()

##### In Python

        formDoc.CloseDocument()

## Forms

Restituisce una matrice con i nomi dei formulari principali contenuti nel documento o un'istanza del servizio Form che fa riferimento a uno specifico formulario.

Chiamare questo metodo senza argomenti per ottenere una matrice di stringhe, con indice a partire da zero, contenente i nomi di tutti i formulari contenuti nel formulario.

Fornire il nome di un formulario o il suo indice come argomento per ottenere un'istanza del servizio Form corrispondente al formulario specificato.

Il documento di un formulario contiene almeno un formulario principale. Documenti con formulari più complessi possono essere composti da più formulari e da formulari secondari.

### Sintassi:

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

svc.Forms(form: str): svc

svc.Forms(form: int): svc

### Parametri:

form: questo argomento può essere una stringa con il nome di un formulario esistente nel documento oppure l'indice, con base a partire da zero, del formulario da restituire. Se questo argomento non è specificato, viene restituito l'elenco dei nomi di tutti i formulari disponibili.

### Esempio:

##### In Basic

L'esempio seguente controlla se il documento contiene un formulario denominato "MainForm":

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

L'esempio seguente recupera il formulario denominato "MainForm" e lo posiziona sull'ultimo record:

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

##### In Python

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

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

Per saperne di più sui metodi e sulle proprietà dei formulari, fare riferimento alle pagine di aiuto del servizio Form.

### GetDatabase

Restituisce un'istanza di SFDatabases.Database che fornisce l'accesso per l'esecuzione di comandi SQL sul database a cui è connesso il formulario corrente e/o che è memorizzato nel documento corrente di Base.

Ogni formulario dispone di una propria connessione al database, fatta eccezione per i documenti di Base in cui tutti condividono la stessa connessione.

### Sintassi:

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

### Parametri:

user, password: I parametri opzionali di login (predefinito = "").

### Esempio:

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

##### In Python

          db = form.GetDatabase()  # SFDatabases.Database

## PrintOut

Questo metodo invia i contenuti del formulario alla stampante predefinita o a quella impostata dal metodo SetPrinter().

Restituisce True se il documento è stato inviato correttamente alla stampante.

### Sintassi:

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

### Parametri:

pages: le pagine da stampare in formato stringa. Questo argomento dovrebbe essere specificato nello stesso modo usato nell'interfaccia utente (vedere la finestra di dialogo File - Stampa). Esempio: "1-4;10;15-18". Il valore predefinito è una stringa vuota "" che comporta la stampa di tutte le pagine.

copies: il numero di copie da stampare (predefinito = 1).

printbackground: specifica se deve essere stampata l'immagine di sfondo (predefinito = True).

printblankpages: specifica se devono essere stampate le pagine vuote (predefinito = False).

printevenpages: specifica se devono essere stampate le pagine pari (predefinito = True).

printoddpages: specifica se devono essere stampate le pagine dispari (predefinito = True).

printimages: specifica se devono essere stampate le immagini (predefinito = True).

### Esempio:

##### In Basic

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

##### In Python

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

Tutte le routine e gli identificatori Basic di ScriptForge che iniziano con un carattere di sottolineatura "_" sono riservati per uso interno. Non è previsto il loro utilizzo nelle macro in Basic o negli script in Python.

Argomenti correlati

Servizio SFDocuments.Base

Servizio SFDatabases.Database

Servizio SFDocuments.Document

Servizio SFDocuments.Form

Servizio ScriptForge.UI