Измените 24-часовой формат на 12-часовой в Delphi 10.3 Rio

Как изменить формат 24-часовой на 12-часовой в Delphi 10.3 Rio в поле DBGridEh?

Я пытаюсь найти его в свойстве DBGridEh, но безуспешно. Должен ли я создать код для этого или переопределить системные утилиты?


person Mel    schedule 26.09.2019    source источник
comment
Обычно вы устанавливаете поле в DataSet, а не сетку. Взгляните на: stackoverflow.com/questions/46550892/   -  person Brian    schedule 26.09.2019
comment
@Brian Спасибо за это. Но я уже делал форматирование свойств, включая editmask, от 24-часового формата так и не избавился. Вместо этого мне нужен 12-часовой формат. На моем компьютере также установлен 12-часовой формат. Я почти уверен, что где-то есть переключатель для его изменения в delphi.   -  person Mel    schedule 26.09.2019
comment
Здесь отлично работает с DisplayFormat, подобным тому, который предложил Вэл Маринов в ответе: dd/mm/yyyy hh:nn AM/PM.   -  person Brian    schedule 26.09.2019
comment
Вам не нужен EditMask. Вам понадобится свойство DisplayFormat для самого поля. Установка его здесь означает, что независимо от того, где вы отображаете значение поля, оно всегда будет иметь одинаковый согласованный вид. Но если пользователь настроил свой компьютер на использование 24-часового форматирования времени, вам следует соблюдать этот параметр.   -  person Ken White    schedule 27.09.2019


Ответы (1)


Каждый столбец DbGridEh имеет свойство DisplayFormat. Таким образом, вы можете использовать это свойство, чтобы установить желаемый формат в соответствии с его типом данных. Для столбцов с типами данных TDateTime вы можете использовать:

dd.mm.yyyy hh.nn AM/PM

or

hh.nn.ss AM/PM

например, чтобы установить 12-часовой формат.

Дополнительные сведения о форматировании значений DateTime см. В следующих разделах:

http://www.delphibasics.co.uk/RTL.asp?Name=formatdatetime

Редактировать:

Как отметил Кен Уайт, вы также можете использовать TField.DisplayFormat, поэтому независимо от того, где отображается содержимое поля, оно будет иметь один и тот же формат.

person Val Marinov    schedule 26.09.2019
comment
Это лучше сделать на уровне таблицы с помощью свойства TField.DisplayFormat, чтобы независимо от того, где отображается содержимое поля, оно будет иметь один и тот же формат. (Не опускать ваш пост, просто упоминая, что есть лучшее решение.) - person Ken White; 27.09.2019
comment
@KenWhite Я согласен. Я ответил на вопрос, связанный с конкретным компонентом. Кстати, это решение позволяет по-разному представлять одно и то же поле в нескольких столбцах одной сетки. Понятия не имею, пригодится ли это. Я добавил ваш комментарий в ответ. - person Val Marinov; 27.09.2019
comment
@ValMarinov Большое спасибо. Теперь мне стало понятнее. - person Mel; 01.10.2019
comment
@KenWhite Спасибо за ваш вклад. - person Mel; 01.10.2019