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

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.

tip

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:

note

• 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)
   
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("/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)
   
note

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
   
note

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


tip

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.

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

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:

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
   
warning

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.


Emaguzu laguntza!