使DevExpress日期控制元件正確顯示 (轉)

worldblog發表於2007-12-15
使DevExpress日期控制元件正確顯示 (轉)[@more@]使DevExpress日期正確顯示
===========================================
作者:Andy Kwok
電郵:to:andykwok@163.com">andykwok@163.com
語言: 5
環境: 2000 Personal簡體中文
===========================================
使DevExpress日期控制元件正確顯示

TdxGridDatePopup是DevExpress中日期顯示的一個元件,DevExperss是一個很強大的控制元件,但在中文Windows中,日期控制元件會出現一個問

題:無論星期幾都只是顯示“星”字。

原因:
出現這個問題並不是DevExpress公司的程式碼有問題,只是不同的語言版本中,提供的日期中返回的格式或文字有所不同。
DevExpress公司是用ShortDayNames陣列取得星期幾的。
ShortDayNames: array[1..7] of string;
ShortDayNames是一個String陣列,共有七個元素,分別對應星期一到七的字串,在英文Windows中,它的值為[‘Sunday’,‘Monday’...],在中

文Windows中,它的值為[‘星期一‘,‘星期二‘...]。
DevExpress是想返回英文的第一個字母,如Sunday,返回的是S,所以她用了S := {$IFDEF

DELPHI3}WString{$ENDIF}(ShortDayNames[J])[1]來取得,但在中文Windows中,就會返回”星“,問題就出在這裡。

修改方法:
開啟{Programe Files}Developer Express IncExpressInplaceEditorsDelphi 5dxGrDate.pas,查詢
S := {$IFDEF DELPHI3}WideString{$ENDIF}(ShortDayNames[J])[1],
然後修改為
S := {$IFDEF DELPHI3}WideString{$ENDIF}(ShortDayNames[J])[3]。
重新編譯dxGrDate.pas(你可以把dxGrDate.pas加到一個Project中,重新編譯你的Project,dxGrDate.pas就會重新編譯),然後把相關的dxGrDate.Dcu複製到..LIB下。
問題就會解決了。
附:
ShortDayNames 的英文說明。
ShortDayNames - Array of strings containing short day names. The ddd
format specifier in a format string passed to FormatDate causes a short
day name to be substituted. The default values are fecthed from the
LOCALE_SABBREVDAYNAME system locale entries.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-993958/,如需轉載,請註明出處,否則將追究法律責任。

相關文章