LibreOffice 24.8 Βοήθεια
Η υπηρεσία Form παρέχει μεθόδους και ιδιότητες για τη διαχείριση φορμών σε έγγραφα του LibreOffice. Αυτή η υπηρεσία υποστηρίζει φόρμες σε έγγραφα Base, Calc και Writer και επιτρέπει:
Άνοιγμα και ενεργοποίηση φορμών.
Πλοήγηση στις εγγραφές που εμφανίζονται από τη φόρμα.
Απόκτηση πρόσβασης στα στοιχεία ελέγχου μέσα στη φόρμα.
Απόκτηση πρόσβασης σε υποφόρμες μιας γονικής φόρμας.
Η υπηρεσία SFDocuments.Form (Φόρμα) είναι διαθέσιμη από το LibreOffice 7.2 και μετά.
Οι φόρμες χρησιμοποιούνται συνήθως σε έγγραφα του LibreOffice για τη δημιουργία διεπαφών χρήστη που συνδέονται με σχεσιακές βάσεις δεδομένων. Ως εκ τούτου, η υπηρεσία Form παρέχει γρήγορη πρόσβαση στη συνδεδεμένη βάση δεδομένων μέσω της υπηρεσίας SFDatabase . Database.
Η υπηρεσία SFDocuments.Form σχετίζεται στενά με την υπηρεσία SFDocuments. FormControl.
Οι φόρμες δημιουργούνται συνήθως σε έγγραφα Base, αλλά μπορούν να προστεθούν και στα έγγραφα Writer και Calc.
Στη Base, κάθε φόρμα που δημιουργείτε χρησιμοποιώντας τη λειτουργία ή μέσω του Οδηγού φόρμας είναι στην πραγματικότητα ένα FormDocument που μπορεί να χειριστεί με την υπηρεσία Form. Τα έγγραφα Base μπορούν να περιέχουν απεριόριστο αριθμό εγγράφων φορμών.
Ακολουθεί ένα παράδειγμα που δείχνει την ιεραρχία όλων των στοιχείων που εμπλέκονται στην πρόσβαση σε φόρμες και υποφόρμες σε ένα έγγραφο Base. Ας υποθέσουμε ότι έχετε ένα αρχείο Base με το όνομα Employees.odb και μέσα σε αυτό δημιουργήσατε ένα έγγραφο φόρμας για να προσθέσετε νέους υπαλλήλους στη βάση δεδομένων. Το έγγραφο φόρμας περιέχει μια κύρια φόρμα με το όνομα EmployeeData που δίνει πρόσβαση σε έναν πίνακα. Υπάρχει επίσης μια υποφόρμα WorksAtPlant που σας επιτρέπει να συσχετίσετε τον νέο υπάλληλο σε ένα από τα εργοστάσια της εταιρείας.
    Employees.odb (έγγραφο Base)
     |
     |-- AddEmployee (FormDocument)
          |
          |-- EmployeeData (κύρια φόρμα)
               |
               |-- WorksAtPlant (SubForm)
  Ένα FormDocument μπορεί να θεωρηθεί ως ένα σύνολο φορμών που παρέχουν πρόσβαση σε σύνολα δεδομένων, όπως πίνακες βάσεων δεδομένων και ερωτήματα από τα έγγραφα του LibreOffice. Μπορείτε να προσπελάσετε τα ονόματα των φορμών και των υποφορμών μέσα σε ένα FormDocument χρησιμοποιώντας το Πλοήγηση φόρμας.
