7

64 ビット Windows マシン (Win 7) と 32 ビット Windows マシン (XP) の両方で Delphi 2010 を実行しています。

TRibbon コントロールの使用方法を学習しようとしています。

Marco Cantu の 2009 ハンドブックの例に従って、YouTube のデモを見てきましたが、本やデモで説明されているように、私のコントロールはうまくいきません。

コントロールを右クリックして、2 つのタブを追加しました。ただし、TRibbon をメイン フォームにドロップすると、スクリーンショットとまったく同じように見えました。本やYouTubeのデモほど高くはありません。

Windows XP と Delphi 2010 を実行している Win 32 ラップトップで同じことを試したところ、まったく同じ結果が得られました。

これが私のマシンでの外観です

64 ビット ラップトップのスクリーンショット

これは、デモでどのように見えると思われるかです

YouTubeビデオデモから

もう一度。フォームにドロップすると、デモで見たような形状と高さになりません。タブを追加しても。Delphi 2010 のインストール中に何か問題がありましたか?

4

1 に答える 1

8

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;

最後に、私はこれを追跡したと思います。の宣言にはTRibbonpublishedプロパティ宣言があります。

published
   ...
  property Height default TCustomRibbon.cRibbonHeight;

これがデフォルトであるため、他の値はGetRibbonMetric上記の への呼び出しが発生しないことを意味しているように見え (TCustomRibbon.Create上記を参照)、 への呼び出しからの奇妙な結果GetSystemMetricにより、誤った値26が「他の値」として保存されます。 `。奇妙な; AMでQCを更新します。

補遺: QC レポートを更新し、詳細を追加しました。

補遺: QC レポートは 2012 年 5 月に公開されましたが、XE5 Update 1 (2014 年 1 月に確認) の時点では解決されていないようです。

于 2011-12-08T01:35:48.823 に答える