Edukiak

# SFDocuments.Form zerbitzua

Form zerbitzuak LibreOffice dokumentuetako inprimakiak kudeatzeko metodoak eta propietateak eskaintzen ditu. Zerbitzu horrek Base, Calc eta Writer dokumentuetako inprimakiak onartzen ditu eta honakoak egiteko balio du:

- Ireki eta aktibatu inprimakiak.

- Nabigatu inprimakian erakutsitako erregistro batetik bestera.

- Atzitu inprimakian dauden kontrolak.

- Atzitu inprimaki guraso baten azpinprimakiak.

SFDocuments.Form zerbitzua LibreOffice 7.2 bertsiotik aurrera dago erabilgarri.

Inprimakien erabilera normalean LibreOffice dokumentuetan datu-base erlazionalei konektatutako erabiltzaile-interfazeak sortzeko izan ohi da. Horregatik, Form zerbitzuak estekatutako datu-basea atzitzeko modu azkar bat eskaintzen du SFDatabases.Database zerbitzuaren bidez.

SFDocuments.Form zerbitzuak erlazio estua du SFDocuments.FormControl zerbitzuarekin.

## Definizioak

### FormDocument

Inprimakiak Base dokumentuetan sortzen dira normalean, baina Writer eta Calc dokumentuetan ere sortu daitezke.

Base aplikazioan, Txertatu - Inprimakia funtzionaltasuna erabilita edo inprimakien morroiaren bidez sortutako inprimakiak FormDocument elementuak dira, eta hortaz, Form zerbitzuaren bidez maneiatu daitezke. Base dokumentuek inprimaki-dokumentu kopuru mugagabea eduki dezakete.

Beheko adibidean, Base dokumentu bateko inprimakiak eta azpinprimakiak atzitzeko erabili behar diren elementu guztien hierarkia erakusten da. Demagun Employees.odb izeneko Base dokumentu bat duzula, eta barruan, datu-baseari langileak gehitzeko inprimaki-dokumentu bat sortu duzula. Inprimaki-dokumentuak EmployeeData izeneko inprimaki nagusi bat du, taula batera sartzeko erabili daitekeena. Bestalde, WorksAtPlant izeneko azpinprimaki bat dago langile berri bakoitza enpresaren kokaleku bati lotzeko.

        Employees.odb (Base dokumentua)
         |
         |-- AddEmployee (FormDocument)
              |
              |-- EmployeeData (inprimaki nagusia)
                   |
                   |-- WorksAtPlant (SubForm)

FormDocument bat zera da, LibreOffice dokumentuetatik datu-baseen taulak eta kontsultak bezalako datu multzoetan sartzea ahalbidetzen duten inprimaki sortak. FormDocument bateko inprimakien eta azpinprimakien izenak atzitzeko, erabili inprimakien nabigatzailea.

### Inprimakiak eta azpinprimakiak

Inprimaki-dokumentu bat inprimaki batez edo hainbatez osatuta dago, eta horiek, aldi berean, hainbat azpinprimaki eduki ditzakete. Inprimaki bat kontrolen multzo abstraktu bat da, datu-iturburu zehatz batekin lotuta dagoena. Datu-iturburu hori datu-base baten taula bat, kontsulta bat edo SELECT instrukzio bat izan daiteke.

Calc eta Writer dokumentuetan, inprimaki bakoitza datu-base anitzetan dauden datu multzoei egon daitezke lotuta. Bestalde, Base dokumentuetan, dokumentuak duen datu-basea amankomuna da inprimaki guztietarako.

SFDocuments.Form zerbitzuari deitzeko, begiratu SFDocuments.Document zerbitzuaren Forms(), FormDocuments() eta OpenFormDocument() metodoak.

## Zerbitzuari deitzea

Form zerbitzua erabili ahal izateko, ScriptForge liburutegia kargatu edo inportatu behar da:

• Basic makroak erabiltzkeo, ScriptForge liburutegia kargatu behar da honako instrukzioa erabiliz:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Python scriptak erabiltzeko, berriz, scriptforge modulu baten inportazioa behar dute:
from scriptforge import CreateScriptService

### Writer dokumentuetan

