LibreOffice 25.2 laguntza
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.
Inprimakiak Base dokumentuetan sortzen dira normalean, baina Writer eta Calc dokumentuetan ere sortu daitezke.
Base aplikazioan, 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.
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.
Form zerbitzua erabili ahal izateko, ScriptForge liburutegia kargatu edo inportatu behar da:
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")
   
     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)
   
     my_form = doc.Forms(0)
   Diseinu-moduan irekita dagoen FormDocument bat atzitzen saiatuz gero, salbuespen bat sortuko da.
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, 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-gertaera bat dagoenean Form zerbitzuari deitzeko:
      Sub OnEvent(ByRef poEvent As Object)
          Dim myForm As Object
          Set myForm = CreateScriptService("SFDocuments.FormEvent", poEvent)
          '(...)
      End sub
   
     def OnEvent(event: uno):
         form = CreateScriptService('SFDocuments.FormEvent', event)
         pass
   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.
| 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 | Inprimakiarekin izango diren elkarrekintzak ordezkatzen dituen UNO objektua. Begiratu APIaren dokumentazioko XForm etaDataForm informazio gehiagorako. | 
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 | ||
|---|---|---|
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.
svc.Activate(): bool
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()
   
     doc = CreateScriptService('Document', XSCRIPTCONTEXT.getDocument())
     form = doc.Forms('Sheet1', 'FormA')
     form.Activate()
   ThisComponent Calc eta Writer dokumentuetarako da. Base dokumentuetarako, erabili ThisDataBaseDocument.
This method is deprecated, use ScriptForge.FormDocument.CloseDocument method instead.
Uneko Form instantzia duen inprimaki-dokumentua ixten du. Form instantzia bota egiten da.
svc.CloseFormDocument(): bool
      myForm.CloseFormDocument() ' Basic
   
      form.CloseFormDocument()  # Python
   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.
svc.Controls(opt controlname: str): any
controlname: Baliozko kontrol-izen bat, maiskulak/minuskulak bereizten dituen kate gisa. Ez badago, kontrol-izenen zerrenda zeron oinarritutako matrize gisa itzuliko da.
      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
   
      form = doc.Forms('myForm')
      form_names = form.Controls()
      form_control = form.Controls('myTextBox')  # SFDocuments.FormControl
   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.
svc.GetDatabase(opt user: str, opt password: str): svc
user, password: Saioa hasteko parametroak, aukerakoak (lehenetsia = "").
      Dim myDb As Object ' SFDatabases.Database
      Set myDb = oForm.GetDatabase()
   
      db = form.GetDatabase()  # SFDatabases.Database
   Inprimaki-kurtsorea lehen erregistroan kokatzen da. True itzultzen du ekintza ongi gauzatzen bada.
svc.MoveFirst(): bool
      myForm.MoveFirst() ' Basic
   
      form.MoveFirst()  # Python
   Inprimaki-kurtsorea azken erregistroan kokatzen da. True itzultzen du ekintza ongi gauzatzen bada.
svc.MoveLast(): bool
      myForm.MoveLast() ' Basic
   
      form.MoveLast()  # Python
   Inprimaki-kurtsorea erregistro berriaren arean kokatzen da. True itzultzen du ekintza ongi gauzatzen bada.
svc.MoveNew(): bool
      myForm.MoveNew() ' Basic
   
      form.MoveNew()  # Python
   Inprimaki-kurtsorea hurrengo erregistroan kokatzen da. True itzultzen du ekintza ongi gauzatzen bada.
svc.MoveNext(opt offset: int): bool
offset: Zenbat erregistro egingo den aurrera (lehenetsia = 1).
      myForm.MoveNext() ' Basic
   
      form.MoveNext()  # Python
   Inprimaki-kurtsorea aurreko erregistroan kokatzen da. True itzultzen du ekintza ongi gauzatzen bada.
svc.MovePrevious(opt offset: int): bool
offset: Zenbat erregistro egingo den atzera (lehenetsia = 1).
      myForm.MovePrevious() ' Basic
   
      form.MovePrevious()  # Python
   Uneko datuak birkargatzen ditu datu-basetik eta inprimakia freskatzen du. Inprimaki-kurtsorea lehen erregistroan kokatzen da. True itzultzen du ekintza ongi gauzatzen bada.
svc.Requery(): bool
      myForm.Requery() ' Basic
   
      form.Requery()  # Python
   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.
svc.Subforms(): str[0..*]
svc.Subforms(subform: str): svc
svc.Subforms(subform: int): svc
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.
      Dim myForm As Object, myList As Variant, mySubform As Object
      myList = myform.Subforms()
      Set mySubform = myForm.Subforms("mySubform") ' SFDocuments.Form
   
      subform_names = form.Subforms()
     subform = form.Subforms('mySubform')  # SFDocuments.Form