LibreOfficeDev 25.8 Βοήθεια
Η υπηρεσία FormControl παρέχει πρόσβαση στα στοιχεία ελέγχου που ανήκουν σε μια φόρμα, μια υποφόρμα ή ένα στοιχείο ελέγχου πίνακα ενός FormDocument. Κάθε παρουσία της υπηρεσίας FormControl αναφέρεται σε ένα μόνο στοιχείο ελέγχου στη φόρμα. Αυτή η υπηρεσία επιτρέπει στους χρήστες να:
Να λάβουν και να ορίζουν τις ιδιότητες του στοιχείου ελέγχου που αντιπροσωπεύεται από την παρουσία του FormControl.
Πρόσβαση στην τρέχουσα τιμή που εμφανίζεται από το στοιχείο ελέγχου.
Ρυθμίζει την εστίαση στο επιθυμητό στοιχείο ελέγχου.
Για να χρησιμοποιήσετε την υπηρεσία FormControl σε μια συγκεκριμένη φόρμα, υποφόρμα ή στοιχείο ελέγχου πίνακα, όλα τα στοιχεία ελέγχου πρέπει να έχουν μοναδικά ονόματα.
Τα κουμπιά επιλογής που μοιράζονται το ίδιο όνομα ομάδας πρέπει επίσης να έχουν μοναδικά ονόματα ελέγχου.
Ο κύριος σκοπός της υπηρεσίας FormControl είναι ο ορισμός και η λήψη των ιδιοτήτων και των τιμών που εμφανίζονται από τα στοιχεία ελέγχου σε μια φόρμα.
Όλα τα στοιχεία ελέγχου έχουν μια ιδιότητα Value (Τιμή). Ωστόσο, το περιεχόμενό τους θα ποικίλλει ανάλογα με τον τύπο ελέγχου. Για περισσότερες πληροφορίες, διαβάστε την ιδιότητα Value παρακάτω.
Είναι επίσης δυνατό να μορφοποιήσετε τα στοιχεία ελέγχου μέσω των ιδιοτήτων XControlModel και XControlView.
Η υπηρεσία SFDocuments.FormControl σχετίζεται στενά με την υπηρεσία SFDocuments.Form .
Πριν χρησιμοποιήσετε την υπηρεσία FormControl, πρέπει να φορτωθεί ή να εισαχθεί η βιβλιοθήκη ScriptForge:
Η υπηρεσία FormControl καλείται από μια υπάρχουσα παρουσία υπηρεσίας της Form μέσω της μεθόδου Controls (Στοιχεία ελέγχου).
      Dim oDoc as Object, myForm As Object, myControl As Object
      Set oDoc = CreateScriptService("SFDocuments.Document", ThisDataBaseDocument)
      Set myForm = oDoc.Forms("formDocumentName", "formName") ' SFDocuments.Form
      Set myControl = myForm.Controls("myTextBox") ' SFDocuments.FormControl
      myControl.Value = "Current time = " & Now()
   
      from scriptforge import CreateScriptService
      from time import localtime, strftime
      bas = CreateScriptService('ScriptForge.Basic')
      doc = CreateScriptService('SFDocuments.Document', bas.ThisDatabaseDocument)
      form = doc.Forms('formDocumentName', 'formName')  # SFDocuments.Form
      control = form.Controls('myTextBox')  # SFDocuments.FormControl
      control.Value = 'Τρέχων χρόνος = ' + strftime("%a, %d %b %Y %H:%M:%S", localtime())
   Για να μάθετε περισσότερα σχετικά με το πώς να ανοίξετε ένα FormDocument και να προσπελάσετε τις φόρμες του, ανατρέξτε στην σελίδα βοήθειας υπηρεσίας SFDocuments.Form.
Εναλλακτικά, μια παρουσία FormControl μπορεί να ανακτηθεί μέσω της υπηρεσίας SFDocuments.FormEvent, η οποία επιστρέφει την παρουσία κλάσης SFDocuments.FormControl που ενεργοποίησε το συμβάν.
      Sub OnEvent(ByRef poEvent As Object)
          Dim oControl As Object
          Set oControl = CreateScriptService("SFDocuments.FormEvent", poEvent)
          'το oControl αντιπροσωπεύει τώρα την παρουσία της κλάσης FormControl που ενεργοποίησε το τρέχον συμβάν
          ' ...
      End Sub
   
      def onEvent(event: uno):
          control = CreateScriptService('SfDocuments.FormEvent', event)
   Σημειώστε ότι σε προηγούμενα παραδείγματα, το πρόθεμα "SFDocuments." ενδέχεται να παραλειφθεί.
