Как изменить время в DBEdit, ограниченное полем DateTime, в формат военного времени, например «2300»?

Я использую Delphi XE3 и XE2.

У меня есть TDBEdit, который привязан к полю TDateTime в моей базе данных.
Мой TDBEdit должен отображать время в военном формате, то есть 2300, но в настоящее время он отображает обычное время 10:05:00.

Я пытался установить маску ввода на что-то вроде !9000, но это дало мне: 00 AM
Я проверил все возможные способы с маской ввода безрезультатно.

Есть ли способ преодолеть это?

Также я нигде не вижу свойство Data.DB.TDateTimeField.DisplayFormat

экран 01

Здесь тоже нет

экран 02


person Dreamer64    schedule 25.05.2013    source источник
comment
1) TDateTimeField.DisplayFormat существует — просто проверьте источник. Вы не можете его увидеть, потому что вы ссылаетесь на класс, а не на экземпляр. 2) FieldByName возвращает TField, а не TDateTimeField.   -  person Uwe Raabe    schedule 25.05.2013
comment
В вашей последней попытке (похожей на мой ответ) отсутствует закрывающая скобка перед .. Должно быть TDateField(Center_Table.FieldByName('Report_DateTime')).Dis - видите )).? Мой ответ правильный, как показывают изображения, которые я разместил вместе с ним.   -  person Ken White    schedule 25.05.2013
comment
Я знаю, что это там, но мне это не кажется   -  person Dreamer64    schedule 25.05.2013


Ответы (2)


Вы не можете их увидеть, потому что пытаетесь сделать это неправильно, как сказал Уве.

Создайте постоянное поле (дважды щелкните таблицу или запрос и добавьте поле для поля TDateTime), а затем используйте его в своем коде. Вот один для простого TTable (на самом деле TADSTable из базы данных Advantage) с TDateTimeField под названием DATE_OPEN:

Изображение свойства DisplayFormat

Если вы не хотите создавать постоянные поля, вы всегда можете просто привести тип (убедитесь, что это действительно TDateField, иначе вы получите нарушение прав доступа). Также обратите внимание, что перед точкой . есть два символа ). Левый закрывает вызов функции FieldByName, второй завершает приведение типа к TDateField, и оба должны присутствовать, чтобы это работало.

введите здесь описание изображения

Затем вы можете установить DisplayFormat на hhnn, чтобы принимать такие времена, как 0900 или 2100 для 9:00 или 21:00 соответственно.

person Ken White    schedule 25.05.2013

Правильная запись для свойства DisplayFormat полей — «hhnn».

person Uwe Raabe    schedule 25.05.2013
comment
ммм .. Здесь или где-либо еще нет свойства Fields DisplayFormat, кроме DBEdit, поля DateTime или набора данных - person Dreamer64; 25.05.2013
comment
@MS говорит о docwiki.embarcadero.com/Libraries/XE4 /ru/ - person Peter; 25.05.2013
comment
Посмотрите на изображение, я нигде не мог найти это свойство, как я могу его разблокировать, чувак !! - person Dreamer64; 25.05.2013