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:

tip

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.

tip

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

A FormDocument can be seen as a set of forms that provide access to datasets such as database tables and queries from within LibreOffice documents. The names of forms and subforms inside a FormDocument can be accessed using the Form Navigator.


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.

tip

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


Zerbitzuari deitzea

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("~/Documents/MyForm.odt")
      Set myForm = oDoc.Forms("Form1")
   
Python lengoaian

     from scriptforge import CreateScriptService
     svc = CreateScriptService('UI') 
     doc = svc.OpenDocument('~/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)
   
warning

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("~/Documents/MyForms.ods")
      Set myForm = oDoc.Forms("Sheet1", "Form1")
   

Python erabilita modu berean egiten da:


     svc = CreateScriptService('UI')
     doc = svc.OpenDocument('~/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)
   
note

To perform any action on a form using the Form service, the FormDocument must have been opened either manually by the user or programmatically in a user script. The latter can be done by calling the OpenFormDocument method of the Base service.


To access a given subform of a form use the SubForms method. Note that in the example below mySubForm is a new instance of the Form service.


     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
   
note

The FormEvent service is used exclusively to create instances of the SFDocuments.Form and SFDocuments.FormControl services when a form or control event takes place.


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


tip

URI kateei buruz gehiago jakiteko, begiratu scriptgintza 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.

Sintaxia:

svc.Activate(): bool

Adibidea:

The following example assumes you want to activate the form named FormA located in Sheet1 of the currently open Calc file. It first gets access to the document using the Document service and ThisComponent and then activates the form.


     'Gets hold of the form that will be activated
     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()
   
note

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
   
note

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:

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

Return a SFDatabases.Database instance giving access to the execution of SQL commands on the database the current form is connected to and/or that is stored in the current Base document.

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:

Sintaxia:

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

svc.Subforms(subform: str): svc

svc.Subforms(subform: int): svc

Parametroak:

subform: A subform stored in the current Form class instance given by its name or index.

When this argument is absent, the method returns a list of available subforms as a zero-based array. If the form has a single subform, you can set subform = 0 to get access to it.

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
   
warning

Aurrizki gisa azpimarra bat ("_") duten ScriptForge Basic errutina edo identifikatzaile guztiak barneko erabilerarako erreserbatuta daude. Ez daude Basic makroetan erabiltzeko pentsatuta.