Beheko kode-zatiak erakusten du Writer fitxategi baten barruan dagoen Form1 izeneko inprimaki bat nola atzitu daitekeen:

          Dim oDoc As Object, myForm As Object, ui as Object
          Set ui = CreateScriptService("UI")
          Set oDoc = ui.OpenDocument("/home/user/Documents/MyForm.odt")
          Set myForm = oDoc.Forms("Form1")

##### Python lengoaian

         from scriptforge import CreateScriptService
         ui = CreateScriptService('UI')
         doc = ui.OpenDocument('/home/user/Documents/MyForm.odt')
         my_form = doc.Forms('Form1')

Inprimakiak atzitzeko, beren izenak edo beren indizeak erabili daitezke, behean erakusten den moduan:

         Set myForm = oDoc.Forms(0)

##### Python lengoaian

         my_form = doc.Forms(0)

Diseinu-moduan irekita dagoen FormDocument bat atzitzen saiatuz gero, salbuespen bat sortuko da.

### Calc dokumentuetan

Calc fitxategi batean, inprimaki batek izen bakarra eduki behar du orriaren barruan. Horregatik, Forms metodoak bi argumentu behar ditu, lehena orriaren izena adierazteko eta bigarrena inprimakiaren izena.

          Dim oDoc As Object, myForm As Object, ui as Object
          Set ui = CreateScriptService("UI")
          Set oDoc = ui.OpenDocument("/home/user/Documents/MyForms.ods")
          Set myForm = oDoc.Forms("Sheet1", "Form1")

Python erabilita modu berean egiten da:

         ui = CreateScriptService('UI')
         doc = ui.OpenDocument('/home/user/Documents/MyForms.ods')
         my_form = doc.Forms('Sheet1', 'Form1')

### Base dokumentuetan

Base dokumentuetan, FormDocument elementuak izenaren bidez atzitzen dira. Hurrengo adibidean, thisFormDocument izeneko inprimaki-dokumentu bat irekitzen da eta MainForm inprimakia atzitzen da:

          Dim oDb As Object, myForm As Object
          Set oDb = CreateScriptService("SFDocuments.Document", ThisDatabaseDocument)
          ' Beheko instrukzioa inprimakia ireki gabe badago soilik da beharrezkoa
          oDb.OpenFormDocument("thisFormDocument")
          Set myForm = oDoc.Forms("thisFormDocument", "MainForm")
          ' Edo, bestela, inprimakia bere indizearen bidez atzitzeko...
          Set myForm = oDb.Forms("thisFormDocument", 0)

Form zerbitzuaren bidez inprimaki batean edozein ekintza gauzatzeko, FormDocument elementuak irekita egon behar du, bai eskuz bai programazio bidez erabiltzaile-script batekin. Azken modu hori erabiltzeko, erabili Base zerbitzuaren OpenFormDocument metodoa.

Inprimaki baten azpinprimaki jakin batean sartzeko, erabili SubForms metodoa. Kontuan izan beheko adibidean mySubForm instantzia Form zerbitzuaren instantzia bat dela.

         Dim mySubForm As Object
         Set mySubForm = myForm.SubForms("mySubForm")

Aurreko adibideak honelakoak izango lirateke Python erabilita:

         db = CreateScriptService('SFDocuments.Document', XSCRIPTCONTEXT.getDocument())
         # Beheko instrukzioa inprimakia ireki gabe badago soilik da beharrezkoa
         form_doc = db.OpenFormDocument('thisFormDocument')
         form = form_doc.Forms('thisFormDocument', 'MainForm')
         # Edo, bestela, inprimakia bere indizearen bidez atzitzeko...
         form = form_doc.Forms('thisFormDocument', 0)
         sub_form = form.SubForms('mySubForm')

### Inprimaki-gertaeretan

Inprimaki-gertaera bat dagoenean Form zerbitzuari deitzeko:

          Sub OnEvent(ByRef poEvent As Object)
              Dim myForm As Object
              Set myForm = CreateScriptService("SFDocuments.FormEvent", poEvent)
              '(...)
          End sub

##### Python lengoaian

         def OnEvent(event: uno):
             form = CreateScriptService('SFDocuments.FormEvent', event)
             pass

