LibreOfficeDev 25.8 Βοήθεια
Η υπηρεσία PopupMenu μπορεί να χρησιμοποιηθεί για τη δημιουργία αναδυόμενων μενού που μπορούν να συσχετιστούν με συμβάντα ή να εκτελεστούν από σενάρια. Αυτή η υπηρεσία παρέχει τις ακόλουθες δυνατότητες:
Δημιουργία αναδυόμενων μενού με προσαρμοσμένες καταχωρήσεις, πλαίσια ελέγχου και κουμπιά επιλογής.
Διακόσμηση στοιχείων μενού με εικονίδια και συμβουλές οθόνης.
Πριν χρησιμοποιήσετε την υπηρεσία PopupMenu, πρέπει να φορτωθεί ή να εισαχθεί η βιβλιοθήκη ScriptForge:
Η υπηρεσία PopupMenu μπορεί να δημιουργηθεί με πολλούς τρόπους. Το παρακάτω παράδειγμα δημιουργεί ένα αναδυόμενο μενού χωρίς να το συσχετίζει με ένα συμβάν ποντικιού ή εφαρμογής.
    Sub ShowPopup
        GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
        Dim myPopup As Object
        Set myPopup = CreateScriptService("SFWidgets.PopupMenu", , 300, 300)
        myPopup.AddItem("Item ~A")
        myPopup.AddItem("Item ~B")
        vResponse = myPopup.Execute()
        MsgBox("Επιλεγμένο αναγνωριστικό στοιχείου:" & vResponse)
        myPopup.Dispose()
    End Sub
  Η εκτέλεση του Sub που ορίζεται παραπάνω θα δημιουργήσει ένα αναδυόμενο μενού με δύο καταχωρήσεις στη θέση X=300 και Y=300 στην οθόνη.
Το πρόθεμα SFWidgets μπορεί να καταργηθεί κατά την κλήση της υπηρεσίας PopupMenu.
Το ακόλουθο παράδειγμα ορίζει ένα Sub που μπορεί να συσχετιστεί με ένα συμβάν του ποντικιού:
    Sub MyPopupClick(Optional poMouseEvent as Object)
        Dim myPopup As Object
        Set myPopup = CreateScriptService("PopupMenu", poMouseEvent)
        ' Συμπλήρωση του αναδυόμενου μενού με στοιχεία
        Dim vResponse As Variant
        vResponse = myPopup.Execute(False)
        ' Εκτελέστε κάτι με βάση το vResponse
        ' ...
        myPopup.Dispose()
    End Sub
  Χρησιμοποιήστε τη μέθοδο Dispose (Απόρριψη) για να ελευθερώσετε πόρους μετά την εκτέλεση του αναδυόμενου μενού.
Είναι επίσης δυνατός ο συσχετισμός ενός αναδυόμενου μενού με συμβάντα που ενεργοποιούνται από τις εφαρμογές του LibreOfficeDev, στοιχεία ελέγχου φορμών και διαλόγου. Συμβάντα όπως "Πατήθηκε το κουμπί του ποντικιού" και "Το πλήκτρο του ποντικιού απελευθερώθηκε" συνήθως συσχετίζονται με αναδυόμενα μενού.
    Sub MyPopupClick(Optional poEvent as Object)
        Dim myPopup As Object
        Set myPopup = CreateScriptService("PopupMenu", poEvent)
        ' ...
    End Sub
  Τα παραπάνω παραδείγματα μπορούν να γραφτούν στην Python ως εξής:
    from scriptforge import CreateScriptService
    
    def show_popup(args=None):
        my_popup = CreateScriptService("SFWidgets.PopupMenu", None, 300, 300)
        bas = CreateScriptService("Basic")
        my_popup.AddItem("Item ~A")
        my_popup.AddItem("Item ~B")
        response = my_popup.Execute()
        bas.MsgBox(f"Selected item ID: {response}")
        my_popup.Dispose()
  
    def my_popup_click(poEvent=None):
        my_popup = CreateScriptService("SFWidgets.PopupMenu", poEvent)
        # Συμπλήρωση του αναδυόμενου μενού με στοιχεία
        response = my_popup.Execute()
        # Εκτελέστε κάτι με βάση την απόκριση
        my_popup.Dispose()
  | Όνομα | Μόνο για ανάγνωση | Τύπος | Περιγραφή | 
