全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:11406
推到 Plurk!
推到 Facebook!

Vcl.Grids.TStringGrid BUG : Color 不作用

 
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2014-05-13 02:53:35 IP:202.39.xxx.xxx 訂閱
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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2014-05-13 09:18:12 IP:59.120.xxx.xxx 訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2014-05-13 20:54:51 IP:202.39.xxx.xxx 訂閱
頭殼都被 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2014-05-14 09:31:04 IP:59.120.xxx.xxx 未訂閱
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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2014-05-14 09:35:16 IP:202.39.xxx.xxx 訂閱
有點兒慘了, 全部的 VCL 可視元件, 都受到 StyleElements 影響,
有些元件 Color 行為不正確, 有些正確, 有些漏釋出 Property 而無法控制.

寫程式的人應該都知道, 當邏輯須分第一優先、第二優先、第三優先....時,
必須小心控制; 還有, 也要注意 Event 何時該觸發, 何時不該觸發.

如果全都使用 Windows Style 的 Default 顏色, 可能問題不大; 但遇到須自行
控制元件顏色變化時, 每個都得小心 Design-Time 不等於 Run-Time 的問題了!
而且, 有的元件反應行為不正確, 真不知要如何閃避, 唉!
Highlander
初階會員


發表:0
回覆:40
積分:43
註冊:2008-10-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2014-05-14 11:37:22 IP:180.177.xxx.xxx 訂閱
Vcl.Grids.TStringGrid並沒有問題, 你要使用DrawingStyle來控制.

DrawingStyle = gdsClassic, 用Color, FixedColor等來控制
DrawingStyle = gdsThemed, 用VCL Style來控制
DrawingStyle = gdsGradient, 用漸層式畫法

你如果要用Color, FixedColor等, 請把DrawingStyle 設定成gdsClassic即可


herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2014-05-14 11:48:17 IP:202.39.xxx.xxx 訂閱

===================引 用 Highlander 文 章===================
Vcl.Grids.TStringGrid並沒有問題, 你要使用DrawingStyle來控制.

DrawingStyle = gdsClassic, 用Color, FixedColor等來控制

請看 (2). 之實作測試, 而且我並不確定我是對的, 只是懷疑設計團隊有不一致的設計!
Highlander
初階會員


發表:0
回覆:40
積分:43
註冊:2008-10-08

發送簡訊給我
#8 引用回覆 回覆 發表時間:2014-05-14 11:57:34 IP:180.177.xxx.xxx 訂閱
在任何版本昇級化前你應該花幾分鐘看一下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 Types

Enum Identifier Names Now Have No Prefixes


Delphi程式語言和FireMonkey一直在快速進步中, 要這2個關鍵技術不改變是不可能的.





Highlander
初階會員


發表:0
回覆:40
積分:43
註冊:2008-10-08

發送簡訊給我
#9 引用回覆 回覆 發表時間:2014-05-14 11:59:53 IP:180.177.xxx.xxx 訂閱
和我剛才回覆P.D.的文章一樣, 你說的StartOfWeek也沒有問題, XE6的Release Notes for XE6說的很清楚:

Workaround for FirstDayOfWeek with TCalendar

Setting System.DateUtils.StartOfTheWeek, as follows:


Highlander
初階會員


發表:0
回覆:40
積分:43
註冊:2008-10-08

發送簡訊給我
#10 引用回覆 回覆 發表時間:2014-05-14 12:03:51 IP:180.177.xxx.xxx 訂閱
沒問題啊, 設定DrawingStyle為gdsClassic即可用Color, FixedColor控制, 我的程式沒問題. 

有數個不同的特性會彼此影響, 你可能要仔細看看docwiki

QCom Support
一般會員


發表:15
回覆:32
積分:24
註冊:2012-12-17

發送簡訊給我
#11 引用回覆 回覆 發表時間:2014-05-14 14:11:27 IP:61.219.xxx.xxx 訂閱
您好:

XE6 VCL 會有所改動,在所難免,其更動均會有詳細說明,也請各位養成習慣在初用新版本時,必先閱讀其 Release note 以及 Docwiki我們會向 Embarcadero 謝謝!

編輯記錄
QCom Support 重新編輯於 2014-05-14 14:13:13, 註解 無‧
qcom 重新編輯於 2014-05-14 15:06:22, 註解 無‧
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#12 引用回覆 回覆 發表時間:2014-05-14 15:55:32 IP:202.39.xxx.xxx 訂閱

===================引 用 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

發送簡訊給我
#13 引用回覆 回覆 發表時間:2014-05-14 16:05:52 IP:202.39.xxx.xxx 訂閱
這論壇是為同好共同解決問題, 而非製造問題.
初遇問題, 有時難免腦袋瓜打結, 但並非競爭對手, 要把對方業務打趴,
所以實無必要太緊張!

不過若不爭氣, 也就莫怪人家默默走開了!
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#14 引用回覆 回覆 發表時間:2014-05-14 22:40:09 IP:112.78.xxx.xxx 未訂閱
我對這個看法是這樣, 
我們公司也是在開發軟體, 我們就十分在意新舊版本的相容性, 對於以往開發出來給客戶使用的功能, 在新版上我們絕對不敢輕易的改變或移除,
除非真的舊功能有很大的問題一定要移除或改, 否則一定保留舊有操作, 自己想辦法對新版做支援轉換,
否則會被客戶罵死, 甚至流失掉這些客戶, 因為改變習慣是開發軟體最大的致命傷, 最明細的例子, windows 8.0 改變了 20年來 windows用戶的習慣,
最後執行長一樣出來承認錯誤, windows 8.1 又弄回來,
尤其我們不是用戶, 是開發者, 依照現有版本開發出來, 卻在下一版遭逄巨變, 這就為什麼DELPHI的用戶在XE上流失那麼多,
因為DELPHI的程式根本就轉不上XE版本, 讓人卻步, 轉投其他陣營或宣告放棄, 是否XE還要再走這條不歸路!
今天我會這麼的感慨是因為XE6的改變, 也讓我信心跌入谷底, 我真不知該不讓繼續用新版開發?
期待了那麼久, 看著XE發展越來越進步, 也期待程式能趕快完成推出賣錢, 但卻是如此的景況, 我不知"實無必要太緊張", 對我們公司而言, 面臨競爭,
存亡之際, 我是否還能保有這樣的心情來看~~~~
===================引 用 herbert2 文 章===================
這論壇是為同好共同解決問題, 而非製造問題.
初遇問題, 有時難免腦袋瓜打結, 但並非競爭對手, 要把對方業務打趴,
所以實無必要太緊張!

不過若不爭氣, 也就莫怪人家默默走開了!
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#15 引用回覆 回覆 發表時間:2014-05-15 00:00:58 IP:202.39.xxx.xxx 訂閱
當 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

發送簡訊給我
#16 引用回覆 回覆 發表時間:2014-05-15 10:09:01 IP:112.78.xxx.xxx 未訂閱
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

發送簡訊給我
#17 引用回覆 回覆 發表時間:2014-05-15 11:04:22 IP:111.241.xxx.xxx 訂閱
個人認為 只要用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 文 章===================
這論壇是為同好共同解決問題, 而非製造問題.
初遇問題, 有時難免腦袋瓜打結, 但並非競爭對手, 要把對方業務打趴,
所以實無必要太緊張!

不過若不爭氣, 也就莫怪人家默默走開了!
系統時間:2024-11-21 16:43:38
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!