FormEvent zerbitzua inprimaki- edo kontrol-gertaera bat gertatzen denean SFDocuments.Form eta SFDocuments.FormControl zerbitzuen instantziak sortzeko besterik ez da erabiltzen.

Gomendagarria da baliabideak askatzea 'Form' zerbitzua erabili ondoren.

         myForm.Dispose() ' Basic

         form.Dispose()  # Python

Eragiketa hori inplizituki gauzatzen da inprimaki-dokumentu bat behean deskribatutako CloseFormDocument() metodoarekin ixten denean.

## Propietateak

Izena | Irakurtzeko soilik | Mota | Deskribapena
--- | --- | --- | ---
AllowDeletes | Ez | Boolean | Inprimakiak erregistroak ezabatzea ahalbidetzen duen zehazten du.
AllowInserts | Ez | Boolean | Inprimakiak erregistroak gehitzea ahalbidetzen duen zehazten du.
AllowUpdates | Ez | Boolean | Inprimakiak erregistroak eguneratzea ahalbidetzen duen zehazten du.
BaseForm | Bai | String | Uneko inprimakia duen Base inprimakiaren izen hierarkikoa zehazten du.
Bookmark | Ez | Variant | Inprimakiaren azpiko taulako, kontsultako edo SQL instrukzioko uneko erregistroa unibokoki zehazten du.
CurrentRecord | Ez | Long | Inprimaki batean bistaratzen ari den datu multzoko uneko erregistroa identifikatzen du. Errenkadaren zenbakia positiboa bada, kurtsorea emandako errenkada-zenbakira joango da, emaitza multzoaren hasieratik hasita. Errenkada kopuruaren zenbaketa 1 zenbakian hasten da. Emandako errenkada-zenbakia negatiboa bada, kurtsorea posizio absolutu batera joango da emaitza multzoaren amaieratik hasita. Emaitza multzoaren azken errenkada -1 da.
Filter | Ez | String | SQL WHERE klausula gisa (WHERE gako-hitzik gabe) bistaratuko den erregistro azpimultzo bat zehazten du.
LinkChildFields | Bai | String | Azpinprimaki haur baten erregistroak inprimaki gurasoaren erregistroekin nola dauden lotuta zehazten du.
LinkParentFields | Bai | String | Azpinprimaki haur baten erregistroak inprimaki gurasoaren erregistroekin nola dauden lotuta zehazten du.
Name | Bai | String | Uneko inprimakiaren izena.
OrderBy | Ez | String | SQL ORDER BY klausula modura (ORDER BY gako-hitzak gabe) erregistroak zein ordenatan bistaratuko diren zehazten du.
Parent | Bai | Object | Uneko inprimakiaren gurasoa SFDocuments.Form bat edo SFDocuments.Document objektu bat izan daiteke.
RecordSource | Ez | String | Datuen iturburua zehazten du: taularen izena, kontsultaren izena edo SQL instrukzioa.
XForm | Bai | UNO objektua | Inprimakiarekin izango diren elkarrekintzak ordezkatzen dituen UNO objektua. Begiratu APIaren dokumentazioko XForm etaDataForm informazio gehiagorako.

## Gertaeraren propietateak

Beheko propietateek gertaerak abiarazitako scripta definitzen duten URI kateak itzultzen edo ezartzen dituzte.

Izena | Irakurtzeko soilik | Basic IDEaren deskribapena
--- | --- | ---
OnApproveCursorMove | Ez | Erregistroa aldatu aurretik
OnApproveParameter | Ez | Bete parametroak
OnApproveReset | Ez | Berrezarri aurretik
OnApproveRowChange | Ez | Erregistro-ekintzaren aurretik
OnApproveSubmit | Ez | Bidali aurretik
OnConfirmDelete | Ez | Ezabatzea berrestean
OnCursorMoved | Ez | Erregistroa aldatu ondoren
OnErrorOccurred | Ez | Errorea gertatzean
OnLoaded | Ez | Kargatzean
OnReloaded | Ez | Birkargatzean
OnReloading | Ez | Birkargatu aurretik
OnResetted | Ez | Berrezarri ondoren
OnRowChanged | Ez | Erregistro-ekintzaren ondoren
OnUnloaded | Ez | Deskargatzean
OnUnloading | Ez | Deskargatu aurretik