Ένα έγγραφο φόρμας αποτελείται από μία ή περισσότερες φόρμες οι οποίες, με τη σειρά τους, μπορεί επίσης να περιέχουν οποιονδήποτε αριθμό υπομορφών. Μια φόρμα είναι ένα αφηρημένο σύνολο στοιχείων ελέγχου που συνδέονται με μια καθορισμένη πηγή δεδομένων, η οποία μπορεί να είναι ένας πίνακας βάσης δεδομένων, ένα ερώτημα ή μια πρόταση SQL SELECT.
Στα έγγραφα Calc και Writer, κάθε φόρμα μπορεί να συνδεθεί με σύνολα δεδομένων που βρίσκονται σε διαφορετικές βάσεις δεδομένων. Από την άλλη πλευρά, στα έγγραφα Base η βάση δεδομένων που περιέχεται στο έγγραφο είναι κοινή για όλες τις μορφές.
Για να καλέσετε την υπηρεσία SFDocuments. Form ανατρέξτε στις μεθόδους Forms(), FormDocuments() και OpenFormDocument() της υπηρεσίας SFDocuments.Document
Πριν να χρησιμοποιήσετε την υπηρεσία Form, πρέπει να φορτωθεί ή να εισαχθεί η βιβλιοθήκη ScriptForge:
Το παρακάτω απόσπασμα κώδικα δείχνει πώς να προσπελάσετε τη φόρμα με το όνομα Form1 που βρίσκεται μέσα σε ένα αρχείο Writer:
      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')
   Οι φόρμες είναι προσβάσιμες με τα ονόματά τους ή με τα ευρετήριά τους, όπως φαίνεται παρακάτω:
     Set myForm = oDoc.Forms(0)
   
     my_form = doc.Forms(0)
   Εάν προσπαθήσετε να προσπελάσετε ένα FormDocument που είναι ανοιχτό αυτήν τη στιγμή σε Λειτουργία σχεδίασης θα δημιουργηθεί μια εξαίρεση.
Μια φόρμα σε ένα αρχείο Calc πρέπει να έχει ένα μοναδικό όνομα μέσα στο φύλλο της. Επομένως, η μέθοδος Forms απαιτεί δύο ορίσματα, το πρώτο που υποδεικνύει το όνομα του φύλλου και το δεύτερο το όνομα της φόρμας.
      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:
     ui = CreateScriptService('UI')
     doc = ui.OpenDocument('/home/user/Documents/MyForms.ods')
     my_form = doc.Forms('Sheet1', 'Form1')
   Ένα FormDocument μέσα σε ένα έγγραφο Base είναι προσβάσιμο με το όνομά του. Το ακόλουθο παράδειγμα ανοίγει το έγγραφο φόρμας με το όνομα thisFormDocument και αποκτά πρόσβαση στη φόρμα MainForm:
      Dim oDb As Object, myForm As Object
      Set oDb = CreateScriptService("SFDocuments.Document", ThisDatabaseDocument)
      ' Η παρακάτω δήλωση είναι απαραίτητη μόνο εάν η φόρμα δεν έχει ανοίξει ακόμα
      oDb.OpenFormDocument("thisFormDocument")
      Set myForm = oDoc.Forms("thisFormDocument", "MainForm")
      ' Ή, εναλλακτικά, για πρόσβαση στη φόρμα από το ευρετήριό της ...
      Set myForm = oDb.Forms("thisFormDocument", 0)
   Για να εκτελέσετε οποιαδήποτε ενέργεια σε μια φόρμα χρησιμοποιώντας την υπηρεσία Form, το FormDocument πρέπει να έχει ανοίξει είτε με μη αυτόματο τρόπο από τον χρήστη είτε μέσω προγραμματισμού σε ένα σενάριο χρήστη. Το τελευταίο μπορεί να γίνει καλώντας τη μέθοδο OpenFormDocument της υπηρεσίας Base.
Για να προσπελάσετε μια δεδομένη υποφόρμα μιας φόρμας χρησιμοποιήστε τη μέθοδο SubForms. Σημειώστε ότι στο παρακάτω παράδειγμα το mySubForm είναι μια νέα παρουσία της υπηρεσίας Form.
     Dim mySubForm As Object
     Set mySubForm = myForm.SubForms("mySubForm")
   Τα προηγούμενα παραδείγματα μεταφράζονται στην Python ως:
     db = CreateScriptService('SFDocuments.Document', XSCRIPTCONTEXT.getDocument())
     # Η παρακάτω δήλωση είναι απαραίτητη μόνο εάν η φόρμα δεν έχει ανοίξει ακόμα
     form_doc = db.OpenFormDocument('thisFormDocument')
     form = form_doc.Forms('thisFormDocument', 'MainForm')
     # Ή, εναλλακτικά, για πρόσβαση στη φόρμα από το ευρετήριό της ...
     form = form_doc.Forms('thisFormDocument', 0)
     sub_form = form.SubForms('mySubForm')
   Για να καλέσετε την υπηρεσία Form όταν λαμβάνει χώρα ένα συμβάν φόρμας:
      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
   Συνιστάται η απελευθέρωση πόρων μετά τη χρήση της υπηρεσίας Form (Φόρμας).
     myForm.Dispose() ' Basic
   
     form.Dispose()  # Python
   Αυτή η λειτουργία εκτελείται σιωπηρά όταν ένα έγγραφο φόρμας κλείνει με τη μέθοδο CloseFormDocument() που περιγράφεται παρακάτω.
