次の方法で共有


コマンド バー ボタンのイメージを使用する

Microsoft Office 2000/Visual Basic プログラマーズ ガイド   

各組み込みコマンド バー ボタンにはイメージが関連付けられています。イメージを含む組み込みボタンの FaceId プロパティの値が明確な場合は、カスタムのコマンド バー ボタンでイメージを使用できます。FaceId プロパティの値は、0 (イメージなし) から、ホスト アプリケーションで使用されるボタンの合計数 (通常は数千イメージ) までです。使用可能なボタン イメージを簡単に参照するには、ツール バーを作成していくつかのボタンを追加し、これらのボタンに FaceId プロパティの値を割り当てます。各ボタンは、指定された Faceid プロパティの値に関連付けられたイメージを表示します。Office 2000 Developer CD-ROM の ODETools\V9\Samples\OPG\Samples\CH06 サブフォルダに含まれる CommandBarSamples.mdb の modCommandBarCode モジュールには、開始時および終了時の FaceId プロパティ値を受け取って、指定したすべてのイメージを表示するツール バーを作成する CBShowButtonFaceIDs プロシージャが含まれます。たとえば、200 ~ 299 までの値を持つボタンのイメージを表示するには、[イミディエイト] ウィンドウで CBShowButtonFaceIDs を次のように呼び出します。

  ? CBShowButtonFaceIDs(200, 299)

これにより、ボタンのイメージが図 6.4 のように表示されます。

6.4 組み込みツール バー アイコン

コマンド バー上のイメージに対する FaceId プロパティの値を表示するには、ボタン名に値が表示されるまでマウス ポインタをイメージ上に置きます。

コマンド バー ボタンのイメージをほかのボタンにコピーする別の方法は、CommandBars コレクションの FindControl メソッドを使用し、コピーするイメージの FaceId プロパティの値を指定することです。次に、CommandBarControl オブジェクトの CopyFace メソッドと PasteFace メソッドを使用して、イメージを新しいコントロールにコピーします。次のサンプル コードでは、これらのメソッドを使用して、既存のコマンド バー ボタンに関連付けられたアイコンを新しいコマンド バー ボタンに貼り付ける方法を示します。

  Private Sub CBCopyIconDemo()
   ' このプロシージャは、既存のツール バー ボタンに関連付けられたイメージを
   ' 新しいツール バー ボタンにコピーする方法を示します。この例では、
   ' [ヘルプ] メニューの "トピックの検索" コントロールのイメージを
   ' 新しいコマンド バー コントロールにコピーします。
   
   Dim cbrNew                As CommandBar
   Dim ctlNew                As CommandBarControl

   Const ERR_CMDBAR_EXISTS   As Long = 5
   
   On Error Resume Next
   Set cbrNew = CommandBars.Add("TestCopyFaceIcon")
   If Err = ERR_CMDBAR_EXISTS Then
      Call CBDeleteCommandBar("TestCopyFaceIcon")
      Set cbrNew = CommandBars.Add("TestCopyFaceIcon")
   ElseIf Err <> 0 Then

      Exit Sub
   End If
   On Error GoTo 0
   Set ctlNew = cbrNew.Controls.Add(msoControlButton)
   Call CBCopyControlFace("ヘルプ", "トピックの検索")
   
   With ctlNew
      .PasteFace
   End With
   cbrNew.Visible = True
End Sub

CBCopyIconDemo プロシージャは、Office 2000 Developer CD-ROM の ODETools\V9\Samples\OPG\Samples\CH06 サブフォルダに含まれる CH06_2.mdb の modCommandBarCode モジュールにあります。

このプロシージャは、そのほかに 2 つのカスタム プロシージャを呼び出します。前のトピックで説明した CBDeleteCommandbar プロシージャは、コマンド バーが既に存在する場合にそのコマンド バーを削除します。CBCopyControlFace プロシージャは、指定したコントロールのイメージをクリップボードにコピーします。

  Function CBCopyControlFace(strCBarName As String, _
                         strCtlCaption As String)
                     
   ' このプロシージャは、CopyFace メソッドを使用して、strCtlCaption 引数で
   ' 指定されたコントロールのイメージをクリップボードにコピーします。
   
   Dim ctlCBarControl As CommandBarControl
   
   Set ctlCBarControl = CommandBars.FindControl(msoControlButton, _
      CBGetControlID(strCBarName, strCtlCaption))
   ctlCBarControl.CopyFace
End Function

CBCopyControlFace プロシージャは、Office 2000 Developer CD-ROM の ODETools\V9\Samples\OPG\Samples\CH06 サブフォルダに含まれる CommandBarSamples.mdb の modCommandBarCode モジュールにあります。

CBCopyControlFace プロシージャは、CBGetControlID プロシージャを FindControl メソッドの Id 引数として使用します。CBGetControlID プロシージャは、指定したコントロールの Id プロパティを次の行を使用して返します。

  CBGetControlID = Application.CommandBars(strCBarName) _
   .Controls(strControlCaption).ID

また、CommandBar オブジェクトは、指定されたコントロールをこの CommandBar オブジェクト自体のみで検索する FindControl メソッドをサポートします。

これらのプロシージャをまとめて表示するには、挿入ポイント (カーソル) を CBCopyIconDemo プロシージャの任意の場所に置き、F8 キーを押してコードをステップ実行します。ほかのイメージを新しいコントロールにコピーするには、コマンド バーとコントロールの名前を変更します。