InfoPath のリボンのカスタマイズ
Microsoft Office InfoPath でリボンをカスタマイズする場合、アプリケーションのどこにカスタム リボンを表示するかを検討する必要があります。InfoPath 2010 では、次の 3 種類の InfoPath アプリケーション ウィンドウにリボンを表示できます。
デザイン モードで開くフォーム テンプレートを表示するウィンドウ。
フォーム テンプレートを基にしたフォームを表示するウィンドウ。
[印刷プレビュー] ウィンドウ。
適用されます: は、このトピックの情報 InfoPath 2010 のアプリケーション レベルのプロジェクトを適用します。詳細については、「Office アプリケーションおよびプロジェクト タイプ別の使用可能な機能」を参照してください。
ユーザーとデザイナーは、フォーム テンプレートをデザイン モードで開き、テンプレートの外観とレイアウトを変更します。ユーザーは、フォーム テンプレートを基にしたフォームを開き、コンテンツを追加します。詳細については、「Switch form designing a form template to filling out a form (フォーム テンプレートのデザインからフォームへの入力に切り替える)」を参照してください。
[印刷プレビュー] ウィンドウでは、デザイナーとユーザーがフォームまたはフォーム テンプレートを印刷前にプレビューできます。
[!メモ]
[印刷プレビュー] ウィンドウには [AddIns] タブは表示されません。[印刷プレビュー] ウィンドウにカスタム タブを表示する場合は、タブの OfficeId プロパティが TabAddIns に設定されていないことを確認してください。
リボンを表示する各ウィンドウのリボンの種類を指定する必要があります。
リボン デザイナーでのリボンの種類の指定
リボン (ビジュアルなデザイナー) 項目を使用する場合は、[プロパティ] ウィンドウでリボンの [RibbonType] プロパティをクリックし、次の表に示すリボン ID を選択します。
リボン ID |
プロジェクトの実行時にリボンが表示されるウィンドウ |
---|---|
Microsoft.InfoPath.Designer |
デザイン モードで開くフォーム テンプレートを表示するウィンドウ。 |
Microsoft.InfoPath.Editor |
フォーム テンプレートを基にしたフォームを表示するウィンドウ。 |
Microsoft.InfoPath.PrintPreview |
[印刷プレビュー] ウィンドウ。 |
1 つのプロジェクトに複数のリボンを追加することができます。複数のリボンで 1 つのリボン ID を共有する場合は、プロジェクトの ThisAddin クラスの CreateRibbonExtensibilityObject メソッドをオーバーライドし、実行時に表示するリボンを指定します。詳細については、「リボンの概要」を参照してください。
リボン XML を使用したリボンの種類の指定
リボン (XML) 項目を使用する場合は、IRibbonExtensibility.GetCustomUI メソッドの ribbonID パラメーターの値を調べて、適切なリボンを返します。
IRibbonExtensibility.GetCustomUI メソッドは、Visual Studio によってリボン コード ファイルに自動的に生成されます。ribbonID パラメーターは、開いている InfoPath ウィンドウの種類を識別する文字列です。
デザイン モードでフォーム テンプレートを表示するウィンドウにのみカスタム リボンを表示する方法を次のコード例に示します。表示するリボンは、リボン クラスで生成される GetResourceText() メソッドで指定します。リボン クラスの詳細については、「リボン XML」を参照してください。
Public Function GetCustomUI(ByVal ribbonID As String) As String Implements Office.IRibbonExtensibility.GetCustomUI
Dim ribbonXML As String = String.Empty
If ribbonID = "Microsoft.InfoPath.Designer" Then
ribbonXML = GetResourceText("MyInfoPathProject.Ribbon.xml")
End If
Return ribbonXML
End Function
public string GetCustomUI(string ribbonID)
{
string ribbonXML = String.Empty;
if (ribbonID == "Microsoft.InfoPath.Designer")
{
ribbonXML = GetResourceText("MyInfoPathProject.Ribbon.xml");
}
return ribbonXML;
}