Aeroが有効になっているWin7 64上のDelphi XE(Update 1)で問題を再現することができました。.DFM ファイルでサイズが間違って設定されているようです。 はRibbon手動のサイズ変更をサポートしていないため、IDE (実行時には正しく表示されますが)またはObject Inspector. 実行時に正しく表示されることもありますが、散発的であるようにも見えます。
を設計することが不可能になるため、これは厄介なバグRibbonです。アイテムを追加RibbonGroupし、 を割り当て、ActionManagerを使用して完全に設計することはできますStructure Paneが、もちろん、それは実用的な解決策ではありません。
幸いなことに、非常に簡単な回避策がありますが、やらなければならないのは面倒です。:)
次の回避策を2回実行して機能させましたが、最初からやり直すと何度か失敗したため、回避策が考えられます(約束はありません-XEで機能し、XE2 Update 2では一貫して失敗しました):
- を右クリックして、
Ribbon少なくとも 1 つのタブを追加します。
- IDE でフォームを右クリックし
View as Text、コンテキスト (ポップアップ) メニューから選択します。
- テキスト
Ribbon内のコントロールを見つけて、IDE が割り当てた からを変更します。(次のステップで調整しますが、それで問題ありません。差し迫った問題は修正されます。).dfmHeight26200200
- もう一度右クリックして を選択する
View as Formと、Ribbonが正しく表示されます。
(XE2 Update 2 に対する QC で報告しました。そこにも問題が存在するためです - QC #101642 )
TCustomRibbon.GetCaptionHeight具体的には、
FCaptionHeight := Max(GetSystemMetrics(SM_CYCAPTION), 26);
GetSystemMetrics呼び出しが特定の Win7 構成よりも少ない値を返しているようです26(理由はまだわかりませんが)。そのメソッドには、結果を変更するように見えるコメント行がいくつかありますが、私が言ったように、それらはコメントアウトされています。
奇妙な部分は、TCustomRibbon.Createでは、Heightが の呼び出しによって設定され、 が設定され、 がGetRibbonMetric(rmFullHeight)として定義されている定数であるということResult := cRibbonHeight + GetCaptionHeight;です 。cRibbonHeightcRibbonHeight = 117;
最後に、私はこれを追跡したと思います。の宣言にはTRibbon、publishedプロパティ宣言があります。
published
...
property Height default TCustomRibbon.cRibbonHeight;
これがデフォルトであるため、他の値はGetRibbonMetric上記の への呼び出しが発生しないことを意味しているように見え (TCustomRibbon.Create上記を参照)、 への呼び出しからの奇妙な結果GetSystemMetricにより、誤った値26が「他の値」として保存されます。 `。奇妙な; AMでQCを更新します。
補遺: QC レポートを更新し、詳細を追加しました。
補遺: QC レポートは 2012 年 5 月に公開されましたが、XE5 Update 1 (2014 年 1 月に確認) の時点では解決されていないようです。