| Όνομα | Μόνο για ανάγνωση | Τύπος | Περιγραφή | 
|---|---|---|---|
| AllowDeletes | Όχι | Boolean | Καθορίζει εάν η φόρμα επιτρέπει τη διαγραφή εγγραφών. | 
| AllowInserts | Όχι | Boolean | Καθορίζει εάν η φόρμα επιτρέπει την προσθήκη εγγραφών. | 
| AllowUpdates | Όχι | Boolean | Καθορίζει εάν η φόρμα επιτρέπει την ενημέρωση των εγγραφών. | 
| BaseForm | Ναι | String | Καθορίζει το ιεραρχικό όνομα της φόρμας Base που περιέχει την πραγματική φόρμα. | 
| Bookmark | Όχι | Variant | Καθορίζει με μοναδικό τρόπο την τρέχουσα εγγραφή του υποκείμενου πίνακα, του ερωτήματος ή της δήλωσης SQL της φόρμας. | 
| CurrentRecord | Όχι | Long | Προσδιορίζει την τρέχουσα εγγραφή στο σύνολο δεδομένων που προβάλλεται σε μια φόρμα. Εάν ο αριθμός σειράς είναι θετικός, ο δρομέας μετακινείται στον δεδομένο αριθμό σειράς σε σχέση με την αρχή του συνόλου των αποτελεσμάτων. Η μέτρηση σειρών ξεκινά από το 1. Εάν ο δεδομένος αριθμός σειράς είναι αρνητικός, ο δρομέας μετακινείται σε μια απόλυτη θέση σειράς ως προς το τέλος του συνόλου των αποτελεσμάτων. Η σειρά -1 αναφέρεται στην τελευταία σειρά στο σύνολο των αποτελεσμάτων. | 
| Filter | Όχι | String | Καθορίζει ένα υποσύνολο εγγραφών που θα εμφανίζεται ως πρόταση WHEREτης SQL χωρίς τη λέξη-κλειδί WHERE. | 
| LinkChildFields | Ναι | String | Καθορίζει τον τρόπο με τον οποίο οι εγγραφές σε μια θυγατρική υποφόρμα συνδέονται με τις εγγραφές στη γονική της μορφή. | 
| LinkParentFields | Ναι | String | Καθορίζει τον τρόπο με τον οποίο οι εγγραφές σε μια θυγατρική υποφόρμα συνδέονται με τις εγγραφές στη γονική της μορφή. | 
| Name | Ναι | String | Το όνομα της τρέχουσας φόρμας. | 
| OrderBy | Όχι | String | Καθορίζει με ποια σειρά θα εμφανίζονται οι εγγραφές ως πρόταση ORDER BY της SQL χωρίς τις λέξεις-κλειδιά ORDER BY. | 
| Parent | Ναι | Object | Ο γονέας της τρέχουσας φόρμας. Μπορεί να είναι είτε SFDocuments.Form, είτε αντικείμενο SFDocuments.Document. | 
| RecordSource | Όχι | String | Καθορίζει την προέλευση των δεδομένων, ως όνομα πίνακα, όνομα ερωτήματος ή πρόταση SQL. | 
| XForm | Ναι | Αντικείμενο | Το αντικείμενο UNO που αντιπροσωπεύει τις αλληλεπιδράσεις με τη φόρμα. Ανατρέξτε στα XForm και στο DataForm στην τεκμηρίωση του API για λεπτομερείς πληροφορίες. | 
Οι παρακάτω ιδιότητες επιστρέφουν ή ορίζουν συμβολοσειρές URI που ορίζουν το σενάριο που ενεργοποιείται από το συμβάν.
| Όνομα | Μόνο για ανάγνωση | Περιγραφή IDE Basic | 
|---|---|---|
| OnApproveCursorMove | Όχι | Πριν την αλλαγή της εγγραφής | 
| OnApproveParameter | Όχι | Συμπλήρωση παραμέτρων | 
| OnApproveReset | Όχι | Πριν την επαναφορά | 
| OnApproveRowChange | Όχι | Πριν την ενέργεια της εγγραφής | 
| OnApproveSubmit | Όχι | Πριν την υποβολή | 
| OnConfirmDelete | Όχι | Επιβεβαίωση διαγραφής | 
| OnCursorMoved | Όχι | Μετά την αλλαγή της εγγραφής | 
| OnErrorOccurred | Όχι | Παρουσιάστηκε σφάλμα | 
| OnLoaded | Όχι | Κατά τη φόρτωση | 
| OnReloaded | Όχι | Κατά την επαναφόρτωση | 
| OnReloading | Όχι | Πριν από την επαναφόρτωση | 
| OnResetted | Όχι | Μετά την επαναφορά | 
| OnRowChanged | Όχι | Μετά την ενέργεια της εγγραφής | 
| OnUnloaded | Όχι | Κατά την αποφόρτωση | 
| OnUnloading | Όχι | Πριν την αποφόρτωση | 
Για να μάθετε περισσότερα σχετικά με τις συμβολοσειρές URI, ανατρέξτε στις Προδιαγραφές URI πλαισίου σεναρίου.
| Κατάλογος μεθόδων στην υπηρεσία Form (Φόρμα) | ||
|---|---|---|
Ορίζει την εστίαση στην τρέχουσα παρουσία Form. Επιστρέφει True εάν η εστίαση ήταν επιτυχής.
Η συμπεριφορά της μεθόδου Activate (Ενεργοποίηση) εξαρτάται από τον τύπο του εγγράφου όπου βρίσκεται η φόρμα:
Στα έγγραφα Writer: Ορίζει την εστίαση σε αυτό το έγγραφο.
Στα έγγραφα Calc: Ορίζει την εστίαση στο φύλλο στο οποίο ανήκει η φόρμα.
Στα έγγραφα Base: Ορίζει την εστίαση στο FormDocument στο οποίο αναφέρεται η Form.
svc.Activate(): bool
Το παρακάτω παράδειγμα προϋποθέτει ότι θέλετε να ενεργοποιήσετε τη φόρμα με το όνομα FormA που βρίσκεται στο Sheet1 (Φύλλο1) του τρέχοντος ανοιχτού αρχείου Calc. Αρχικά αποκτά πρόσβαση στο έγγραφο χρησιμοποιώντας την υπηρεσία Document και το ThisComponent και στη συνέχεια ενεργοποιεί τη φόρμα.
     'Κρατά τη φόρμα που θα ενεργοποιηθεί
     Dim oDoc as Object, myForm as Object
     Set oDoc = CreateScriptService("Document", ThisComponent)
     Set myForm = oDoc.Forms("Sheet1", "FormA")
     'Ενεργοποιεί τη φόρμα
     myForm.Activate()
   
     doc = CreateScriptService('Document', XSCRIPTCONTEXT.getDocument())
     form = doc.Forms('Sheet1', 'FormA')
     form.Activate()
   ThisComponent (Αυτό το στοιχείο) ισχύει για έγγραφα Calc και Writer. Για έγγραφα Base χρησιμοποιήστε το ThisDataBaseDocument.
