Υπηρεσία SFDocuments.FormControl

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

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

warning

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


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

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

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

tip

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


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

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

note

• Οι μακροεντολές 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())
tip

Για να μάθετε περισσότερα σχετικά με το πώς να ανοίξετε ένα 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." ενδέχεται να παραλειφθεί.

note

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


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

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

Ιδιότητες

Όνομα

Μόνο για ανάγνωση

Τύπος

Εφαρμόζεται σε

Περιγραφή

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

Όχι

Μετά την ενημέρωση


tip

Για να μάθετε περισσότερα σχετικά με τις συμβολοσειρές 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
   
warning

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


Παρακαλούμε, υποστηρίξτε μας!