![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| legwar |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 24.12.2004 Где: Москва Репутация: нет Всего: нет |
Здравствуйте никто не подскажет способ реализации корректного ввода информации в maskedit.
чтоб dd.mm.yyyy dd-1-30 mm-1-12 yyyy-1980-1999 |
|||
|
||||
| Satana |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 564 Регистрация: 15.9.2004 Где: Ставрополь, СЗ ра йон Репутация: 1 Всего: 5 |
чото я не уловил сути вопроса? там же есть форматы по умолчанию, вот и отредактируй под себя
-------------------- |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Суть вопроса в том, чтоб избежать анамалий ввода, чтоб в поле dd не могли ввести 41 день или в mm - 13 |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
А вот это не заблокируешь. Единственный вариант контролировать самому через OnChange.
Или использовать TDateTimePicker. |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 13 Всего: 68 |
Лучше не по onChange а по KeyUp, KeyDown или KeyPress, но все равно нудно получиться.
Используй DateTimePicker прада он тоже не очень удобный в плане ввода с клавы, но это обойти легко. |
|||
|
||||
| legwar |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 24.12.2004 Где: Москва Репутация: нет Всего: нет |
проблему решил функцией copy.
стандартная проверка если скопированные цифры >'31' в значении дня тогда анамалия ввода ну и т.д. |
|||
|
||||
| Гость_Demon |
|
|||
|
Unregistered |
function TFEdit.pDate(st:string):boolean;
var m:array[1..12] of word; d,mes,y:integer; begin pdate:=true; if length(st)<>10 then begin messageDlg('Неправильный формат. ведите в формате дд.мм.гггг',mtError, [mbOk],0); pdate:=false; end; d:=strtoint(copy(st,1,2)); mes:=strtoint(copy(st,4,2)); y:=strtoint(copy(st,7,4)); m[1]:=31; if IsLeapYear(y) then m[2]:=29 else m[2]:=28; m[3]:=31; m[4]:=30; m[5]:=31; m[6]:=30; m[7]:=31; m[8]:=31; m[9]:=30; m[10]:=31; m[11]:=30; m[12]:=31; if mes>12 then begin messageDlg('В году только 12 месяцев!',mtError, [mbOk],0); pdate:=false; end; if d>m[mes] then begin messageDlg('В этом месяце '+Inttostr(m[mes])+'дней',mtError, [mbOk],0); pdate:=false; end; end; |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |