2011-12-07 102 views
7

我在64位Windows機器(Win 7)和32位Windows機器(XP)上運行Delphi 2010。TRibbon不顯示標籤

我在學習如何使用TRibbon控件。

我一直在關注Marco Cantu的2009年手冊中的示例並觀看YouTube演示,但是我的控制功能不像在本書或演示中所解釋的那樣工作。

我添加了兩個選項卡,通過右鍵單擊該控件。然而,當我將它放在主窗體上時,TRibbon看起來與截圖中的完全一樣。它不像書籍或YouTube上的演示那麼高。

我試圖在我運行Windows XP和Delphi 2010 WIN 32筆記本同樣的事情,得到同樣的結果

這裏是什麼樣子

64 bit laptop screenshot

這裏我的機器上是它是假設看起來像一個演示

from youtube video demo

一旦再次。當它放在窗體上時,它不會像我在演示中看到的那樣形狀和高度。即使當我添加標籤。在我的Delphi 2010安裝過程中,我做錯了什麼?

+2

聽起來很奇怪。我只是做了你所描述的,而且表現完美。 –

+0

雅,我有點認爲這將是大多數人的情況,因爲我在演示工作中看到它!但是,它不適合我。它幾乎就像我有一個有缺陷的版本的德爾福2010年。我做了一個完整的卸載和重新安裝德爾福2010年,它仍然是以同樣的方式 – IElite

+0

我從來沒有見過這種情況發生之前,它不應該這樣做。 – 2011-12-07 23:10:10

回答

8

我終於在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控件,並將Height26更改爲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月檢查)未看到解決。