Download
het lint aanpassen in office 2007 n.
Skip this Video
Loading SlideShow in 5 Seconds..
Het Lint aanpassen in Office 2007 PowerPoint Presentation
Download Presentation
Het Lint aanpassen in Office 2007

Het Lint aanpassen in Office 2007

210 Vues Download Presentation
Télécharger la présentation

Het Lint aanpassen in Office 2007

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Het Lint aanpassenin Office 2007 Sessie B3 Floris M. Kleijne

  2. Hoera voor het Lint!!!! • Mooier, beter, flexibeler, duidelijker • Weg met Events, hoera voor Callbacks! • Eindelijk eer van ons werk!

  3. Onderwerpen • De eerste stapjes • Het Lint aanpassen • Hoe nu verder • Vragen? Zodra je ze hebt!

  4. De eerste stapjes • Deze lezing  • Koop het boek! • Outlook? Koop ook het andere boek!(en Visual Studio) • Download de Custom UI Editor • Download XML Notepad • Of gebruik je eigen favoriete XML-editor • Aan het werk!

  5. Onderwerpen • De eerste stapjes • Het Lint aanpassen • Lint ontwerpen: XML • XML  addin  Lint • Lint en VBA: Callbacks • Lint en plaatjes • Dynamische keuzelijsten • Dynamische menu’s • Hoe nu verder

  6. Lint ontwerpen: XML • customUI.xml: • Ontwerp van eigen ribbon gecodeerd in XML • Ribbon - Tabs - Groups - Controls • Objects  Elements • Properties  Attributes

  7. Lint ontwerpen: XML <customUI xmlns=“http://schemas.microsoft.com/office/2006/01/customui”> <ribbon startFromScratch=“false”> <tabs> <!-- hier de definitie van alle eigen en aangepaste tabs --> </tabs> </ribbon> </customUI>

  8. Lint ontwerpen: XML <tab id="tabHuisstijl" label="Huisstijl ITeach" insertBeforeMso="TabReferences"> <group id="grpTemplates" label="Sjablonen"> <!-- hier alle Controls van de eerste Group --> </group> <group id="grpLogos" label="Logo's"> <!-- hier alle Controls van de tweede Group --> </group> <group id="grpAutoText" label="AutoText"> <!-- hier alle Controls van de derde Group --> </group> </tab>

  9. Lint ontwerpen: XML <group id="grpTemplates" label="Sjablonen"> <button idMso="FileNew" label="Nieuw document" /> <dynamicMenu id="dmnTemplates“ label="Nieuw document..." getContent="dmnTemplates_GetContent" /> <!-- overige knoppen in deze groep, zie volgende slide --> <dialogBoxLauncher> <button idMso="FileLocations” /> </dialogBoxLauncher> </group>

  10. Lint ontwerpen: XML <box id="boxDocuments" boxStyle="horizontal"> <box id="boxLeftButtons" boxStyle="vertical"> <button id=“Brief" label="Brief“ image="Brief“ onAction="MakeDoc" /> <button id=“Fax" label="Fax" image="Fax“ onAction="MakeDoc“ /> </box> <box id="boxRightButtons" boxStyle="vertical"> <button id=“Memo" label="Memo“ image="Memo“ onAction="MakeDoc“/> <button id=“Offerte" label="Offerte" image="Offerte“ onAction="MakeDoc“ /> </box> </box>

  11. Onderwerpen • De eerste stapjes • Het Lint aanpassen • Lint ontwerpen: XML • XML  addin  Lint • Lint en VBA: Callbacks • Lint en plaatjes • Dynamische keuzelijsten • Dynamische menu’s • Hoe nu verder

  12. XML  addin  Lint customUI.xml invoegen hernoemen hernoemen Mijn sjabloon.dotm Mijn sjabloon.zip Mijn sjabloon.dotm

  13. XML  addin  Lint • Handiger: tools • XML opbouwen • Ontwerp Lint • Bouw Lint-XML in XML Notepad • Kopiëren naar sjabloon • Open in (gewoon) Notepad en kopieer de XML • Open de addin in Custom UI Editor • Plak de XML-code • Werkt voor Word (dotm) en Excel (xlam)

  14. XML  addin  Lint • Access • Tabel USysRibbons • Memo-veld voor XML • Database-eigenschappen  lint kiezen • Of in run-time laden vanuit code • Outlook • Uitsluitend via COM-addin • Dus Visual Studio nodig

  15. Onderwerpen • De eerste stapjes • Het Lint aanpassen • Lint ontwerpen: XML • XML  addin  Lint • Lint en VBA: Callbacks • Lint en plaatjes • Dynamische keuzelijsten • Dynamische menu’s • Hoe nu verder

  16. Lint en VBA: Callbacks • Callbacks zijn de nieuwe Events! • Gebruiker klikt op knop XML:<button id=“btnBrief" label="Brief“ image="Brief“ onAction="MakeDoc" /> VBA:Public Sub MakeDoc(control As IRibbonControl) ‘control is de geklikte knop End Sub • Gebruiker kiest in Combobox XML:<comboBox id=“cboAutoText“ onChange=“AutoTextGekozen" /> VBA:Public Sub cboAutoText_OnChange(control As IRibbonControl, _ text As String) ‘control is de ComboBox waarin de keuze is gemaakt ‘text is de gekozen optie End Sub

  17. Lint en VBA: Callbacks • Callbacks zijn de nieuwe Properties! • Statische attributes (“Properties”): XML:<button id=“btnBrief" label="Brief“ enabled=“true” visible=“true” /> • Dynamische attributes (“Properties”): XML:<button id=“btnBrief" label="Brief“ getEnabled=“KnopAanOfUit” getVisible=“KnopTonenVerbergen” /> VBA:Public Sub KnopAanOfUit(control As IRibbonControl, ByRef returnedVal) ‘Stel de returnedVal op True of False om Enabled aan of uit te zetten End Sub Public Sub KnopTonenVerbergen(control As IRibbonControl, _ ByRef returnedVal) ‘Stel de returnedVal op True of False om Visible aan of uit te zette End Sub

  18. Lint en VBA: Callbacks • Properties van Controls zijn nu (dynamische) Attributes van Elements • .Caption  label / getLabel • .Enabled  enabled / getEnabled • .Picture  image / getImage • .Visible  visible / getVisible • Callback Signature moet precies goed! • Net als bij Events • Gebruik Custom UI Editor voor de Callbacks!

  19. Lint en VBA: Callbacks • Wanneer roept Office callbacks aan? • Bij opbouwen Lint • Zo nu en dan spontaan uit zichzelf • Niet altijd als het nodig is • Forceer aanroep van callbacks: XML:<ribbon onLoad=“Ribbon_Onload”> VBA:Public WithEvents goRibbon As IRibbonUI Public Sub Ribbon_OnLoad(ribbon As IRibbonUI) Set goRibbon = ribbon End Sub ‘Wanneer je btnBrief wil verversen: Call goRibbon.InvalidateControl(“btnBrief”)

  20. Onderwerpen • De eerste stapjes • Het Lint aanpassen • Lint ontwerpen: XML • XML  addin  Lint • Lint en VBA: Callbacks • Lint en plaatjes • Dynamische keuzelijsten • Dynamische menu’s • Hoe nu verder

  21. Lint en plaatjes <button image=“Plaatje” (etc.)> • Plaatje invoegen met Custom UI Editor • Statisch, altijd hetzelfde plaatje <button getImage=“DynamischPlaatje” (etc.)> • Callback, plaatje in run-time geladen • Procedure “DynamischPlaatje” maakt gebruik van functie “LoadPicture” • InvalidateControl om plaatje te verversen

  22. Onderwerpen • De eerste stapjes • Het Lint aanpassen • Lint ontwerpen: XML • XML  addin  Lint • Lint en VBA: Callbacks • Lint en plaatjes • Dynamische keuzelijsten • Dynamische menu’s • Hoe nu verder

  23. Dynamische keuzelijsten • Statische keuzelijst: <comboBox id=“…” label=“…” onChange=“…”> <item id=“Keuze1” label=“Eerste keus”> <item id=“Keuze2” label=“Tweede keus”> </comboBox> • Gefixeerde lijst, kan in run-time niet wijzigen

  24. Dynamische keuzelijsten • Dynamische keuzelijst: <comboBox id=“…” label=“…” onChange=“…” getItemCount=“HaalAantalItems” getItemID=“HaalItemID” getItemLabel=“HaalItemLabel” /> • Office roept HaalAantalItems 1x aan  weet aantal items • Office roept HaalItemID en HaalItemLabel zo vaak aan als nodig om lijst te vullen

  25. Onderwerpen • De eerste stapjes • Het Lint aanpassen • Lint ontwerpen: XML • XML  addin  Lint • Lint en VBA: Callbacks • Lint en plaatjes • Dynamische keuzelijsten • Dynamische menu’s • Hoe nu verder

  26. Dynamische menu’s • Statisch menu 100% in XML <menu ...> <button ... /> <button ... /> </menu> • Dynamisch menu véél flexibeler <dynamicMenu id="dmnTemplates“ label="Nieuw document..." getContent="dmnTemplates_GetContent" /> • In procedure “dmnTemplates_GetContent wordt de XML opgebouwd van het menu: <menu xmlns="http://schemas.microsoft.com/office/2006/01/customui" > <menuSeparator id="sepUserTemplates" title="Gebruikerssjablonen" /> <button id="template01" label="Brief.dot" onAction="MakeDocument" /> <!-- etc --> </menu>

  27. Onderwerpen • De eerste stapjes • Het Lint aanpassen • Hoe nu verder

  28. Hoe verder • Koop het boek! • 978-0-470-19111-8 • Outlook? Koop ook het andere boek! • 978-0-470-16994-0 • Download de Custom UI Editor • http://openxmldeveloper.org/articles/customuieditor.aspx • Download XML Notepad • http://www.microsoft.com/downloads/details.aspx?familyid=72d6aa49-787d-4118-ba5f-4f30fe913628