Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

28
Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne

Transcript of Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

Page 1: Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

Het Lint aanpassen

in Office 2007

Sessie B3

Floris M. Kleijne

Page 2: Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

Hoera voor het Lint!!!!

Mooier, beter, flexibeler, duidelijker

Weg met Events, hoera voor Callbacks!

Eindelijk eer van ons werk!

Page 3: Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

Onderwerpen

De eerste stapjes Het Lint aanpassen Hoe nu verder

Vragen? Zodra je ze hebt!

Page 4: Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

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!

Page 5: Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

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

Page 6: Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

Lint ontwerpen: XML

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

Page 7: Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

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>

Page 8: Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

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>

Page 9: Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

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>

Page 10: Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

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>

Page 11: Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

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

Page 12: Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

XML addin Lint

customUI.xml

Mijn sjabloon.dotm Mijn sjabloon.zip Mijn sjabloon.dotm

hernoemen hernoemen

invoegen

Page 13: Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

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)

Page 14: Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

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

Page 15: Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

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

Page 16: Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

Lint en VBA: Callbacks

Callbacks zijn de nieuwe Events! Gebruiker klikt op knopXML:<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 ComboboxXML:<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

Page 17: Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

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

Page 18: Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

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!

Page 19: Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

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”)

Page 20: Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

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

Page 21: Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

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

Page 22: Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

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

Page 23: Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

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

Page 24: Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

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

Page 25: Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

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

Page 26: Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

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>

Page 27: Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

Onderwerpen

De eerste stapjes Het Lint aanpassen Hoe nu verder

Page 28: Het Lint aanpassen in Office 2007 Sessie B3 Floris M. Kleijne.

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