|---|---|---|---|
| ShortcutCharacter | Όχι | String | Χαρακτήρας που χρησιμοποιείται για τον καθορισμό του κλειδιού πρόσβασης ενός στοιχείου μενού. Ο προεπιλεγμένος χαρακτήρας είναι ~. | 
| SubmenuCharacter | Όχι | String | Χαρακτήρας ή συμβολοσειρά που καθορίζει τον τρόπο ένθεσης των στοιχείων μενού. Ο προεπιλεγμένος χαρακτήρας είναι >. | 
Για να δημιουργήσετε ένα αναδυόμενο μενού με υπομενού, χρησιμοποιήστε τον χαρακτήρα που ορίζεται στην ιδιότητα SubmenuCharacter, ενώ δημιουργείτε την καταχώρηση μενού για να ορίσετε πού θα τοποθετηθεί. Για παράδειγμα, εξετάστε την ακόλουθη ιεραρχία μενού/υπομενού.
    ' Item A
    ' Item B > Item B.1
    '          Item B.2
    ' ------ (line separator)
    ' Item C > Item C.1 > Item C.1.1
    '                     Item C.1.2
    ' Item C > Item C.2 > Item C.2.1
    '                     Item C.2.2
    '                     ------ (line separator)
    '                     Item C.2.3
    '                     Item C.2.4
  Ο παρακάτω κώδικας χρησιμοποιεί τον προεπιλεγμένο χαρακτήρα υπομενού > για να δημιουργήσει την ιεραρχία μενού/υπομενού που ορίζεται παραπάνω:
    myPopup.AddItem("Item A")
    myPopup.AddItem("Item B>Item B.1")
    myPopup.AddItem("Item B>Item B.2")
    myPopup.AddItem("---")
    myPopup.AddItem("Item C>Item C.1>Item C.1.1")
    myPopup.AddItem("Item C>Item C.1>Item C.1.2")
    myPopup.AddItem("Item C>Item C.2>Item C.2.1")
    myPopup.AddItem("Item C>Item C.2>Item C.2.2")
    myPopup.AddItem("Item C>Item C.2>---")
    myPopup.AddItem("Item C>Item C.2>Item C.2.3")
    myPopup.AddItem("Item C>Item C.2>Item C.2.4")
  Η συμβολοσειρά --- χρησιμοποιείται για τον ορισμό διαχωριστικών γραμμών σε μενού ή υπομενού.
Τα στοιχεία στο μενού μπορούν να έχουν εικονίδια, τα οποία καθορίζονται ως ορίσματα στις μεθόδους AddCheckBox, AddItem και AddRadioButton.
Όλα τα εικονίδια που είναι διαθέσιμα στο LibreOfficeDev μπορούν να χρησιμοποιηθούν καθορίζοντας τη διαδρομή τους σε σχέση με το φάκελο όπου βρίσκονται τα αρχεία εικονιδίων στο φάκελο εγκατάστασης. Τα εικονίδια βρίσκονται στον ακόλουθο φάκελο:
INSTALLDIR/share/config
Χρησιμοποιήστε την ιδιότητα InstallFolder της υπηρεσίας FileSystem για να προσδιορίσετε πού είναι εγκατεστημένο το LibreOfficeDev στο σύστημά σας.
Αυτός ο φάκελος περιέχει μια σειρά από αρχεία ZIP που περιέχουν τα αρχεία εικόνας κάθε διαθέσιμου συνόλου εικονιδίων. Οι εικόνες μέσα σε αυτά τα αρχεία ZIP είναι οργανωμένες σε φακέλους. Για να χρησιμοποιήσετε ένα εικονίδιο, καθορίστε το αρχείο εικονιδίου με τη διαδρομή προς τη θέση του μέσα στο αρχείο ZIP.
Το παρακάτω παράδειγμα χρησιμοποιεί το εικονίδιο "sc_newdoc.svg" που βρίσκεται μέσα στο φάκελο "cmd". Ο χαρακτήρας "/" χρησιμοποιείται ως διαχωριστικό διαδρομής ανεξάρτητα από το λειτουργικό σύστημα.
      myMenu.AddItem("Item A", Icon := "cmd/sc_newdoc.svg")
    
      myMenu.AddItem("Item A", icon="cmd/sc_newdoc.svg")
    Όλα τα σύνολα εικονιδίων έχουν την ίδια εσωτερική δομή. Το ενεργό εικονίδιο που εμφανίζεται εξαρτάται από το σύνολο εικονιδίων που χρησιμοποιείται.
| Κατάλογος μεθόδων στην υπηρεσία PopupMenu | ||
|---|---|---|
Εισάγει ένα πλαίσιο ελέγχου στο αναδυόμενο μενού. Επιστρέφει μια ακέραια τιμή που προσδιορίζει το στοιχείο που έχει εισαχθεί.
svc.AddCheckBox(menuitem: str, opt name: str, opt status: bool = False, opt icon: str, opt tooltip: str): int
menuitem: (στοιχείο μενού:) Καθορίζει το κείμενο που θα εμφανίζεται στο μενού. Αυτό το όρισμα ορίζει επίσης την ιεραρχία του στοιχείου μέσα στο μενού χρησιμοποιώντας τον χαρακτήρα του υπομενού.
name: (όνομα:) Τιμή συμβολοσειράς που θα επιστραφεί όταν πατηθεί το στοιχείο. Από προεπιλογή, χρησιμοποιείται το τελευταίο στοιχείο της ιεραρχίας του μενού.
status: (κατάσταση:) Καθορίζει εάν το στοιχείο επιλέγεται κατά τη δημιουργία του μενού (Προεπιλογή = False).
icon: (εικονίδιο:) Η διαδρομή και το όνομα του εικονιδίου που θα εμφανιστεί χωρίς το αρχικό διαχωριστικό της διαδρομής. Το πραγματικό εικονίδιο που εμφανίζεται εξαρτάται από το χρησιμοποιούμενο σύνολο των εικονιδίων.
tooltip: Το κείμενο που θα εμφανίζεται ως επεξήγηση εργαλείου.
      myPopup.AddCheckBox("Option A", Status := True)
    
      my_popup.AddCheckBox("Option A", status=True)
    Εισάγει μια καταχώρηση μενού στο αναδυόμενο μενού. Επιστρέφει μια ακέραια τιμή που προσδιορίζει το στοιχείο που έχει εισαχθεί.
