Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Формат даты [D7, XP]


Страницы:   1 2

Mery ©   (2007-09-27 09:38:00) 

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


Malik   (2007-09-28 14:04:00) [1]

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


Leonid Troyanovsky   (2007-09-28 12:48:00) [2]


> Mery   (27.09.07 14:48) [12]

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

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

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

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

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

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

--
Regards, LVT.


{RASkov}   (2007-09-27 16:56:00) [3]

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

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


Anatoly Podgoretsky   (2007-09-27 16:53:00) [4]

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

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


{RASkov}   (2007-09-27 16:52:00) [5]

> TryStrToDate?

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


{RASkov}   (2007-09-27 16:50:00) [6]

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

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


Anatoly Podgoretsky   (2007-09-27 16:35:00) [7]

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

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


{RASkov}   (2007-09-27 16:17:00) [8]

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

Тогда вообще никаких проблем :) Все просто....
Например: Строка после ввода пользователем должна иметь длину 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 15:35:00) [9]

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

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


{RASkov}   (2007-09-27 15:21:00) [10]

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


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


> Mery   (27.09.07 14:18) [9]

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


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


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

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


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

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

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


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

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


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

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


Anatoly Podgoretsky   (2007-09-27 14:37:00) [16]

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

Зачем?
StrToDate


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

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


Anatoly Podgoretsky   (2007-09-27 13:41:00) [18]

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

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


clickmaker   (2007-09-27 13:24:00) [19]


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

а почему не TDateTimePicker?


Anatoly Podgoretsky   (2007-09-27 13:07:00) [20]

TEdit


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо