Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.21;
Скачать: CL | DM;

Вниз

Формат даты   Найти похожие ветки 

 
Mery   (2007-09-27 09:38) [0]

Как добиться того, чтобы после ввода в поле с EditMask:=!99/99/00;1;_ нужных данных автоматически подставлялись две первые цифры года? Это возможно, если задана маска ввода?


 
Сергей М. ©   (2007-09-27 09:51) [1]


> автоматически подставлялись две первые цифры года


Куда подставлялись-то ?


 
Вася Правильный   (2007-09-27 10:56) [2]

настройки подстановки первых цифр года определяются в региональных настройках винды


 
Mery   (2007-09-27 11:11) [3]

>Вася Правильный   (27.09.07 10:56) [2]
Это понятно.
Вопрос в другом.
Пользователю удобно занося дату не ставить точки и год прописывать 2 последними цифрами. Т.Е. 210907-это то, что занёс пользователь.
Для этого используется EditMask:=!99/99/00;1;_ например для компонента Mask Edit.
А можно ли, чтобы на OnExit Этого компонента всё-таки отображение года было 4 цифрами, хотя пользователь ввёл две цифры года?


 
Anatoly Podgoretsky ©   (2007-09-27 11:52) [4]

> Mery  (27.09.2007 11:11:03)  [3]

Противоречишь себе.
Но совет выкинь maskedit


 
Mery   (2007-09-27 12:18) [5]

>Anatoly Podgoretsky ©   (27.09.07 11:52) [4]
>Но совет выкинь maskedit
Почему? Чем заменить?


 
Anatoly Podgoretsky ©   (2007-09-27 13:07) [6]

TEdit


 
clickmaker ©   (2007-09-27 13:24) [7]


> [6] Anatoly Podgoretsky ©   (27.09.07 13:07)
> TEdit

а почему не TDateTimePicker?


 
Anatoly Podgoretsky ©   (2007-09-27 13:41) [8]

> clickmaker  (27.09.2007 13:24:07)  [7]

Они могут сосуществовать.
А вот MaskEdit очень неухлюж. Например не выдерживает никакой конкуренции с ФоксПрошным по заботе о пользователе, тот удобен, а это измывательство надо пользователем. TEdit не совершает насилия над пользователем, позволяет ему делать любые извращения при вводе.


 
Mery   (2007-09-27 14:18) [9]

Но как в TEdit задать формат даты? И решить например мою проблему?


 
Anatoly Podgoretsky ©   (2007-09-27 14:37) [10]

> Mery  (27.09.2007 14:18:09)  [9]

Зачем?
StrToDate


 
Mery   (2007-09-27 14:46) [11]

>Anatoly Podgoretsky ©   (27.09.07 14:37) [10]
Мне нужно создать удобство пользователю. Чтоб не вводил он точки, а только цифры при вводе даты. Ставил 2 цифры года, а после выхода из Edit видел отображение 4 цифр года, чтоб не вводить 11.01.2004, а только 110104, а выходя из Edit или DBEdit(если это поле таблицы), данные бы в нём видел в привычном формате даты.


 
Mery   (2007-09-27 14:48) [12]

clickmaker ©   (27.09.07 13:24) [7]
>а почему не TDateTimePicker?
А TDateTimePicker очень-очень-очень не удобно для ввода.


 
Anatoly Podgoretsky ©   (2007-09-27 14:58) [13]

> Mery  (27.09.2007 14:46:11)  [11]

Ну так и форматируй при выходе, а насчет удобства тут надо психологию менять, реализация MaskEdit в Дельфи отвратительная, неудобная для пользователя.


 
Anatoly Podgoretsky ©   (2007-09-27 15:00) [14]


> А TDateTimePicker очень-очень-очень не удобно для ввода.

Тоже так считаю, еще куда не шло в пределах текущего метода, а чуть дальше и пользователь уже теряется или производит много лишних действий.


 
Washington ©   (2007-09-27 15:02) [15]


> Mery   (27.09.07 14:18) [9]

Обычная работа со строкой ИМХО


 
{RASkov} ©   (2007-09-27 15:21) [16]

