Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.10.21;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.04 c
2-1190723990
cvg
2007-09-25 16:39
2007.10.21
Как обратиться к чарту по номеру?


1-1186583018
ExMiST
2007-08-08 18:23
2007.10.21
сессионные переменные, Delphi, CGI


8-1168425391
cautur
2007-01-10 13:36
2007.10.21
Запись разговора


2-1190878591
fff
2007-09-27 11:36
2007.10.21
курсор


15-1190540385
Дженкинс
2007-09-23 13:39
2007.10.21
Какие есть способы предоставления Инета в локалку?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский