Vcl.Grids.TStringGrid BUG : Color 不作用 |
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
TStringGrid 是常用的功能完全不作用, 不管 Design-Time 或 Run-Time, 永遠都是 Default 值.
連帶的, 繼承自 ※更正: TStringGrid->DrawingStyle = gdsThemed 依主題(Default, 不知其效果如何), gdsClassic 傳統顏色, gdsGradient 漸層顏色. 但, TCCalendar 無該 Property, 只能依 Default, Delphi 之 TCalendar 亦然. 又, C StartOfWeek = 7週日/1週一, Delphi StartOfWeek = 0週日/1週一, 只能自行小心這差異了. 所附的 Samples 資料夾內的 Project, 如 PD 所言, 有好幾個都不能 Compile, 5/6當天也有向李'r提此問題, 5/7也上 Embarcadero 網站找看是否有 Update, 結果毫無踪影, 也就是說, Embarcadero 品管能力就真要打個『?』了! 不知 XE6 Update 2 多久可改善這基本問題? 還是真得等到 XE10 才能穩定? 請 Q-Com 跟 Marco Cantu 提一下吧! 我們最想要的是穩定的產品, 華而不實的炫, 對玩 Game 的人或許很有吸引力, 但對要投入時間精力瞭解並使用產品的程式人員, 那種老是撞牆的感覺是會引起絕望的! 編輯記錄
herbert2 重新編輯於 2014-05-13 09:29:26, 註解 無‧
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
TStringGrid 的 Color 和 FiexedColor 在未勾 Enable runtime themes 會正常顯示
但勾選之後這兩個屬性就沒反應了 Enable runtime themes 時的解法: VCL Styles===================引 用 herbert2 文 章=================== TStringGrid 是常用的功能完全不作用, 不管 Design-Time 或 Run-Time, 永遠都是 Default 值. 連帶的, 繼承自 根本未意識到新版引起舊版問題, 連 Samples 都不正常了! 有些新功能有 BUG 我們都可理解, 但把舊東西都改出問題, 其團隊的真要打個『?』了! 不知 XE6 Update 2 多久可改善這基本問題? 還是真得等到 XE10 才能穩定? 請 Q-Com 跟 Marco Cantu 提一下吧! 我們最想要的是穩定的產品, 華而不實的炫, 對玩 Game 的人或許很有吸引力, 但對要投入時間精力瞭解並使用產品的程式人員, 那種老是撞牆的感覺是會引起絕望的!
編輯記錄
GrandRURU 重新編輯於 2014-05-13 09:40:44, 註解 無‧
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
頭殼都被 XE6 攪昏了, 這兒總是有些地方不對勁, 可能 Embarcadero 團隊自己也昏了!
依初步閱覽了相關的 Documents, 有以下概念及疑惑, Default = Windows. 這設定配合各元件的 StyleElements 設定 = 0x001~0x111 而作用在 其 seFont、seClient、seBorder = True 的屬性上的 Color, 若 = 0x000 則不作用. 在依 Default 的 Windows, Run-Time 則生效, 但 便可點右下角的 Preview Button 秀出其效果. (2).在 TStringGrid、TDBGrid 等, 若 StyleElements->ssClient = False, 則 Cell 區顏色又須看 DrawingStyle = gdsClassic/gdsGradient/gdsThemed 而定. = gdsThemed : FiexedClos、FixedRows 區, 依 Application->Appearance 所選的 Style 的顏色, 但 Data Cell 區依 Color 所設的顏色. = gdsClassic : Data Cell 區依 Color 所設的顏色, 而 依 Color 所設的顏色, 這似乎是 但 Design-Time 依 Color 的設定. 但 Design-Time Form 變 Active 且 TStringGrid->Click() ssBorder = True 或 False, Run-Time 被 Application->Appearance 的 Style 替換掉. 若 StyleElements->ssFont = True 或 False, 等用 TDBGrid 的 Field Caption 再測看看, Hold. (3).繼承自 TCustomGrid 的 Delphi TCalendar 與 C TCCalendar, 確定漏繼承了 DrawingStyle、FixedColor、GradientEndColor、GradientStartColor、StyleElements 這五個 Property. ( 當初 C Builder 5 TQuery 也漏 AfterRefresh Event, System.Set 漏 Empty(), 到 Builder 6 才補上. ) 所以 Cell 區顏色, Design-Time Color 無作用, 依 Default 的 Windows Style, Run-Time 被 Application->Appearance 所選的 Style 替換掉. Font->Color 在 Design-Time 有作用, Run-Time 被 Application->Appearance 所選的 Style 替換掉. |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
xe6真的把我搞死了, 花了數週一事無成, 還弄到一個頭兩個大, embd真的要好好檢討一下, 否則我認為不會再有一個xe7的版本被使用,
還是真如我之前所言, delphi的魔咒, 雙數的都是失敗的! 這部份要建請 Q-COM好好向EMBD 要求改版的對照表 另外, 我也要提一點(不想再開一帖了, 只好借用一下) 這項宣告, 在 XE5 下是可以過的, 可是 XE6 竟然過不了, 出現未定義的變數 XE5宣告一組參數, 而我的程式中引用到 下列紅字的定義, 在 XE5 下是沒有問題, 但XE6 就出現 UNDEFINE ADBECAMEACTIVE NOT FOUND 的問題 我必須改為 TApplicationEvent.BecameActive 這樣才能編譯過, 但如果要這樣寫的話, 又何必要有 CONST 的定義呢? 類似這樣的問題, XE6都是問題!! TApplicationEvent = (FinishedLaunching, BecameActive, WillBecomeInactive, EnteredBackground, WillBecomeForeground, WillTerminate, LowMemory, TimeChange, OpenURL); TApplicationEventHelper = record helper for TApplicationEvent const aeFinishedLaunching = TApplicationEvent.FinishedLaunching deprecated 'Use TApplicationEvent.FinishedLaunching'; aeBecameActive = TApplicationEvent.BecameActive deprecated 'Use TApplicationEvent.BecameActive'; aeWillBecomeInactive = TApplicationEvent.WillBecomeInactive deprecated 'Use TApplicationEvent.WillBecomeInactive'; aeEnteredBackground = TApplicationEvent.EnteredBackground deprecated 'Use TApplicationEvent.EnteredBackground'; aeWillBecomeForeground = TApplicationEvent.WillBecomeForeground deprecated 'Use TApplicationEvent.WillBecomeForeground'; aeWillTerminate = TApplicationEvent.WillTerminate deprecated 'Use TApplicationEvent.WillTerminate'; aeLowMemory = TApplicationEvent.LowMemory deprecated 'Use TApplicationEvent.LowMemory'; aeTimeChange = TApplicationEvent.TimeChange deprecated 'Use TApplicationEvent.TimeChange'; aeOpenURL = TApplicationEvent.OpenURL deprecated 'Use TApplicationEvent.OpenURL'; end; |
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
有點兒慘了, 全部的 VCL 可視元件, 都受到 StyleElements 影響,
有些元件 Color 行為不正確, 有些正確, 有些漏釋出 Property 而無法控制. 寫程式的人應該都知道, 當邏輯須分第一優先、第二優先、第三優先....時, 必須小心控制; 還有, 也要注意 Event 何時該觸發, 何時不該觸發. 如果全都使用 Windows Style 的 Default 顏色, 可能問題不大; 但遇到須自行 控制元件顏色變化時, 每個都得小心 Design-Time 不等於 Run-Time 的問題了! 而且, 有的元件反應行為不正確, 真不知要如何閃避, 唉! |
Highlander
初階會員 發表:0 回覆:40 積分:43 註冊:2008-10-08 發送簡訊給我 |
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
===================引 用 Highlander 文 章=================== Vcl.Grids.TStringGrid並沒有問題, 你要使用DrawingStyle來控制. DrawingStyle = gdsClassic, 用Color, FixedColor等來控制 請看 (2). 之實作測試, 而且我並不確定我是對的, 只是懷疑設計團隊有不一致的設計! |
Highlander
初階會員 發表:0 回覆:40 積分:43 註冊:2008-10-08 發送簡訊給我 |
在任何版本昇級化前你應該花幾分鐘看一下What's New 和Release Notes, XE6的What's new 說的很清楚:
http://docwiki.embarcadero.com/RADStudio/XE6/en/What's_New_in_Delphi_and_C Builder_XE6#Enum_Identifier_Names_Now_Have_No_Prefixes 你說的問題是在 Changes to FireMonkey Enumerated TypesEnum Identifier Names Now Have No PrefixesDelphi程式語言和FireMonkey一直在快速進步中, 要這2個關鍵技術不改變是不可能的. |
Highlander
初階會員 發表:0 回覆:40 積分:43 註冊:2008-10-08 發送簡訊給我 |
和我剛才回覆P.D.的文章一樣, 你說的StartOfWeek也沒有問題, XE6的Release Notes for XE6說的很清楚:
Workaround for FirstDayOfWeek with TCalendarSetting System.DateUtils.StartOfTheWeek, as follows: |
Highlander
初階會員 發表:0 回覆:40 積分:43 註冊:2008-10-08 發送簡訊給我 |
|
QCom Support
一般會員 發表:15 回覆:32 積分:24 註冊:2012-12-17 發送簡訊給我 |
您好:
XE6 或 VCL 會有所改動,在所難免,其更動均會有詳細說明,也請各位養成習慣在初用新版本時,必先閱讀其 Release note 以及 Docwiki我們會向 Embarcadero 謝謝!
編輯記錄
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
===================引 用 Highlander 文 章=================== 沒問題啊, 設定DrawingStyle為gdsClassic即可用Color, FixedColor控制, 我的程式沒問題. 有數個不同的特性會彼此影響, 你可能要仔細看看docwiki 這可能是我的問題? 還是 MS Windows 7 X64 Pro 的問題? 還是我安裝了什麼軟體引起的問題? TListBox Design-Time 如我的設定, Run-Time 被轉為 Style 的設定, OK! TCalendar Design-Time 無法設定, Run-Time 被轉為 Style 的設定, 也算它 OK 吧! TStringGrid Design-Time 無法正常的設定, Run-Time 一樣 NG! TLabel Design-Time 無法正常的設定, Run-Time 一樣 NG! |
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
我對這個看法是這樣,
我們公司也是在開發軟體, 我們就十分在意新舊版本的相容性, 對於以往開發出來給客戶使用的功能, 在新版上我們絕對不敢輕易的改變或移除, 除非真的舊功能有很大的問題一定要移除或改, 否則一定保留舊有操作, 自己想辦法對新版做支援轉換, 否則會被客戶罵死, 甚至流失掉這些客戶, 因為改變習慣是開發軟體最大的致命傷, 最明細的例子, windows 8.0 改變了 20年來 windows用戶的習慣, 最後執行長一樣出來承認錯誤, windows 8.1 又弄回來, 尤其我們不是用戶, 是開發者, 依照現有版本開發出來, 卻在下一版遭逄巨變, 這就為什麼DELPHI的用戶在XE上流失那麼多, 因為DELPHI的程式根本就轉不上XE版本, 讓人卻步, 轉投其他陣營或宣告放棄, 是否XE還要再走這條不歸路! 今天我會這麼的感慨是因為XE6的改變, 也讓我信心跌入谷底, 我真不知該不讓繼續用新版開發? 期待了那麼久, 看著XE發展越來越進步, 也期待程式能趕快完成推出賣錢, 但卻是如此的景況, 我不知"實無必要太緊張", 對我們公司而言, 面臨競爭, 存亡之際, 我是否還能保有這樣的心情來看~~~~ ===================引 用 herbert2 文 章=================== 這論壇是為同好共同解決問題, 而非製造問題. 初遇問題, 有時難免腦袋瓜打結, 但並非競爭對手, 要把對方業務打趴, 所以實無必要太緊張! 不過若不爭氣, 也就莫怪人家默默走開了! |
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
當 Project Options 之
Application->Runtime Themes = None Application->Appearance->Default style = Windows (若非 = Windows 則仍無法如下反應) TStringGrid、TLabel->StyleElements = 0x0000 則 Design-Time TStringGrid->FixedColor、TLabel->Color 無法依設定值正常顯示 但 Run-Time TStringGrid->FixedColor、TLabel->Color 反而依設定值正常顯示 這就是讓我覺得 Embarcardero 團隊, 邏輯被自己攪亂的現象! 又, PD, 您的緊張我很能瞭解, 只是我不是說要您別緊張, 您緊張到會錯意了! |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
herbert2兄, 我知道你發那篇不是針對我而說, 我只是"氣到吐血", 對你那篇有感而發罷了,
我很少這樣發怒的, 而我緊張是公司對於這樣改版, 程式上不去手足無措, 求助無門, Android的世界(xe的架構), 已經不是我們這些老設計師所能理解看懂的, 我們現在等於是回到幼幼班, 系統給我們什麼我們只能照用, 不像以前Delphi的世界, 我們還有能力可以自己修改元件, 設定等等, 在 fmx下, 我們根本就束手無策, 所以xe6改了這麼大的幅度, 竟然前一版的東西就沒辦法無痛轉上去, 傻眼了, 我是希望embd 的開發團隊不要活在自己的烏托邦世界, 要多考量實際使用者的立場, 這樣改, 無異逼的我們退出這個市場, 之前 embd 把 Delphi的String直接改定義為widestring 就是一個最大的錯誤, 因為這害得以前的Delphi開發程式轉上無望, 事實上以前Delphi只要定義widestring 就可以與String區隔, 這就是開發者未考量廣大用戶的使用的結果 牢騷發完了, 這個技術專區, 我發了這麼多無關技術的問題, 實在過意不去, 再來我不再發表任何言論了, 謝謝! 另外, 也向q-com說聲抱歉, 我知道q-com的立場也很無奈, 所以我並沒有對q-com做任何的指責, 還是感謝q-com在delphi所做的付出與努力! ===================引 用 herbert2 文 章=================== 當 Project Options 之 Application->Runtime Themes = None Application->Appearance->Default style = Windows (若非 = Windows 則仍無法如下反應) TStringGrid、TLabel->StyleElements = 0x0000 則 Design-Time TStringGrid->FixedColor、TLabel->Color 無法依設定值正常顯示 但 Run-Time TStringGrid->FixedColor、TLabel->Color 反而依設定值正常顯示 這就是讓我覺得 Embarcardero 團隊, 邏輯被自己攪亂的現象! 又, PD, 您的緊張我很能瞭解, 只是我不是說要您別緊張, 您緊張到會錯意了!
編輯記錄
P.D. 重新編輯於 2014-05-15 10:12:44, 註解 無‧
|
leveon
資深會員 發表:30 回覆:389 積分:303 註冊:2012-02-12 發送簡訊給我 |
個人認為 只要用Delphi開發 就必須要有承受每次升級痛苦的覺悟
採它所謂的"Native"架構 天生就會這樣 他想做到無痛也沒辦法 官方已經講啦 "也請各位養成習慣在初用新版本時,必先閱讀其 Release note 或 What's new 以及 Docwiki。" 想不升級 停留在某個XE版本?想像Delphi 5 delphi7一樣 一個版本用到天荒地老嗎 一句話 某刻能 OS一旦升級 用Delphi寫的APP 必需要用新版Delphi"重新編譯" 否則你的APP會出現和平台風格不一致 行為不一至 甚至是不能跑的情況 這也是他們打的"永續經營"的經營策略阿 話說回來 應用程式的UI界面風格 原本就應該受OS自己的控制 一隻老執行檔 遇到新版的OS , OS應該會自動改變APP畫面風格 都什麼年代了 這點小事還需要開發者自己在那邊升級硬幹阿?? ===================引 用 P.D. 文 章=================== 我對這個看法是這樣, 我們公司也是在開發軟體, 我們就十分在意新舊版本的相容性, 對於以往開發出來給客戶使用的功能, 在新版上我們絕對不敢輕易的改變或移除, 除非真的舊功能有很大的問題一定要移除或改, 否則一定保留舊有操作, 自己想辦法對新版做支援轉換, 否則會被客戶罵死, 甚至流失掉這些客戶, 因為改變習慣是開發軟體最大的致命傷, 最明細的例子, windows 8.0 改變了 20年來 windows用戶的習慣, 最後執行長一樣出來承認錯誤, windows 8.1 又弄回來, 尤其我們不是用戶, 是開發者, 依照現有版本開發出來, 卻在下一版遭逄巨變, 這就為什麼DELPHI的用戶在XE上流失那麼多, 因為DELPHI的程式根本就轉不上XE版本, 讓人卻步, 轉投其他陣營或宣告放棄, 是否XE還要再走這條不歸路! 今天我會這麼的感慨是因為XE6的改變, 也讓我信心跌入谷底, 我真不知該不讓繼續用新版開發? 期待了那麼久, 看著XE發展越來越進步, 也期待程式能趕快完成推出賣錢, 但卻是如此的景況, 我不知"實無必要太緊張", 對我們公司而言, 面臨競爭, 存亡之際, 我是否還能保有這樣的心情來看~~~~ ===================引 用 herbert2 文 章=================== 這論壇是為同好共同解決問題, 而非製造問題. 初遇問題, 有時難免腦袋瓜打結, 但並非競爭對手, 要把對方業務打趴, 所以實無必要太緊張! 不過若不爭氣, 也就莫怪人家默默走開了! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |