|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.01.2014, 21:42 | #1 |
Пользователь
Регистрация: 05.10.2013
Сообщений: 13
|
Задание формата времени в DBGrid.
У меня в таблице есть поле, с типом данных дата\время.
В Access'e установлен формат "hh:nn", чтобы отображалось только время, например 21:12. А в DBGrid'e данные отображаются полным форматом т.е. 30.12.1899 21: 12: 00. Мне нужно, чтобы данные в DBGrid'e имели именно такой формат "21:12". Нашел причину - Стандартный TColumn такого свойства не имеет. Что сумел найти: Класс TField способен провернуть это дело, через потомка TDateTimeField (Значения даты и времени), а именно TDateTimeField(Название_колонки).Di splayFormat='hh:nn'; Но как все, ЭТО соединить, не знаю ? P.S. Вот исходник программы которую нужно довести до ума... |
07.01.2014, 22:23 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Так, у тебя есть на DataModule2 компонент ADOTable1.
Выставь ему Active:=true в дизайне, потом раскрой свойство Fields, и нажми на кнопку получения списка полей из открытого набора. Найди в полученном списке нужное поле - у него в свойствах в инспекторе объектов будет DisplayFormat. Там и поставишь нужное. Короче пусть в дизайне список полей составится сразу, а не динамически. Либо же (не проверял) в динамике после открытия: Код:
I'm learning to live...
|
07.01.2014, 23:44 | #3 |
Пользователь
Регистрация: 05.10.2013
Сообщений: 13
|
Stilet, Спасибо, ВСЕ нашел, но есть маленькая проблема, а именно: При редактировании поля появляется опять полный формат... Я сделал "Маску" в свойствах и уж было решил что все получилось, а нет... он по маске меняет минуты т.е. в таблице 15:23, а при попытке отредактировать появляется 15:00 как мне кажется Я не правильно задаю тип маски или Я что-то сделал не так ?
|
08.01.2014, 01:18 | #4 |
Пользователь
Регистрация: 05.10.2013
Сообщений: 13
|
По поводу маски нашел вот что:
Маска состоит из разделенных символом трех полей: 1) первое поле является собственно маской; 2) второе поле— это символ, определяющий, считаются ли литеральные символы частью данных. По умолчанию используется 1, и литеральные символы маски являются частью не только значения, редактируемого в визуальном компоненте, но и значения, содержащегося в поле. Если вместо 1 установить символ о, то литеральные символы маски по-прежнему будут отображаться при редактировании значения, однако в поле не сохраняются. Литеральные символы удобно применять в качестве разделителей, например, при вводе телефонных номеров; 3) третье поле содержит символ, используемый для указания незаполненных символов во вводимом тексте, по умолчанию это символ подчеркивания. Если второе и/или третье поля не определены, то для них действуют значения по умолчанию. В маске могут использоваться следующие специальные символы: ! — в тексте подавляются начальные пробелы; если символ ! отсутствует, то подавляются конечные пробелы; >— символы, следующие за этим символом, до появления символа < переводятся в верхний регистр; <— символы, следующие за этим символом, до появления символа > переводятся в нижний регистр; <> — проверка регистра символов не производится; \ — символ, следующий за этим символом, является литеральным; L — в позиции должен быть введен алфавитный символ; l — (строчная латинская буква l)— в позиции может быть введен алфавитный символ; A— в позиции должен быть введен алфавитно-цифровой символ; а — в позиции может быть введен алфавитно-цифровой символ; C — в позиции должен быть введен символ; с — в позиции может быть введен символ; 0 — в позиции должен быть введен цифровой символ; 9 — в позиции может быть введен цифровой символ; # — в позиции может быть введен цифровой символ или знаки + и — ; :— используется для разделения часов, минут и секунд в показаниях времени; / — используется для разделения дней, месяцев и лет в датах; ; — разделяет поля маски; _ — оставляет в окне редактирования пустое пространство, являющееся автоматически пропускаемым разделителем, в которое нельзя ввести информацию. Примеры масок: !99/99/00; 1;_ — для даты; !000−00−00; 1;_ — для семизначного телефонного номера, разделитель «-» является частью редактируемого и запоминаемого значения; !000−00−00, −0;_—для семизначного телефонного номера, разделитель «-» является частью только редактируемого значения; !90:00; 1;_ — для времени; 1_1_1_1_1_1_;1;_— для слова длиной в шесть букв максимум (между буквами отображаются пробелы). Для составления маски можно использовать редактор шаблонов (Input Mask Editor). Редактор шаблонов вызывается двойным щелчком мыши в поле значения свойства EditMask или командой Input Mask Editor контекстного меню. Маска вводится в поле Input Mask, ее также можно выбрать из образцов в поле Sample Masks и затем изменить. Флажок Save Literal Characters управляет включением в маску литеральных символов, а поле Character for Blanks содержит символ, используемый для указания незаполненных позиций во входной строке. Поле Test Input позволяет проверить функционирование подготовленной маски. Маску также можно загрузить из файла с расширением dem, который выбирается в окне Open Mask File, открываемом нажатием кнопки Masks. Подготовить маску можно и самому, но это более сложно. Удобно, воспользовавшись редактором маски, выбрать наиболее близкую к требуемой маску, а затем уже откорректировать ее вручную. P.S. Думаю что дело не в маске так как результат все тот же, при редактировании часы остаются, а минуты обнуляются... Последний раз редактировалось 0parol0lorap0; 08.01.2014 в 01:21. |
09.01.2014, 19:05 | #5 |
Пользователь
Регистрация: 05.10.2013
Сообщений: 13
|
Ну что, у кого-нибудь есть идеи почему при редактировании часы остаются, а минуты обнуляются ? Я пока ничего ни нашел.
|
10.01.2014, 09:53 | #6 | |||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
Цитата:
Цитата:
Цитата:
программа — запись алгоритма на языке понятном транслятору
|
|||
10.01.2014, 16:05 | #7 | |
Пользователь
Регистрация: 05.10.2013
Сообщений: 13
|
Цитата:
Ноооо... у меня поле в БД хранит время ПРИЧЕМ в формате "hh:mm" т.е. delphi предлагает маску для времени: " !90:00; 1;_ " она не подходит... (( Например в таблиц: 20:30 Такая " !90:00; -0;_ " возвращает " 20:00; -_ " Такая " !90:00;0;_ " возвращает "30.12.1899 20:30::00" Такая " !90:00:00;_ " возвращает " 20:30:00 " -- Но мне секунды НЕ нужны!!! Такая " !90:00:;_ " возвращает "20:30:" -- Удалить двоеточие и сохранить его в БД нельзя. И так вывод: Почему происходит обнуление минут, Я понял. А вот как задать маску под формат "hh:mm", Я пока не знаю. |
|
25.01.2014, 08:07 | #8 | |
Новичок
Джуниор
Регистрация: 03.02.2012
Сообщений: 1
|
Цитата:
и добавляеш в таблицу FieldByName('Time').AsString := DateMask.Text |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сумма времени из столбцов DBGrid | ul_mrAlex | Общие вопросы Delphi | 3 | 09.04.2013 19:01 |
Из DBGrid в Excel: проблема формата | Пепс | C++ Builder | 1 | 14.11.2012 14:14 |
Создание формата времени!!! | Olga_2 | Microsoft Office Access | 7 | 14.11.2012 01:01 |
Вывод текущего времени формата H:M:S:MS, где MS - миллисекунды | Gypsy | Помощь студентам | 5 | 13.01.2010 18:05 |