Все не так сложно, если не один момент
При вводе пользователем вот такой строки
121176
Как ее рассматривать
1/2/1176
или
12/11/76
и еще есть "моменты" наподобие этого... А кроме этого ничего сложного нет :)
А вот так - 1276 - что думать? Пользователь ошибся или ввел верно?


 
Anatoly Podgoretsky ©   (2007-09-27 15:35) [17]

> {RASkov}  (27.09.2007 15:21:16)  [16]

Определяется инструкцией, все отклонения считаются ошибкой


 
{RASkov} ©   (2007-09-27 16:17) [18]

> Определяется инструкцией, все отклонения считаются ошибкой

Тогда вообще никаких проблем :) Все просто....
Например: Строка после ввода пользователем должна иметь длину 6 символов
после 2 символа вставляем "/" т.е. текущий разделитель в дате....
var S: String;
begin
 S:=Edit1.Text;
 try
  Insert(DateSeparator, S, 3);
  Insert(DateSeparator, S, 6);
  try
   if StrToInt(Copy(S, 7, 2))>29 then Insert("19", S, 7) else Insert("20", S, 7)
  except
   S:="ERROR DATE";
  end;
 finally
  Edit1.Text:=S;
 end;
end;

:)


 
Anatoly Podgoretsky ©   (2007-09-27 16:35) [19]

> {RASkov}  (27.09.2007 16:17:18)  [18]

Проверки нужны на допустимость, например TryStrToDate


 
{RASkov} ©   (2007-09-27 16:50) [20]

> [19] Anatoly Podgoretsky ©   (27.09.07 16:35)
> Проверки нужны на допустимость

Ну дык и у меня, в примере выше, об этом не забыто :)
Или прямо-таки обязательно нужно TryStrToDate?


 
{RASkov} ©   (2007-09-27 16:52) [21]

> TryStrToDate?

Тьфу... блин прочитал как TryStrToInt....)


 
Anatoly Podgoretsky ©   (2007-09-27 16:53) [22]

> {RASkov}  (27.09.2007 16:50:20)  [20]

Желательно, поскольку потом надо обратно преобразовать в строку или выдать сообщение пользователю.
А у тебя ничего не вижу, кроме ошибок.


 
{RASkov} ©   (2007-09-27 16:56) [23]

> [22] Anatoly Podgoretsky ©   (27.09.07 16:53)

Я понял уже.... спасибо.


 
Leonid Troyanovsky ©   (2007-09-28 12:48) [24]


> Mery   (27.09.07 14:48) [12]

> А TDateTimePicker очень-очень-очень не удобно для ввода.

Это заблуждение.

Прикинем объем клав. ввода:
В 22% случаев количество нажатий совпадает с вводом
по формату ddmmyy (до 2009 года кол-во даже меньше).
Кроме того, нажатия отличаются по смыслу: числовые клавиши -
формирование данных, а стрелка - подтверждение ввода.

Оставшиеся 78% - это одно доп. нажатие, но
много доп. возможностей: например, 13 месяц не
получится никогда, как и 32 день, как и 29.02 в не високосный год.
Самое приятное, что для этого не нужно ни строки кода.

Ну, и дополнительный бонус: сам выпадающий календарь.

А если проявлять сверзаботу о юзере, то надо смотреть,
что за даты  вводятся. Если, например, из одного года,
то стоит выделить год в отдельное поле и, возможно,
задизайблить его (оставив горячую клавишу для enable).
Аналогично месяц, на этот раз - combobox, и т.д.

--
Regards, LVT.


 
Malik ©   (2007-09-28 14:04) [25]

Я не читал, может уже кто-то сказал... Брось это....  А тебе чем не угодил компонент типа TDateTimePicker



Страницы: 1 вся ветка

Текущий архив: 2007.10.21;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.022 c
2-1190362266
АндрейК
2007-09-21 12:11
2007.10.21
Delphi7 и FastReport 3.19


2-1191266458
Gringoire
2007-10-01 23:20
2007.10.21
Ctrl + V


15-1189280424
Kostafey
2007-09-08 23:40
2007.10.21
Авотматизация конфигурации


15-1190464568
me
2007-09-22 16:36
2007.10.21
Сайты, форумы для изучающих английский


2-1190726011
Yurikon
2007-09-25 17:13
2007.10.21
Вопрос по RecNO