Obsah

# Služba SFDocuments.FormDocument

Služba FormDocument umožňuje přistupovat k dokumentům formulářů uloženým v dokumentech LibreOffice Base.

V dokumentu aplikace Base lze stávající dokumenty formulářů zobrazovat v uživatelském rozhraní volbou Zobrazit - Formuláře. Každý dokument formulářů může obsahovat jeden či více formulářů, a to včetně hlavního formuláře a podformulářů.

Tato služba dědí metody a vlastnosti služby Document. Často se používá spolu se službam Base a Database.

Další informace o metodách a vlastnostech pro správu dokumentů LibreOffice naleznete na stránce Služba Document.

## Volání služby

Před používáním služby FormDocument je nutné načíst či naimportovat knihovnu ScriptForge pomocí:

• V makrech Basicu je nutné načíst knihovnu ScriptForge následujícím příkazem:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Ve skriptech Pythonu je nezbytné import z modulu scriptforge:
from scriptforge import CreateScriptService

##### V Basicu

Instanci služby FormDocument lze vytvořit voláním metody OpenFormDocument, která existuje jak ve službě Base, tak ve službě Database.

V následujícím příkladu se pomocí služby UI otevře dokument Base poté se z něj získá dokument formulářů. V tomto případě se otevře a na obrazovce zobrazí jak dokument Base, tak dokument formulářů.

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

V následujícím příkladu se pomocí služby Database otevře dokument formulářů. V tomto případě se soubor Base neotevře a zobrazí se pouze dokument formulářů.

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

Jestliže se zavolá metoda OpenFormDocument na již otevřený dokument formulářů, okno s tímto dokumentem se aktivuje a získá zaměření.

##### V Pythonu

Do Pythonu lze tyto příklady převést následovně:

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

Seznam metod služby FormDocument
CloseDocument Forms | GetDatabase | PrintOut

## CloseDocument

Zavře dokument formulářů, na který odkazuje instance FormDocument. V případě úspěšného uzavření dokumentu vrátí True.

### Syntaxe:

svc.CloseDocument(): bool

### Příklad:

##### V Basicu

        oFormDoc.CloseDocument()

##### V Pythonu

        formDoc.CloseDocument()

## Forms

Vrátí buď pole názvů hlavních formulářů, které dokument formulářů obsahuje, nebo instanci služby Form odkazující na zadaný formulář.

Voláním této metody bez argumentů získáte pole řetězců začínající od 0 s názvy všech formulářů, které dokument formulářů zahrnuje.

Zadáte-li jako argument název formuláře nebo index, získáte instanci služby Form, která zadanému formuláři odpovídá.

Dokument formulářů obsahuje alespoň jeden hlavní formulář. Komplexnější dokumenty se mohou skládat z více než jednoho formuláře a podformulářů.

### Syntaxe:

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

svc.Forms(form: str): svc

svc.Forms(form: int): svc

### Parametry:

form: Tímto argumentem může být buď řetězec s názvem formuláře, který se v dokumentu formulářů nachází, nebo index začínající od 0 pro formulář, který se má vrátit. Není-li tento argument zadán, vrátí se pole s názvy všech dostupných formulářů.

### Příklad:

##### V Basicu

V následujícím příkladu se kontroluje, zda dokument formulářů obsahuje formulář s názvem "MainForm":

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

V tomto příkladu se získá formulář s názvem "MainForm" a přesune se na poslední záznam:

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

##### V Pythonu

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

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

Další informace o metodách a vlastnostech formulářů naleznete na stránce služby Form.

### GetDatabase

Vrátí instanci objektu SFDatabases.Database, která poskytuje přístup ke spouštění SQL příkazů na databázi, ke které je aktuální formulář připojen nebo která je uložena v aktuálním dokumentu Base.

Každý formulář má své spojení s databází, výjimkou jsou dokumenty Base, kde všechny formuláře sdílí stejné spojení.

### Syntaxe:

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

### Parametry:

user, password: Nepovinné přihlašovací parametry (výchozí = "").

### Příklad:

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

##### V Pythonu

          db = form.GetDatabase()  # SFDatabases.Database

## PrintOut

Tato metoda odešle obsah dokumentu formulářů na výchozí tiskárnu nebo na tiskárnu určenou metodou SetPrinter.

V případě úspěšného odeslání na tiskárnu vrátí True.

### Syntaxe:

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

### Parametry:

pages: Stránky, které se mají vytisknout, jako řetězec. Tento argument se zadává stejně jako v uživatelském rozhraní (viz dialogové okno Soubor - Tisk), například: "1-4;10;15-18". Výchozí hodnotou je prázdný řetězec "", který způsobí tisk všech stránek.

copies: Počet vytištěných kopií (výchozí = 1).

printbackground: určuje, zda se má vytisknout obrázek na pozadí (výchozí = True).

printblankpages: určuje, zda se mají vytisknout prázdné stránky (výchozí = False).

printevenpages: určuje, zda se mají vytisknout sudé stránky (výchozí = True).

printoddpages: určuje, zda se mají vytisknout liché stránky (výchozí = True).

printimages: určuje, zda se mají vytisknout obrázky (výchozí = True).

### Příklad:

##### V Basicu

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

##### V Pythonu

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

Všechny procedury nebo identifikátory knihovny ScriptForge, které jsou uvozeny podtržítkem "_", jsou určeny pro interní použití. Není zamýšleno je používat v makrech Basicu nebo skriptech Pythonu.

Související témata

Služba SFDocuments.Base

Služba SFDatabases.Database

Služba SFDocuments.Document

Služba SFDocuments.Form

Služba ScriptForge.UI