This method is deprecated, use ScriptForge.FormDocument.CloseDocument method instead.
Κλείνει το έγγραφο φόρμας που περιέχει την ενεργή παρουσία Form. Η παρουσία Form διατίθεται.
svc.CloseFormDocument(): bool
      myForm.CloseFormDocument() ' Basic
   
      form.CloseFormDocument()  # Python
   Η τιμή που επιστρέφεται από τη μέθοδο Controls εξαρτάται από τα ορίσματα που παρέχονται:
Εάν η μέθοδος καλείται without arguments, τότε επιστρέφει τον κατάλογο των στοιχείων ελέγχου που περιέχονται στη φόρμα. Λάβετε υπόψη ότι ο κατάλογος που επιστρέφεται δεν περιέχει στοιχεία ελέγχου υποφόρμας.
Εάν παρέχεται το προαιρετικό όρισμα ControlName, η μέθοδος επιστρέφει μια παρουσία κλάσης FormControl που αναφέρεται στο καθορισμένο στοιχείο ελέγχου.
svc.Controls(opt controlname: str): any
controlname (όνομα ελέγχου): Ένα έγκυρο όνομα ελέγχου ως συμβολοσειρά με διάκριση πεζών-κεφαλαίων. Εάν δεν υπάρχει, ο κατάλογος ονομάτων ελέγχου επιστρέφεται ως πίνακας μηδενικής βάσης.
      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
   Επιστρέφει μια παρουσία SFDatabases.Database που παρέχει πρόσβαση σε την εκτέλεση εντολών SQL στη βάση δεδομένων στην οποία είναι συνδεδεμένη η τρέχουσα φόρμα και/ή που αποθηκεύεται στο τρέχον έγγραφοBase .