URI kateei buruzko informazio gehiago jasotzeko, begiratu scriptgintzako lan-markoaren URI espezifikazioa.

'Form' zerbitzuaren metodoen zerrenda
Activate CloseFormDocument Controls GetDatabase | MoveFirst MoveLast MoveNext MoveNew | MovePrevious Requery SubForms

## Activate

Fokua uneko Form instantzian ezartzen du. True itzultzen du fokuratzea ongi gauzatu bada.

Activate metodoaren portaera inprimakia dagoen dokumentuaren motaren araberakoa izango da.

- Writer dokumentuetan: Fokua dokumentu horretan ezartzen du.

- Calc dokumentuetan: Fokua inprimakiaren jabea den orrian jartzen du.

- In Base dokumentuetan: Fokua Form instantziak erreferentzia egiten dion FormDocument elementuan ezartzen du.

### Sintaxia:

svc.Activate(): bool

### Adibidea:

Hurrengo adibidean, unean irekitako Calc fitxategiko Sheet1 orrian dagoen FormA inprimakia aktibatzen da. Lehenengo, dokumentua atzitzen da Document zerbitzua eta ThisComponent erabiliz, eta ondoren inprimakia aktibatzen da.

         'Aktibatuko den inprimakia harrapatzen du
         Dim oDoc as Object, myForm as Object
         Set oDoc = CreateScriptService("Document", ThisComponent)
         Set myForm = oDoc.Forms("Sheet1", "FormA")
         'Inprimakia aktibatzen du
         myForm.Activate()

##### Python lengoaian

         doc = CreateScriptService('Document', XSCRIPTCONTEXT.getDocument())
         form = doc.Forms('Sheet1', 'FormA')
         form.Activate()

ThisComponent Calc eta Writer dokumentuetarako da. Base dokumentuetarako, erabili ThisDataBaseDocument.

## CloseFormDocument

Uneko Form instantzia duen inprimaki-dokumentua ixten du. Form instantzia bota egiten da.

### Sintaxia:

svc.CloseFormDocument(): bool

### Adibidea:

          myForm.CloseFormDocument() ' Basic

##### Python lengoaian

          form.CloseFormDocument()  # Python

Metodo honek Base dokumentuetan kokatutako inprimaki-dokumentuak soilik ixten ditu. Inprimakia Writer edo Calc dokumentu batean badago, CloseFormDocument deitzeak ez du eraginik izango.

## Controls

Controls metodoak itzuliko duen balioa emandako argumentuen araberakoa izango da:

- Metodoari argumenturik gabe deitzen bazaio, inprimakiak dituen kontrolen zerrenda itzuliko du. Kontuan izan zerrenda horrek ez duela azpinprimakietako kontrolik izango.

- Aukerakoa den ControlName argumentua ematen bada, metodoak kontrol zehatz horri erreferentzia egiten dion FormControl klase-instantzia bat itzuliko du.

### Sintaxia:

svc.Controls(opt controlname: str): any

### Parametroak:

controlname: Baliozko kontrol-izen bat, maiskulak/minuskulak bereizten dituen kate gisa. Ez badago, kontrol-izenen zerrenda zeron oinarritutako matrize gisa itzuliko da.

### Adibidea:

          Dim myForm As Object, myList As Variant, myControl As Object
          Set myForm = myDoc.Forms("myForm")
          myList = myform.Controls()
          Set myControl = myform.Controls("myTextBox") ' SFDocuments.FormControl

##### Python lengoaian

          form = doc.Forms('myForm')
          form_names = form.Controls()
          form_control = form.Controls('myTextBox')  # SFDocuments.FormControl

## GetDatabase

Itzuli SFDatabases.Database instantzia bat, uneko Base dokumentuan biltegiratuta dagoen edota uneko inprimakiarekin konektatuta dagoen datu-basearen gaineko SQL komandoak exekutatu ahal izateko.

Inprimaki bakoitzak datu-basearen bere konexio propioa dauka, Base dokumentuek salbu, horiek denek konexio bera partekatzen baitute.

### Sintaxia:

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

### Parametroak:

