我終於在Win7 64上啓用了Aero的Delphi XE(Update 1)中管理了問題。看起來尺寸在.DFM文件中被設置錯誤,並且因爲Ribbon
不支持手動調整大小,所以您不能在IDE中將其視覺修正爲
(儘管它在運行時正確顯示)
或Object Inspector
。它偶爾會在運行時正確顯示,但它似乎也是零星的。
這是一個令人討厭的錯誤,因爲它不可能設計Ribbon
。您可以添加RibbonGroup
項目,並指定ActionManager
,並嘗試使用Structure Pane
完全設計它,但這當然不是一個實際的解決方案。
幸運的是,這裏有一個非常簡單的解決方法,儘管這很麻煩。 :)
我管理了兩次以獲得以下解決方法的功能,但重新啓動它失敗了幾次,所以這是一種可能的解決方法(沒有承諾 - 在XE中工作,在XE2 Update 2中始終失敗) :
- 右鍵單擊
Ribbon
並添加至少一個選項卡。
- 右鍵單擊IDE中的窗體,然後從上下文(彈出)菜單中選擇
View as Text
。
- 在
.dfm
文本中找到Ribbon
控件,並將Height
從26
更改爲IDE分配給200
。 (下一步會調整它,但沒關係 - 200
解決了當前的問題。)
- 再次右鍵單擊,然後選擇
View as Form
,並且Ribbon
應該正確顯示。
(我報告說,它在QC對XE2更新2,作爲問題也存在有 - 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。
附錄:更新的質量控制報告,包含更多詳細信息。
附錄:2012年5月質檢報告opened,但自XE5 Update 1(2014年1月檢查)未看到解決。
聽起來很奇怪。我只是做了你所描述的,而且表現完美。 –
雅,我有點認爲這將是大多數人的情況,因爲我在演示工作中看到它!但是,它不適合我。它幾乎就像我有一個有缺陷的版本的德爾福2010年。我做了一個完整的卸載和重新安裝德爾福2010年,它仍然是以同樣的方式 – IElite
我從來沒有見過這種情況發生之前,它不應該這樣做。 – 2011-12-07 23:10:10