2013-08-20 51 views
0

我有點奇怪的問題我Firemonkey德爾福XE3項目,我測試了OSX 10.8.3的應用程序。Firemonkey德爾福XE3:奇怪的問題了TGlowEffect在鼠標懸停時

通常,當鼠標光標移動到文本上,它看起來:

enter image description here

,但應用程序調用打開一個標準對話框後,然後我再移動鼠標光標移到文本,它看起來像這樣:

enter image description here

我懷疑這個問題是由於Retina顯示屏,因爲我的朋友測試了非Retina Mac上,它看起來不錯,我的MacBook支持視網膜和我得到這個問題..

任何想法解決這一問題?

+0

這可能是XE3一個Bug。你用XE4測試過它嗎?如果結果是相同的 - 不要猶豫,發佈在質檢中的錯誤報告;) –

+0

不知道,但它必須由鼠標效果引起..當我我的MacBook連接到27' 顯示器,沒有任何問題,當我連接到另一個22'顯示器,問題顯示...奇怪..我沒有XE4,所以無法測試它。 – RRN

回答

0

這這樣的「錯誤」實際上與FM2中所做的更改(你提到XE3/FM2,但問題被標記爲XE2/FMX),但它有時也發生在FMX應用。解決方案是簡單地調用標籤上的repaint()函數。爲了簡單起見,我將假設ShowMessage,但每當您處理UI中的任何內容(消息框,面板,矢量形狀等)時,情況也是如此。

ShowMessage('My Message'); 
Label1.Repaint; 

使用repaint()應該是您在適當的時候使用的東西。這是一個沉重的操作(一般來說),你應該寬鬆地使用它。一般準則;

  • 只使用它需要
  • 時,如果你需要重繪僅有1個組件,只重繪該組件
  • 如果你需要重繪許多子組件,重新繪製父組件,而不是
  • 重繪應在效果的父組件上使用而不是效果本身(即在TLabel而不是TGlowEffect上)

我實際上使用了將我的整個應用程序的界面在一個TLayout或TRectangle中,顏色爲claNull。這樣,我可以在一次調用中重新繪製整個界面。那麼我個人主要部分分離出來,成爲孩子TLayouts(如提醒欄),然後可以選擇重畫上一個計時器,如果我需要它的動畫(例如滑動進入視野時,有一個新的消息)。

+0

抱歉,我想念這個,謝謝! – RRN