質問

アプリケーションのMainFormではないフォームにTRibbonコントロールを配置すると、そのTRibbonのアクション(つまり、切り取り、貼り付け)は、アクションの実行後に常にメインフォームにフォーカスを戻します。

これは、TRibbonを保持するTFormがMainFormの子ではない場合でも発生します。

Windows 7 64ビット、Embarcadero RAD StudioXEバージョン15.0.3953.35171を使用しています。

TRibbonコントロールを誤って使用していますか、それともこれはTRibbonの問題ですか?

役に立ちましたか?

解決

これは明らかに設計によるものです。 'ribbonactnctrls.pas'のサンプルコードスニペット: ジェネラコディセタグプレ

ご覧のとおり、電話を回避するのに役立つ条件はチェックされていません。メニュー項目の選択とキー押下ハンドラーにも同じコードがあります。


フォーカスコールにコメントしているソースを変更し、副作用がないかどうかを確認しようと思います。

別の方法として、メインフォームに切り替えた後、フォーカスをフォームに戻すことができます。 'ActionList1'が not メインフォームの標準アクションを含むTActionListであるとします。 ジェネラコディセタグプレ

ただし、これにより、アクションが実行されるたびにメインフォームが短時間点滅します。それが望ましくない場合は、デザインを変更して、メインフォームが不要なフォーカスを取得していることを認識し、フォーカスされていないことを偽造することができます。

ユニット1: ジェネラコディセタグプレ

unit2: ジェネラコディセタグプレ


ただし、プロジェクトソースに「MainFormOnTaskBar」が設定されていない場合は、これだけでは不十分です。これにより、メインフォームがフォーカスされるだけでなく、前面に表示されます。この場合、両方のフォームは、zオーダーをフリーズすることにより、不要なフォーカスの変更/アクティブ化に応答できます。その場合、コードはunit1用になります。 ジェネラコディセタグプレ

およびunit2の場合: ジェネラコディセタグプレ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top