Ich möchte die Anzahl der Schaltflächen in der Gruppe einer Multifunktionsleiste in Word 2007 begrenzen, wie die Schaltflächen auf der Grundlage der Daten in der generiert werden Datenbank. Siehe das Bild unten. . Ich wollte eine begrenzte Anzahl haben, sagen wir 6 oder so in der Multifunktionsleiste mit einem Dialogboxlauncher, der beim Klicken öffnet einen Bereich mit allen Tasten. Gibt es einen Weg, das Gleiche zu tun? Kann mir jemand sagen, wie ich diesen Bereich erstellen soll, wenn jemand auf den Startbildschirm des Dialogfelds klickt?OpenXML - Begrenzung der Anzahl der Schaltflächen in der Gruppe in benutzerdefinierten MS-Word Multifunktionsleiste
Antwort
Die Art, wie ich es getan habe, ist, einige (sagen wir 6) der Elemente in der Multifunktionsleiste als Schaltflächen zu laden und alle Elemente als CustomXMlPart im Dokument hinzuzufügen. In dem Dokument habe ich ein Benutzersteuerelement hinzugefügt, das eine Listbox enthielt. Auf der Multifunktionsleiste lade ich alle Elemente aus dem CustomXmlPart und lege sie in die Listbox. Klicken Sie auf der Dialogbox Launcher-Schaltfläche, um das Benutzersteuerelement anzuzeigen/auszublenden, um alle Elemente in der Liste anzuzeigen.
Im Folgenden sind die Schritte im Detail: -
a) Holen Sie sich alle Artikel aus der Datenbank und hält, dass in der Sammlung. b) Generieren Sie das Band XML wie folgt Withe die Tasten 6 aus der obigen Sammlung: -
<?xml version="1.0" encoding="utf-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="RibbonLoad">
<ribbon>
<tabs>
<tab id="tabMyTab" label="MyTab">
<group id="grpItems" label="My items">
<button id="test1" label="test1"/>
<button id="test2" label="test2"/>
<button id="test3" label="test3"/>
<button id="test4" label="test4"/>
<button id="test5" label="test5"/>
<button id="test6" label="test6"/>
<dialogBoxLauncher>
<button id="btnShowAllItems" label="Show all custom tags" onAction="ShowAllItems" />
</dialogBoxLauncher>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
c) Fügen Sie die Sammlung als CustomXMLPart auf das Dokument: -
static void AddCustomTableXmlPart(WordprocessingDocument document)
{
MainDocumentPart mainDocumentPart = document.MainDocumentPart;
XDocument customTagsXml = GetAllItemsAsCustomXML();
if (mainDocumentPart.GetPartsCountOfType<CustomXmlPart>() > 0)
mainDocumentPart.DeleteParts<CustomXmlPart>(mainDocumentPart.CustomXmlParts);
//Add a new customXML part and then add content
var customXmlPart = mainDocumentPart.AddCustomXmlPart(CustomXmlPartType.CustomXml);
//copy the XML into the new part...
using (var ts = new StreamWriter(customXmlPart.GetStream()))
{
ts.Write(customTagsXml.ToString());
ts.Flush();
}
}
d) Go Fügen Sie auf der Entwicklerregisterkarte Ihrer Dokumentdatei ein Benutzerformular zum Projekt hinzu und fügen Sie ein Listenfeld hinzu. Schreiben Sie eine Subroutine, die die Elemente aus dem CustomXMlPart lädt, das bereits zum Dokument hinzugefügt wurde, und diese Elemente zur Listbox im Benutzerformular hinzufügt. So etwas wie unten: -
Sub LoadItems()
Dim totalItemsCount As Integer
totalItemsCount = ActiveDocument.CustomXMLParts(ActiveDocument.CustomXMLParts.Count).SelectNodes("//Items")(1).ChildNodes.Count
Dim item As String
For i = 1 To totalItemsCount
item = ActiveDocument.CustomXMLParts(ActiveDocument.CustomXMLParts.Count).SelectNodes("//Items")(1).ChildNodes(i).text
' I had to remove the spaced before adding it as It was throwing errors
item = Replace(item, " ", Empty)
If Len(item) > 1 Then
ItemUserControl.lstItems.AddItem pvargItem:item
End If
Next i
End Sub
e) Definieren Sie die Unter namens RibbonLoad, die von dem Ereignis onLoad des Bandes (siehe Info RibbonXML) aufgerufen wird. Rufen Sie die LoadItems-Sub aus dieser RibbonLoad-Sub auf.
Sub RibbonLoad(ribbon As IRibbonUI)
LoadItems
End Sub
f) Definieren Sie das folgende Sub, das das Benutzersteuerelement ein-/ausblenden soll. Dies wird auf der onAction der Schaltfläche dialogBoxLauncher aufgerufen. (siehe RibbonXML)
Sub ShowAllItemss(control As IRibbonControl)
If ItemsUserControl.Visible = False Then
If ItemsUserControl.lstItems.ListCount = 0 Then
LoadCustomTags
End If
ItemsUserControl.Show
Else
ItemsUserControl.Hide
End If
End Sub
- 1. Begrenzung der Anzahl der Objekte in NSArrayController
- 2. Word-Add-in erstellt keine Schaltflächen in der Multifunktionsleiste
- 3. xlwt Begrenzung der Anzahl der Zeilen
- 4. Begrenzung der Anzahl der Datensätze von mysqldump?
- 5. log4j2 - Begrenzung der Anzahl der Protokolldateien
- 6. Begrenzung der Anzahl generischer Parameter in .NET?
- 7. WP7 Begrenzung der Anzahl der MediaElements
- 8. Begrenzung der CPU-Anzahl für einen Benutzer
- 9. Begrenzung der Anzahl der Zeilen in einer ContentResolver.query() - Funktion
- 10. Django: Begrenzung der Anzahl der Beziehungen in einer OnetoMany-Beziehung
- 11. Begrenzung der maximalen Anzahl der aufgerollten Protokolldateien in log4j2
- 12. Pandas HDF Begrenzung der Anzahl der Zeilen der CSV-Datei
- 13. Begrenzung der Anzahl der von der JVM verwendeten Threads
- 14. Begrenzung der gleichzeitigen Threads gleich der Anzahl der Prozessoren?
- 15. Bash: Begrenzung der Anzahl gleichzeitiger Jobs?
- 16. mod_rewrite Anzahl der Parameter/Rückreferenzierungen Begrenzung
- 17. Begrenzung Anzahl der Eingangswerte in einem Array/Liste in Python
- 18. über die Anzahl der Datei-Deskriptoren Begrenzung
- 19. Ansible: Anzahl der Hosts in Gruppe
- 20. Akteur-Modellmuster: Begrenzung der Anzahl der gleichzeitig laufenden Akteure
- 21. Regulärer Ausdruck zur Begrenzung der Anzahl der Zeichen auf 10
- 22. Begrenzung der Gesamtzahl der Ergebnisse in solr
- 23. Multiprocessing in Python bei gleichzeitiger Begrenzung der Anzahl laufender Prozesse
- 24. Begrenzung der FPS in AndEngine
- 25. Begrenzung der Anzahl der in der Tabelle gelöschten Zeilen ohne PK
- 26. Fehler bei der Begrenzung der Anzahl der Tags in einem TagInputField
- 27. Begrenzung der parallelen Browser-Instanz in Karma
- 28. Begrenzung der Zeichenzahl für Primärschlüssel
- 29. Anzahl der Befehle in Dockerfile
- 30. Verwenden von XML zum Hinzufügen einer benutzerdefinierten Schaltfläche in der Meeting-Anforderungs-Multifunktionsleiste von Outlook 2013