次の方法で共有

クイックアクセスツールバーにあるボタンの状態を制御する方法

Anonymous
2013-05-01T06:54:16+00:00

フォームがアクティブなときに有効なボタンを "クイックアクセスツールバー" に追加しました。

フォーム以外がアクティブなときには このボタンを非表示又は使用不可にしたいと思います。

これを実現できるイベント等のトリガはあるでしょうか。

可視の制御自体は以下の方法で行えると思っています。

<XML>

    <mso:control idQ="mso:MyUndo" visible="SetVisibule"/>

<VBA>

    Sub SetVisibule(control As IRibbonControl, ByRef visible)

        If obj = acform Then

              visible = True

        Else

              visible = False

        End If

    End Sub

Microsoft 365 と Office | アクセス | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2013-05-06T06:39:56+00:00

MukkuMukuです。

テーブルを開いたときなどアクティブなオブジェクト専用のツールタブがリボンには表示されます。

ということは内部的には何等かきっかけを持っているはずですが、公開されているイベントはない

と認識しています。

テーブル/クエリが開かれて目に見える実態はデーターシートフォームではあるから、

テーブルが開かれてアクティブであるとき

    Screen.ActiveDatasheet.OnCurrent = "=UserDefinedFunction()"

ということは擬似的にできなくもないですが、おそらく要件を満たさないでしょう。

Enabled / Visible にこだわりがなければ簡単な話なんでしょうけど、

どうしてもなら、ウィンドウ メッセージのフックなどを切っ掛けとする感じでしょうか。

これについては、私にとっては不要なアイデアなので検討をしていません。

この回答は役に立ちましたか?

0 件のコメント コメントはありません

3 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2013-05-07T00:46:47+00:00

    MukkuMukuさん、こんにちは。

    >ということは内部的には何等かきっかけを持っているはずですが、公開されているイベントはない

    >と認識しています。

     やはりないのですね。[Undo], [Redo] の状態が変わるので何かしら方法が知られているのかと期待したのですが残念です。

    データを出力するためのボタンなのでいちいち[アドイン]タブを開いてからボタンを押すのも面倒なので クイックアクセスツールバーにボタンを追加し直したのでした。

    > どうしてもなら、ウィンドウ メッセージのフックなどを切っ掛けとする感じでしょうか。

      なるほど、そういう方法がありましたか。ちょっと検討してみます。

    いろいろご教示ありがとうざいました。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2013-05-02T02:01:17+00:00

    MukkuMuku さん、こんにちは。

    いつも回答有り難うございます。

     以前のAccessですと、クエリ用のツールバー、フォーム用のツールバーというようにアクティブなオブジェクトによって表示されるツールーバーが変わりました。

     これと同じタイミングでボタンを非表示又は使用不可に切り替えたいのです。

    フォームの数も多いですし、テーブルやクエリでも同じようなことをしたいと思っています。

    アクティブなオブジェクトの種類が変わったときに発生するイベントはないものでしょうか。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2013-05-01T10:39:18+00:00

    MukkuMukuです。こんばんは。

    フォームなどアクティブなどを契機に切り替える程度ならなら、VBAは不要でしょう。

    TypeA

    <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">

      <ribbon startFromScratch="true">

        <qat>

          <sharedControls>

            <control idMso="Undo"/>

          </sharedControls>

          <documentControls>

            <control idMso="Redo"/>

          </documentControls>

        </qat>

      </ribbon>

    </customUI>

    TypeB

    <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">

      <ribbon startFromScratch="true">

        <qat>

          <sharedControls>

            <control idMso="Redo"/>

          </sharedControls>

          <documentControls>

            <control idMso="Undo"/>

          </documentControls>

        </qat>

      </ribbon>

    </customUI>

    という感じにいくつか用意して、フォームもしくはレポートの"Ribbon Name / リボン名"プロパティに

    指定すれば自動で切り替わる動作をします。

    任意のイベントでリボンを操作したいということに拡張するならば、

    customUI要素のonLoad属性で指定したプロシージャで、IRibbonUI を参照して

    任意のイベントで InvalidateControl メソッドなどを実行する感じです。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません