使DevExpress日期控件正確顯示
===========================================
作者:Andy Kwok
電郵:
[email protected] 語言:Delphi 5
環境:Windows 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}WideString{$ENDIF}(ShortDayNames[J])[1]來取得,但在中文Windows中,就會返回”星“,問題就出在這裡。
修改方法:
打開{Programe Files}Developer Express IncExpressInplaceEditorsDelphi 5SourcedxGrDate.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.