Περιεχόμενα

# Υπηρεσία SFDocuments.FormControl

Η υπηρεσία FormControl παρέχει πρόσβαση στα στοιχεία ελέγχου που ανήκουν σε μια φόρμα, μια υποφόρμα ή ένα στοιχείο ελέγχου πίνακα ενός FormDocument. Κάθε παρουσία της υπηρεσίας FormControl αναφέρεται σε ένα μόνο στοιχείο ελέγχου στη φόρμα. Αυτή η υπηρεσία επιτρέπει στους χρήστες να:

- Να λάβουν και να ορίζουν τις ιδιότητες του στοιχείου ελέγχου που αντιπροσωπεύεται από την παρουσία του FormControl.

- Πρόσβαση στην τρέχουσα τιμή που εμφανίζεται από το στοιχείο ελέγχου.

- Ρυθμίζει την εστίαση στο επιθυμητό στοιχείο ελέγχου.

Για να χρησιμοποιήσετε την υπηρεσία FormControl σε μια συγκεκριμένη φόρμα, υποφόρμα ή στοιχείο ελέγχου πίνακα, όλα τα στοιχεία ελέγχου πρέπει να έχουν μοναδικά ονόματα.

Τα κουμπιά επιλογής που μοιράζονται το ίδιο όνομα ομάδας πρέπει επίσης να έχουν μοναδικά ονόματα ελέγχου.

Ο κύριος σκοπός της υπηρεσίας FormControl είναι ο ορισμός και η λήψη των ιδιοτήτων και των τιμών που εμφανίζονται από τα στοιχεία ελέγχου σε μια φόρμα.

Όλα τα στοιχεία ελέγχου έχουν μια ιδιότητα Value (Τιμή). Ωστόσο, το περιεχόμενό τους θα ποικίλλει ανάλογα με τον τύπο ελέγχου. Για περισσότερες πληροφορίες, διαβάστε την ιδιότητα Value παρακάτω.

Είναι επίσης δυνατό να μορφοποιήσετε τα στοιχεία ελέγχου μέσω των ιδιοτήτων XControlModel και XControlView.

Η υπηρεσία SFDocuments.FormControl σχετίζεται στενά με την υπηρεσία SFDocuments.Form .

## Κλήση υπηρεσίας

Πριν χρησιμοποιήσετε την υπηρεσία FormControl, πρέπει να φορτωθεί ή να εισαχθεί η βιβλιοθήκη ScriptForge:

• Οι μακροεντολές Basic απαιτούν τη φόρτωση της βιβλιοθήκης ScriptForge χρησιμοποιώντας την ακόλουθη πρόταση:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Τα σενάρια Python απαιτούν εισαγωγή από την ενότητα scriptforge:
από το scriptforge import CreateScriptService

Η υπηρεσία 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()

##### Σε Python

          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

##### Σε Python

          def onEvent(event: uno):
              control = CreateScriptService('SfDocuments.FormEvent', event)

Σημειώστε ότι σε προηγούμενα παραδείγματα, το πρόθεμα "SFDocuments." ενδέχεται να παραλειφθεί.

Η υπηρεσία FormEvent χρησιμοποιείται αποκλειστικά για τη δημιουργία παρουσιών των υπηρεσιών SFDocuments.Form και SFDocuments.FormControl όταν λαμβάνει χώρα μια φόρμα ή ένα συμβάν ελέγχου.

## Τύποι ελέγχου

Η υπηρεσία FormControl είναι διαθέσιμη για τους ακόλουθους τύπους ελέγχου:

- Button

- CheckBox

- ComboBox

- CurrencyField

- DateField

- FileControl

- FixedText

- FormattedField

- GroupBox

- HiddenControl

- ImageButton

- ImageControl

- ListBox

- NavigationBar

- NumericField

- PatternField

- RadioButton

- ScrollBar

- SpinButton

- TableControl

- TextField

- TimeField

## Ιδιότητες

Όνομα | Μόνο για ανάγνωση | Τύπος | Εφαρμόζεται σε | Περιγραφή
--- | --- | --- | --- | ---
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, 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 | Όλα | Το αντικείμενο UNO που αντιπροσωπεύει το μοντέλο ελέγχου. Ανατρέξτε στο XControlModel και UnoControlModel στην τεκμηρίωση του API για περισσότερες πληροφορίες.
XControlView | Ναι | Αντικείμενο UNO | Όλα | Το αντικείμενο UNO που αντιπροσωπεύει την προβολή ελέγχου. Ανατρέξτε στο XControl και στο UnoControl στην τεκμηρίωση του API για περισσότερες πληροφορίες.

## Η ιδιότητα Value

Τύπος ελέγχου | Τύπος | Περιγραφή
--- | --- | ---
Button | Boolean | Ισχύει μόνο για πλήκτρα εναλλαγής.
CheckBox | Τιμή Μπουλ ή ακέραιος | 0, False: μη επιλεγμένο 1, True: επιλεγμένο 2: γκριζαρισμένο, δεν γνωρίζω (ισχύει εάν το TripleState είναι True)
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
Controls | SetFocus

## Controls

Αυτή η μέθοδος ισχύει μόνο για στοιχεία ελέγχου του τύπου 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

## SetFocus

Ρυθμίζει την εστίαση στον έλεγχο. Επιστρέφει 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()

##### Σε Python

         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

##### Σε Python

         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

##### Σε Python

         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

Όλες οι ρουτίνες ή αναγνωριστικά του ScriptForge στη Basic που έχουν το πρόθεμα χαρακτήρα υπογράμμισης "_" δεσμεύονται για εσωτερική χρήση. Δεν προορίζονται να χρησιμοποιηθούν σε μακροεντολές Basic ή σενάρια Python.

Σχετικά θέματα

Υπηρεσία ScriptForge.Basic

ΥπηρεσίαSFDocuments.Form

Υπηρεσία SFDocuments.Document