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 が割り当てた からを変更します。(次のステップで調整しますが、それで問題ありません。差し迫った問題は修正されます。).dfm
Height
26
200
200
- もう一度右クリックして を選択する
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;
です 。cRibbonHeight
cRibbonHeight = 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 月に確認) の時点では解決されていないようです。