Η υπηρεσία FormEvent χρησιμοποιείται αποκλειστικά για τη δημιουργία παρουσιών των υπηρεσιών SFDocuments.Form και SFDocuments.FormControl όταν λαμβάνει χώρα μια φόρμα ή ένα συμβάν ελέγχου.
Η υπηρεσία FormControl είναι διαθέσιμη για τους ακόλουθους τύπους ελέγχου:
| Button | GroupBox | PatternField | 
| Όνομα | Μόνο για ανάγνωση | Τύπος | Εφαρμόζεται σε | Περιγραφή | 
|---|---|---|---|---|
| Action | Όχι | String | Button | Καθορίζει την ενέργεια που ενεργοποιείται όταν πατάτε το πλήκτρο. Οι αποδεκτές τιμές είναι: none, submitForm, resetForm, refreshForm, moveToFirst, moveToLast, moveToNext, moveToPrev, saveRecord, moveToNew, deleteRecord, undoRecord. | 
| Caption | Όχι | String | Button, CheckBox, FixedText, GroupBox, RadioButton | Καθορίζει το κείμενο που εμφανίζεται από το στοιχείο ελέγχου. | 
| ControlSource | Ναι | String | CheckBox, ComboBox, CurrencyField, DateField, FormattedField, ImageControl, ListBox, NumericField, PatternField, RadioButton, TextField, TimeField | Καθορίζει το πεδίο συνόλου γραμμών που αντιστοιχίζεται στο τρέχον στοιχείο ελέγχου. | 
| ControlType | Ναι | String | Όλα | Ένας από τους τύπους ελέγχου που αναφέρονται παραπάνω. | 
| Default | Όχι | Boolean | Button | Καθορίζει εάν ένα πλήκτρο εντολής είναι το προεπιλεγμένο πλήκτρο Εντάξει. | 
| DefaultValue | Όχι | Variant | CheckBox, ComboBox, CurrencyField, DateField, FileControl, FormattedField, ListBox, NumericField, PatternField, RadioButton, SpinButton, TextField, TimeField | Καθορίζει την προεπιλεγμένη τιμή που χρησιμοποιείται για την αρχικοποίηση ενός στοιχείου ελέγχου σε μια νέα εγγραφή. | 
| Enabled | Όχι | Boolean | Όλα (εκτός από το HiddenControl) | Καθορίζει εάν το στοιχείο ελέγχου είναι προσβάσιμο με τον δρομέα. | 
| Format | Όχι | String | DateField, TimeField, FormattedField (read-only) | Καθορίζει τη μορφή που χρησιμοποιείται για την εμφάνιση ημερομηνιών και χρόνου. Πρέπει να είναι μία από τις ακόλουθες συμβολοσειρές: Για ημερομηνίες: "Standard (short)", "Standard (short YY)", "Standard (short YYYY)", "Standard (long)", "DD/MM/YY", "MM/DD/YY", "YY/MM/DD", "DD/MM/YYYY", "MM/DD/YYYY" , "YYYY/MM/DD", "YY-MM-DD", "YYYY-MM-DD". Για χρόνο: "24h short", "24h long", "12h short", "12h long". | 
| ListCount | Ναι | Long | ComboBox, ListBox | Επιστρέφει τον αριθμό των σειρών σε ένα ListBox (πλαίσιο καταλόγου) ή ένα ComboBox (σύνθετο πλαίσιο). | 
| ListIndex | Όχι | Long | ComboBox, ListBox | Καθορίζει ποιο στοιχείο επιλέγεται σε ένα ListBox ή ένα ComboBox. Σε περίπτωση πολλαπλής επιλογής, επιστρέφεται το ευρετήριο του πρώτου στοιχείου ή ορίζεται μόνο ένα στοιχείο. | 
| ListSource | Όχι | Variant | ComboBox, ListBox | Καθορίζει τα δεδομένα που περιέχονται σε ένα ComboBox ή ένα ListBox ως πίνακα τιμών συμβολοσειρών με βάση το μηδέν. Σε συνδυασμό με το ListSourceType, μπορεί επίσης να περιέχει το όνομα ενός πίνακα, ενός ερωτήματος ή μιας πλήρους πρότασης SQL. | 
| ListSourceType | Όχι | Integer | ComboBox, ListBox | Καθορίζει τον τύπο των δεδομένων που περιέχονται σε ένα σύνθετο πλαίσιο ή ένα πλαίσιο καταλόγου. Πρέπει να είναι μία από τις σταθερές com.sun.star.form.ListSourceType.*. | 
| Locked | Όχι | Boolean | ComboBox, CurrencyField, DateField, FileControl, FormattedField, ImageControl, ListBox, NumericField, PatternField, TextField, TimeField | Καθορίζει εάν το στοιχείο ελέγχου είναι μόνο για ανάγνωση. | 
| MultiSelect | Όχι | Boolean | ListBox | Καθορίζει εάν ο χρήστης μπορεί να επιλέξει πολλά στοιχεία σε ένα πλαίσιο καταλόγου. | 
| Name | Ναι | String | Όλα | Το όνομα του στοιχείου ελέγχου. | 
| Parent | Ναι | Object | Όλα | Ανάλογα με τον γονικό τύπο, μια φόρμα, μια υποφόρμα ή ένας πίνακας ελέγχου, επιστρέφει τη γονική παρουσία αντικειμένου της κλάσης SFDocuments.Form, ή SFDocuments.FormControl. | 
| Picture | Όχι | String | Button, ImageButton, ImageControl | Καθορίζει το όνομα αρχείου που περιέχει μια ψηφιογραφία (bitmap) ή άλλο τύπο γραφικού που θα εμφανίζεται στο στοιχείο ελέγχου. Το όνομα αρχείου πρέπει να συμμορφώνεται με το χαρακτηριστικό FileNaming της υπηρεσίας ScriptForge.FileSystem. | 
| Required | Όχι | Boolean | CheckBox, ComboBox, CurrencyField, DateField, ListBox, NumericField, PatternField, RadioButton, SpinButton, TextField, TimeField | Ένα στοιχείο ελέγχου λέγεται ότι απαιτείται όταν τα υποκείμενα δεδομένα δεν πρέπει να περιέχουν τιμή null. | 
| Text | Ναι | String | ComboBox, DateField, FileControl, FormattedField, PatternField, TextField, TimeField | Παρέχει πρόσβαση στο κείμενο που εμφανίζεται από το στοιχείο ελέγχου. | 
| TipText | Όχι | String | Όλα (εκτός από το HiddenControl) | Καθορίζει το κείμενο που εμφανίζεται ως επεξήγηση εργαλείου, όταν τοποθετείτε το δείκτη του ποντικιού πάνω από το στοιχείο ελέγχου. | 
| TripleState | Όχι | Boolean | CheckBox | Καθορίζει εάν το στοιχείο ελέγχου πλαισίου ελέγχου μπορεί να εμφανίζεται αμυδρό (γκρίζο) ή όχι. | 
| Value | Όχι | Variant | Αυτή η ιδιότητα εξαρτάται από τον τρέχοντα τύπο ελέγχου. Ανατρέξτε στην Η ιδιότητα Value για περισσότερες πληροφορίες. | |
| Visible | Όχι | Boolean | Όλα (εκτός από το HiddenControl) | Καθορίζει εάν το στοιχείο ελέγχου είναι κρυφό ή ορατό. | 
| XControlModel | Ναι | Αντικείμενο | Όλα | Το αντικείμενο UNO που αντιπροσωπεύει το μοντέλο ελέγχου. Ανατρέξτε στο XControlModel και UnoControlModel στην τεκμηρίωση του API για περισσότερες πληροφορίες. | 
| XControlView | Ναι | Αντικείμενο | Όλα | Το αντικείμενο UNO που αντιπροσωπεύει την προβολή ελέγχου. Ανατρέξτε στο XControl και στο UnoControl στην τεκμηρίωση του API για περισσότερες πληροφορίες. | 
| Τύπος ελέγχου | Τύπος | Περιγραφή | 
|---|---|---|
| Button | Boolean | Ισχύει μόνο για πλήκτρα εναλλαγής. | 
| CheckBox | Τιμή Μπουλ ή ακέραιος | 0, False: μη επιλεγμένο | 
| ComboBox | String | Η επιλεγμένη τιμή, ως συμβολοσειρά. Η ιδιότητα ListIndex είναι μια εναλλακτική επιλογή για πρόσβαση στο ευρετήριο της επιλεγμένης τιμής. | 
| CurrencyField | Αριθμητικό | |
| DateField | Date | |
| FileControl | String | Ένα όνομα αρχείου μορφοποιημένο σύμφωνα με την ιδιότητα FileNaming της υπηρεσίας ScriptForge.FileSystem | 
| FormattedField | Συμβολοσειρά ή αριθμητικό | |
| HiddenControl | String | |
| ListBox | Συμβολοσειρά ή πίνακας συμβολοσειρών | Οι επιλεγμένες σειρές ως μεμονωμένη συμβολοσειρά ή πίνακας συμβολοσειρών. Μπορεί να οριστεί μόνο μία τιμή. Εάν το πλαίσιο είναι συνδεδεμένο με μια βάση δεδομένων, αυτή η ιδιότητα λαμβάνει ή ορίζει τα υποκείμενα δεδομένα. Διαφορετικά, λαμβάνει ή ορίζει τα δεδομένα που εμφανίζονται. | 
| NumericField | Αριθμητικό | |
| PatternField | String | |
| RadioButton | Boolean | Κάθε πλήκτρο έχει το δικό του όνομα. Πολλά χειριστήρια RadioButton (κουμπιού επιλογής) συνδέονται μεταξύ τους όταν μοιράζονται το ίδιο όνομα ομάδας. Εάν ένα RadioButton έχει οριστεί σε True, τα άλλα σχετικά κουμπιά ορίζονται αυτόματα σε False | 
| ScrollBar | Αριθμητικό | Πρέπει να είναι εντός των προκαθορισμένων ορίων | 
| SpinButton | Αριθμητικό | Πρέπει να είναι εντός των προκαθορισμένων ορίων | 
| TextField | String | Το κείμενο που εμφανίζεται στο πεδίο | 
| TimeField | Date | 
Οι παρακάτω ιδιότητες επιστρέφουν ή ορίζουν συμβολοσειρές URI που ορίζουν το σενάριο που ενεργοποιείται από το συμβάν.
| Όνομα | Μόνο για ανάγνωση | Η περιγραφή όπως επισημαίνεται στο IDE Basic | 
|---|---|---|
| OnActionPerformed | Όχι | Εκτέλεση ενέργειας | 
| OnAdjustmentValueChanged | Όχι | Κατά την προσαρμογή | 
| OnApproveAction | Όχι | Έγκριση ενέργειας | 
| OnApproveReset | Όχι | Πριν την επαναφορά | 
| OnApproveUpdate | Όχι | Πριν την ενημέρωση | 
| OnChanged | Όχι | Τροποποιημένο | 
| OnErrorOccurred | Όχι | Παρουσιάστηκε σφάλμα | 
| OnFocusGained | Όχι | Κατά τη λήψη της εστίασης | 
| OnFocusLost | Όχι | Κατά τη απώλεια της εστίασης | 
| OnItemStateChanged | Όχι | Η κατάσταση του στοιχείου τροποποιήθηκε | 
| OnKeyPressed | Όχι | Με το πλήκτρο πατημένο | 
| OnKeyReleased | Όχι | Με το πλήκτρο απελευθερωμένο | 
| OnMouseDragged | Όχι | Το ποντίκι μετακινήθηκε κατά το πάτημα του πλήκτρου | 
| OnMouseEntered | Όχι | Το ποντίκι εντός | 
| OnMouseExited | Όχι | Το ποντίκι εκτός | 
| OnMouseMoved | Όχι | Το ποντίκι μετακινήθηκε | 
| OnMousePressed | Όχι | Με πατημένο το πλήκτρο του ποντικιού | 
| OnMouseReleased | Όχι | Με απελευθερωμένο το πλήκτρο του ποντικιού | 
| OnResetted | Όχι | Μετά την επαναφορά | 
| OnTextChanged | Όχι | Το κείμενο τροποποιήθηκε | 
| OnUpdated | Όχι | Μετά την ενημέρωση | 
Για να μάθετε περισσότερα σχετικά με τις συμβολοσειρές URI, ανατρέξτε στις Προδιαγραφές URI πλαισίου σεναρίου.
| Κατάλογος μεθόδων στην υπηρεσία FormControl | |
|---|---|
Αυτή η μέθοδος ισχύει μόνο για στοιχεία ελέγχου του τύπου TableControl. Η επιστρεφόμενη τιμή εξαρτάται από τα ορίσματα που παρέχονται.
Εάν το προαιρετικό όρισμα controlname (όνομα ελέγχου) απουσιάζει, τότε επιστρέφεται ένας πίνακας μηδενικής βάσης που περιέχει τα ονόματα όλων των στοιχείων ελέγχου.
Από την άλλη πλευρά, εάν παρέχεται ένα controlname (όνομα ελέγχου), η μέθοδος επιστρέφει μια παρουσία κλάσης FormControl που αντιστοιχεί στο καθορισμένο στοιχείο ελέγχου.
svc.Controls(): str[0..*]
svc.Controls(controlname: str): svc
controlname (όνομα ελέγχου): Ένα έγκυρο όνομα ελέγχου ως συμβολοσειρά με διάκριση πεζών-κεφαλαίων. Εάν δεν υπάρχει, ο κατάλογος των ονομάτων ελέγχου επιστρέφεται ως πίνακας μηδενικής βάσης.
      Dim myGrid As Object, myList As Variant, myControl As Object
      Set myGrid = myForm.Controls("myTableControl") ' SFDocuments.FormControl
      ' Επιστρέφει έναν πίνακα με τα ονόματα όλων των στοιχείων ελέγχου στο "myTableControl"
      myList = myGrid.Controls()
      ' Επιστρέφει μια παρουσία κλάσης FormControl που αντιστοιχεί στο "myCheckBox"
      Set myControl = myGrid.Controls("myCheckBox")
   Χρησιμοποιώντας Python:
      grid = form.Controls('myTableControl')  # SFDocuments.FormControl
      control_names = form.Controls()
      control = grid.Controls('myCheckBox')  # SFDocuments.FormControl
   Ρυθμίζει την εστίαση στον έλεγχο. Επιστρέφει True εάν η εστίαση ήταν επιτυχής.