user, password: Saioa hasteko parametroak, aukerakoak (lehenetsia = "").

### Adibidea:

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

##### Python lengoaian

          db = form.GetDatabase()  # SFDatabases.Database

## MoveFirst

Inprimaki-kurtsorea lehen erregistroan kokatzen da. True itzultzen du ekintza ongi gauzatzen bada.

### Sintaxia:

svc.MoveFirst(): bool

### Adibidea:

          myForm.MoveFirst() ' Basic

##### Python lengoaian

          form.MoveFirst()  # Python

## MoveLast

Inprimaki-kurtsorea azken erregistroan kokatzen da. True itzultzen du ekintza ongi gauzatzen bada.

### Sintaxia:

svc.MoveLast(): bool

### Adibidea:

          myForm.MoveLast() ' Basic

##### Python lengoaian

          form.MoveLast()  # Python

## MoveNew

Inprimaki-kurtsorea erregistro berriaren arean kokatzen da. True itzultzen du ekintza ongi gauzatzen bada.

### Sintaxia:

svc.MoveNew(): bool

### Adibidea:

          myForm.MoveNew() ' Basic

##### Python lengoaian

          form.MoveNew()  # Python

## MoveNext

Inprimaki-kurtsorea hurrengo erregistroan kokatzen da. True itzultzen du ekintza ongi gauzatzen bada.

### Sintaxia:

svc.MoveNext(opt offset: int): bool

### Parametroak:

offset: Zenbat erregistro egingo den aurrera (lehenetsia = 1).

### Adibidea:

          myForm.MoveNext() ' Basic

##### Python lengoaian

          form.MoveNext()  # Python

## MovePrevious

Inprimaki-kurtsorea aurreko erregistroan kokatzen da. True itzultzen du ekintza ongi gauzatzen bada.

### Sintaxia:

svc.MovePrevious(opt offset: int): bool

### Parametroak:

offset: Zenbat erregistro egingo den atzera (lehenetsia = 1).

### Adibidea:

          myForm.MovePrevious() ' Basic

          form.MovePrevious()  # Python

## Requery

Uneko datuak birkargatzen ditu datu-basetik eta inprimakia freskatzen du. Inprimaki-kurtsorea lehen erregistroan kokatzen da. True itzultzen du ekintza ongi gauzatzen bada.

### Sintaxia:

svc.Requery(): bool

### Adibidea:

          myForm.Requery() ' Basic

##### Python lengoaian

          form.Requery()  # Python

## Subforms

Subforms metodoak itzuliko duen balioa emandako argumentuen araberakoa izango da:

- Metodoa argumenturik gabe deitzen bada, uneko inprimakian edo azpinprimaki-instantzian dauden azpinprimakien zerrenda itzuliko du.

- Aukerakoa den subform argumentua ematen bada, metodoak SFDocuments.Form instantzia berri bat itzuliko du, zehaztutako inprimakiaren/azpinprimakiaren izenean edo indizean oinarrituta.

### Sintaxia:

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

svc.Subforms(subform: str): svc

svc.Subforms(subform: int): svc

### Parametroak:

subform: Uneko Form klase-instantzia biltegiratutako azpinprimaki bat, bere izenaren edo indizearen bidez emandakoa.

Argumentu hau falta bada, metodoak erabilgarri dauden azpinprimakien zerrenda bat itzuliko du, zeron oinarritutako matrize gisa. Inprimakiak azpinprimaki bakarra badu, subform = 0 ezarri daiteke hura atzitzeko.

### Adibidea:

          Dim myForm As Object, myList As Variant, mySubform As Object
          myList = myform.Subforms()
          Set mySubform = myForm.Subforms("mySubform") ' SFDocuments.Form

##### Python lengoaian

          subform_names = form.Subforms()
         subform = form.Subforms('mySubform')  # SFDocuments.Form

Azpimarraren karaktere bat, "_", aurrizki gisa duten ScriptForge Basic errutina edo identifikatzaile guztiak barneko erabilerarako erreserbatuta daude. Ez dira Basic makroetan edo Python scriptetan erabili behar.

Erlazionatutako gaiak

SFDatabases.Database zerbitzua

SFDocuments.Document zerbitzua

ScriptForge.UI zerbitzua