svc.AddItem(menuitem: str, opt name: str, opt icon: str, opt tooltip: str): int
menuitem: (στοιχείο μενού:) Καθορίζει το κείμενο που θα εμφανίζεται στο μενού. Αυτό το όρισμα ορίζει επίσης την ιεραρχία του στοιχείου μέσα στο μενού χρησιμοποιώντας τον χαρακτήρα του υπομενού.
name: (όνομα:) Τιμή συμβολοσειράς που θα επιστραφεί όταν πατηθεί το στοιχείο. Από προεπιλογή, χρησιμοποιείται το τελευταίο στοιχείο της ιεραρχίας του μενού.
icon: (εικονίδιο:) Η διαδρομή και το όνομα του εικονιδίου που θα εμφανιστεί χωρίς το αρχικό διαχωριστικό της διαδρομής. Το πραγματικό εικονίδιο που εμφανίζεται εξαρτάται από το χρησιμοποιούμενο σύνολο των εικονιδίων.
tooltip: Το κείμενο που θα εμφανίζεται ως επεξήγηση εργαλείου.
      myPopup.AddItem("Στοιχείο A", Tooltip := "Ένα περιγραφικό μήνυμα")
    
      my_popup.AddItem("Στοιχείο A", tooltip = "Ένα περιγραφικό μήνυμα")
    Εισάγει μια καταχώρηση πλήκτρου επιλογής στο αναδυόμενο μενού. Επιστρέφει μια ακέραια τιμή που προσδιορίζει το στοιχείο που έχει εισαχθεί.
svc.AddRadioButton(menuitem: str, opt name: str, opt status: bool = False, opt icon: str, opt tooltip: str): int
menuitem: (στοιχείο μενού:) Καθορίζει το κείμενο που θα εμφανίζεται στο μενού. Αυτό το όρισμα ορίζει επίσης την ιεραρχία του στοιχείου μέσα στο μενού χρησιμοποιώντας τον χαρακτήρα του υπομενού.
name: (όνομα:) Τιμή συμβολοσειράς που θα επιστραφεί όταν πατηθεί το στοιχείο. Από προεπιλογή, χρησιμοποιείται το τελευταίο στοιχείο της ιεραρχίας του μενού.
status: (κατάσταση:) Καθορίζει εάν το στοιχείο επιλέγεται κατά τη δημιουργία του μενού (Προεπιλογή = False).
icon: (εικονίδιο:) Η διαδρομή και το όνομα του εικονιδίου που θα εμφανιστεί χωρίς το αρχικό διαχωριστικό της διαδρομής. Το πραγματικό εικονίδιο που εμφανίζεται εξαρτάται από το χρησιμοποιούμενο σύνολο των εικονιδίων.
tooltip: Το κείμενο που θα εμφανίζεται ως επεξήγηση εργαλείου.
      myPopup.AddRadioButton("Option A", Name := "A", Status := True)
    
      my_popup.AddRadioButton("Option A", name="A", status=True)
    Εμφανίζει το αναδυόμενο μενού και περιμένει μια ενέργεια του χρήστη. Επιστρέφει το στοιχείο που πάτησε ο χρήστης.
Εάν ο χρήστης πατήσει έξω από το αναδυόμενο μενού ή πατήσει το πλήκτρο Esc, τότε δεν επιλέγεται κανένα στοιχείο. Σε τέτοιες περιπτώσεις, η επιστρεφόμενη τιμή εξαρτάται από την παράμετρο returnid. Αν returnid = True και δεν έχει επιλεγεί κανένα στοιχείο, τότε επιστρέφεται η τιμή 0 (μηδέν). Διαφορετικά, επιστρέφεται μια κενή συμβολοσειρά "".
svc.Execute(opt returnid: bool = True): any
returnid: Εάν True επιστρέφεται το επιλεγμένο αναγνωριστικό στοιχείου. Εάν False η μέθοδος επιστρέφει το όνομα του στοιχείου (Προεπιλογή = True).
Στα παρακάτω παραδείγματα, δημιουργείται ένα αναδυόμενο μενού και το όνομα του στοιχείου επιστρέφεται επειδή το όρισμα returnid έχει οριστεί σε False.
      myPopup.AddItem("Item A", Name := "A")
      myPopup.AddItem("Item B", Name := "B")
      Dim vResponse as Variant
      vResponse = myPopup.Execute(False)
    
      my_popup.AddItem("Item A", name="A")
      my_popup.AddItem("Item B", name="B")
      response = my_popup.Execute(False)