Κάθε φόρμα έχει τη δική της σύνδεση βάσης δεδομένων, εκτός από τα έγγραφα Base όπου όλα μοιράζονται την ίδια σύνδεση.
svc.GetDatabase(opt user: str, opt password: str): svc
user, password (χρήστης, κωδικός πρόσβασης): Οι προαιρετικές παράμετροι σύνδεσης (Προεπιλογή = "").
      Dim myDb As Object ' SFDatabases.Database
      Set myDb = oForm.GetDatabase()
   
      db = form.GetDatabase()  # SFDatabases.Database
   Ο δρομέας της φόρμας τοποθετείται στην πρώτη εγγραφή. Επιστρέφει True εάν είναι επιτυχής.
svc.MoveFirst(): bool
      myForm.MoveFirst() ' Basic
   
      form.MoveFirst()  # Python
   Ο δρομέας της φόρμας τοποθετείται στην τελευταία εγγραφή. Επιστρέφει True εάν είναι επιτυχής.
svc.MoveLast(): bool
      myForm.MoveLast() ' Basic
   
      form.MoveLast()  # Python
   Ο δρομέας της φόρμας τοποθετείται στη νέα περιοχή εγγραφής. Επιστρέφει True εάν είναι επιτυχής.
svc.MoveNew(): bool
      myForm.MoveNew() ' Basic
   
      form.MoveNew()  # Python
   Ο δρομέας της φόρμας τοποθετείται στην επόμενη εγγραφή. Επιστρέφει True εάν είναι επιτυχής.
svc.MoveNext(opt offset: int): bool
offset (μετατόπιση): Ο αριθμός των εγγραφών προς τα μπρος (Προεπιλογή = 1).
      myForm.MoveNext() ' Basic
   
      form.MoveNext()  # Python
   Ο δρομέας της φόρμας τοποθετείται στην προηγούμενη εγγραφή. Επιστρέφει True εάν είναι επιτυχής.
svc.MovePrevious(opt offset: int): bool
offset: Ο αριθμός των εγγραφών προς τα πίσω (Προεπιλογή = 1).
      myForm.MovePrevious() ' Basic
   
      form.MovePrevious()  # Python
   Φορτώνει ξανά τα τρέχοντα δεδομένα από τη βάση δεδομένων και ανανεώνει τη φόρμα. Ο δρομέας τοποθετείται στην πρώτη εγγραφή. Επιστρέφει True εάν είναι επιτυχής.
svc.Requery(): bool
      myForm.Requery() ' Basic
   
      form.Requery()  # Python
   Η τιμή που επιστρέφεται από τη μέθοδο Subforms (Υποφόρμες) εξαρτάται από τα ορίσματα που παρέχονται:
Εάν η μέθοδος καλείται without any arguments (χωρίς ορίσματα), τότε επιστρέφει ο κατάλογος με τις υποφόρμες που περιέχονται στην τρέχουσα φόρμα ή την παρουσία υποφόρμας.
Εάν παρέχεται το προαιρετικό όρισμα subform, η μέθοδος επιστρέφει μια νέα παρουσία SFDocuments.Form με βάση το καθορισμένο όνομα ή ευρετήριο φόρμας/υποφόρμας.
svc.Subforms(): str[0..*]
svc.Subforms(subform: str): svc
svc.Subforms(subform: int): svc
subform: Μια υποφόρμα που είναι αποθηκευμένη στην τρέχουσα παρουσία κλάσης Form που δίνεται από το όνομά της ή το ευρετήριό της.
Όταν αυτό το όρισμα απουσιάζει, η μέθοδος επιστρέφει έναν κατάλογο διαθέσιμων υπομορφών ως πίνακα μηδενικής βάσης. Εάν η φόρμα έχει μία μόνο υποφόρμα, μπορείτε να ορίσετε subform = 0 για να αποκτήσετε πρόσβαση σε αυτήν.
      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