VsFlexGrid控件的问题
在控件中要显示一日期列,而且日期格式也是可以自定义的,我现在的做法是:
grid.ColDataType(1) = flexDTDate
grid.ColFormat(1) = "dd/mm/yyyy hh:mm:ss"
使用时发现日期的显示格式受区域设置里面的日期格式设置的影响,不能按照指定的格式显示。
如果将列类型设为 String 类型然后自己格式化日期则显示没问题,但在此列上排序又出现问题。
遇到过此问题的朋友帮帮忙。
[解决办法]
能否修改系统日期格式?
记得以前学Dbase、FoxBase、FoxPro的时候,修改系统日期格式,以后在数据库中显示就会变。Excel表中也可以修改。
[解决办法]
不知道API有没有这样的功能?
[解决办法]
将第一行改为grid.ColDataType(1)= flexDTString即可
[解决办法]
- VBScript code
Private Const LOCALE_STIMEFORMAT = &H1003 Private Const LOCALE_SSHORTDATE = &H1F Private Const WM_SETTINGCHANGE = &H1A Private Const HWND_BROADCAST = &HFFFF& Private Declare Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String) As Boolean Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Private Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long Private Sub setdateformat() Dim dwLCID As Long, i As Long Dim lpLCData As String * 255, cchData cchData = Len(lpLCData) dwLCID = GetSystemDefaultLCID() i = SetLocaleInfo(dwLCID, LOCALE_SSHORTDATE, "YYYY/dd/mm") '设置短日期格式 PostMessage HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0 i = SetLocaleInfo(dwLCID, 32, "YYYY/dd/mm") '设置长日期格式 PostMessage HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0 i = SetLocaleInfo(dwLCID, LOCALE_STIMEFORMAT, "HH:mm:ss") '设置时间格式 PostMessage HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0 End Sub Private Sub Form_Load() Call setdateformat End Sub