Αυτή η μέθοδος καλείται συχνά από μια φόρμα ή ένα συμβάν ελέγχου.
svc.SetFocus(): bool
      Dim oDoc As Object, oForm As Object, oControl As Object
      Set oDoc = CreateScriptService("SFDocuments.Document", ThisComponent)
      Set oForm = oDoc.Forms(0)
      Set oControl = oForm.Controls("thisControl") ' SFDocuments.FormControl
      oControl.SetFocus()
   
     bas = CreateScriptService('ScriptForge.Basic')
     doc = CreateScriptService('SFDocuments.Document', bas.ThisComponent)
     form = doc.Forms(0)
     control = form.Controls('thisControl')  # SFDocuments.FormControl
     control.SetFocus()
   Ακολουθούν δύο παραδείγματα που επεξηγούν τη χρήση της υπηρεσίας FormControl.
Το πρώτο παράδειγμα διαβάζει την τρέχουσα τιμή σε ένα ComboBox (σύνθετο πλαίσιο) που περιέχει ονόματα πόλεων και την γράφει σε ένα στοιχείο ελέγχου FixedTest σε μια φόρμα:
     Dim oDoc as Object, myForm as Object, myControl as Object
     Set oDoc = CreateScriptService("SFDocuments.Document", ThisDataBaseDocument)
     myForm = oDoc.Forms("formDocumentName", "formName")
     Dim lbCity : lbCity = myForm.Controls("labelCity")
     Dim cbCity : cbCity = myForm.Controls("comboboxCity")
     lbCity.Caption = "Selected City: " & cbCity.Value
   
     bas = CreateScriptService('ScriptForge.Basic') # μέθοδοι μορφής Basic
     doc = CreateScriptService('SFDocuments.Document', bas.ThisDatabaseDocument)
     form = doc.Forms('formDocumentName', 'formName')
     lbl_city = form.Controls('labelCity')
     combo_city = form.Controls('comboboxCity')
     lbl_city.Caption = "Επιλεγμένη πόλη: " + combo_city.Value
   Το παρακάτω απόσπασμα κώδικα μπορεί να χρησιμοποιηθεί για την επεξεργασία στοιχείων ελέγχου RadioButton (κουμπιά επιλογής) που μοιράζονται το ίδιο όνομα ομάδας. Σε αυτό το παράδειγμα, ας υποθέσουμε ότι υπάρχουν τρία κουμπιά επιλογής με ονόματα optA, optB και optC και θέλουμε να εμφανίσουμε τον τίτλο του επιλεγμένου στοιχείου ελέγχου.
     Dim oDoc as Object, myForm as Object
     Set oDoc = CreateScriptService("SFDocuments.Document", ThisDataBaseDocument)
     myForm = oDoc.Forms("formDocumentName", "formName")
     Dim optNames As Object : optNames = Array("optA", "optB", "optC")
     Dim optControl as Object, opt as Variant
     For Each opt In optNames
         optControl = myForm.Controls(opt)
         If optControl.Value = True Then
             MsgBox "Επιλεγμένη επιλογή: " & optControl.Caption
             Exit For
         End If
     Next opt
   
     bas = CreateScriptService('ScriptForge.Basic') # μέθοδοι μορφής Basic
     doc = CreateScriptService('SFDocuments.Document', bas.ThisDatabaseDocument)
     form = doc.Forms('formDocumentName', 'formName')
     radio_buttons = ['optA', 'optB', 'optC']
     for name in radio_buttons:
        control = form.controls(name)
        if control.Value == True:
           bas.MsgBox('Επιλεγμένη επιλογή: ' + control.Caption)
           break