同樣的Color屬性 在XP上與2000卻有不同的顯示結果 |
答題得分者是:P.D.
|
帥氣銀行
一般會員 ![]() ![]() 發表:13 回覆:40 積分:15 註冊:2005-05-31 發送簡訊給我 |
情況是這這樣
專案中有一AForm 內置一Panel 做為BaseForm用 Panel的Color屬性設定使用預設值不變(clBtnFace) 然後繼承AForm 產生一BForm 將BForm的Panel的Color屬性改為clBackground 再繼承BForm 產生一CForm Color屬性不變 然後再CForm上擺上TLabel TButtom等元件開始設計 接下來詭異的事情發生了 在2000上跑此一程式 CForm的Panel.Color是正常的clBackground 但在XP上跑此程式 CForm的Panel.Color則是clBtnFace 也就是AForm的原始設定 請問這樣是不是哪個繼承的屬性有動到 以致於CForm的顏色顯示跑掉? 原本以為是因為2000跟XP的Color屬性不同 但後來發現不是 因有另外產生一個Project1 只有Form1 此時若放上Panel設定Color為clBackground在XP上就可正常顯示顏色 所以才想說可能是繼承的部分出了什麼問題 請有遇過此一經驗的前輩能指點一下 感謝 P.S 使用開發環境為 Delphi 7 update1 Win2000 SP4 |
jow
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
節錄 TColor的 Help,
The Graphics unit contains definitions of useful constants for TColor. These constants map either directly to the closest matching color in the system palette (for example, clBlue maps to blue) or to the corresponding system screen element color defined in the Color section of the Windows Control panel (for example, clBtnFace maps to the system color for button faces). |
帥氣銀行
一般會員 ![]() ![]() 發表:13 回覆:40 積分:15 註冊:2005-05-31 發送簡訊給我 |
首先感謝jow前輩的回覆
我看了一下Help內容 不過好像跟我的問題不太相關 Help是說TColor先預設了幾種常用的顏色屬性 而屬性會根據不同的平台產生接近的顏色(所以可能會有色差) 但我的問題是根本顯示不同的顏色 而且也測過該顏色在XP跟2000上都是可以正常顯示的 不過還是感謝jow前輩的回覆 ===================引 用 jow 文 章=================== 節錄 TColor的 Help, The Graphics unit contains definitions of useful constants for TColor. These constants map either directly to the closest matching color in the system palette (for example, clBlue maps to blue) or to the corresponding system screen element color defined in the Color section of the Windows Control panel (for example, clBtnFace maps to the system color for button faces). |
帥氣銀行
一般會員 ![]() ![]() 發表:13 回覆:40 積分:15 註冊:2005-05-31 發送簡訊給我 |
|
P.D.
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
帥氣銀行
一般會員 ![]() ![]() 發表:13 回覆:40 積分:15 註冊:2005-05-31 發送簡訊給我 |
|
帥氣銀行
一般會員 ![]() ![]() 發表:13 回覆:40 積分:15 註冊:2005-05-31 發送簡訊給我 |
花了一個下午的時間在測試這個問題
發現一個更詭異的情形 若是另外開啟一新專案 裡面只有一個Form, Form上放置一Panel, TColor設為clBackground Build此一專案, 則此Form上的Panel在2000與XP上皆可正常顯示clBackground顏色 但是顏色會有一些小差異 但是是可以顯示的 此時若將此一Form加入到我原本的專案檔 重新Build我原本的專案 此Form上的Panel只有在2000上可正常顯示clBackground顏色 在XP上Form上的Panel顏色看起來則會是clBtnFace 於是又做了另一個測試 將Form的顏色也改為clBackground Build 神奇的事發生了 在XP上Form跟Panel都可正常顯示clBackground顏色了 所以其實顏色是可以正常顯示的 但是Panel的顏色好像會隨著Form的顏色做變化 (從目前測試的結果推測) 真的很怪 ===================引 用 帥氣銀行 文 章=================== 果然是這個問題 將XP調回傳統配色就可正常顯示顏色了 期間也測過Vista 一樣狀況 也是調整外觀後即可正常 但是問題來了 請問前輩 我該怎麼修正我的程式 以至可以在2000 XP Vista三平台上 都可以正常顯示? 直接將Color設定為RGB的值嗎? 之前試過 Delphi還是會自動幫我轉成clWhite(舉例)等對應的值 且另一個疑問是 若開新專案 Panel用一樣的顏色 不用換回傳統模式也可正常顯示 這樣不是很奇怪? |
帥氣銀行
一般會員 ![]() ![]() 發表:13 回覆:40 積分:15 註冊:2005-05-31 發送簡訊給我 |
首先感謝jow與P.D前輩
先說結論 問題是出在XPMan上面 如果大家有興趣可以看看下面詳細的測試報告 今早又花了一些時間在測試這個Bug 昨天測試的結果是Panel顏色是可正常顯示的 所以暫時排除是TColor的問題 且昨天測時到最後發現Panel的顏色會隨著Form的顏色改變 也就是說Form是什麼顏色 Panel就會是什麼顏色 於是今天將測試程式修改一下 加入一個ColorDialog 並加上在執行時期可動態改變Form跟Panel顏色的程式碼 Run後發現跟我假設的狀況一樣 Panel的顏色會隨著Form的顏色改變 於是開始找Panel上的屬性 看有哪一些是跟Panel Parent相關的屬性 查看後發現設定跟另開的新專案檔內Form上的屬性一模一樣 所以排除Parent屬性的問題 從這幾天來的測試結果發現 1.顏色在XP上是可正常顯示的 2.Panel顏色會跟著Form改變 3.在我的專案內顏色顯示不正常 但新開的測試專案則一切正常 綜合以上的測試結果 推測應該是我專案本身的問題 於是我又開了一個新專案來測試 去掉預設的Form 將我專案的主Form擺上 Build 結果還是一樣無法正常顯示 但是這樣我還是無法找出問題在哪 於是又上了Google 這次使用 delphi XP 顏色 當關鍵字查詢 第一個出來的就是我的問題...XD 但是第二個文章的標題引起了我的興趣 Delphi.ktop討論區- 讓你的AP作出XP Style的元件因為我是在XP上顯示不正常於是我想說順便研究一下 如何可以做出XP效果 也許可以解決我的問題 看到一半看到XPMan 我忽然冒出一身冷汗 我立刻想到之前有一次將此一元件加入專案檔中 後來發現沒啥效果(因開發環境為Win2K) 於是就移除了 於是立刻回去查看我專案中的MainForm 果不其然 最上方有Use到XPMan 我馬上把XPMan Mark起來後Build 到XP上一跑 一切都正常了...終於 花了我幾天的時間 沒想到問題是出在這個小東西上面... 該篇文章看到最後有人有跟我一樣的問題 "使用lable或Panel ,若有設定顏色,我使用XPMan會使得顏色不見!" 更讓我確定問題是出在XPMan上 Bug是抓出來了 但因為也沒有XPMan的Source可以看 於是也就只能到這樣為止了 Bug很小 但文章卻很長 感謝大家有耐心看完 也希望這個經驗可以讓大家做個參考 最後再次感謝jow與P.D前輩 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |