В предыдущих постах я начал рассказывать о некоторых проблемах перевода приложения на Delphi с поддержкой юникод (2009/2010/XE). Одним из проявившихся артефактов стало некорректный формат ввода даты в DevExpress компонентах, при языка.
Скажем, когда мы устанавливаем чешский, то при попытке ввести дату по средствам компонента TcxDateEdit получаем следующее:
Соответственно, при попытке осуществить ввод данных в таком формате, получаем ошибку (Could not convert variant of type (Unicode string) to type (Date)).
При этом в Delphi 2007 все работало без проблем. Тем не менее, как следует из материалов на официальном сайте DevExpress, пользователи продукта сталкивались с подобными проблемами и при работе с младшими версиями Delphi. Например, при попытке изменить формат даты в процессе выполнения приложение. Решение довольно простое.
Подключаем модуль cxFormats и выполняем следующий код:
cxFormatController.BeginUpdate;
cxFormatController.UseDelphiDateTimeFormats := True;
cxFormatController.EndUpdate;
cxFormatController.GetFormats;
cxFormatController.NotifyListeners;
Все становится на свои места.
Другие статьи серии:
DevExpress. TIPS & TRICKS #0
DevExpress. TIPS & TRICKS #2
DevExpress. TIPS & TRICKS #3
DevExpress. TIPS & TRICKS #4
DevExpress. TIPS & TRICKS #5
DevExpress. TIPS & TRICKS #5.5
DevExpress. TIPS & TRICKS #6
DevExpress. TIPS & TRICKS #7
1) Заметил пару грамматических ошибок:
“в DevExpress компонентах, при языка.” Не понятен конец фразы “при языка.”
“вести дату по средствам компонента” – думаю тут должно быть слово “средством”
2) По поводу даты. У меня например в каждой программе в основном модуле стоит так:
initialization
Application.UpdateFormatSettings := False;
DateSeparator := ‘.';
ShortDateFormat := ‘dd’+DateSeparator+’mm’+DateSeparator+’yyyy';
То есть я сам задаю правильный формат даты и ни разу еще не было проблем с ее вводом.
Формат ввода даты должен совпадать с текущим форматом даты в Windows. А вы принуждаете пользователя – это моветон