Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Маски ввода


Автор: legwar 1.2.2005, 21:20
Здравствуйте никто не подскажет способ реализации корректного ввода информации в maskedit.
чтоб
dd.mm.yyyy
dd-1-30
mm-1-12
yyyy-1980-1999

Автор: Satana 1.2.2005, 22:47
чото я не уловил сути вопроса? там же есть форматы по умолчанию, вот и отредактируй под себя

Автор: Guest 2.2.2005, 17:00
Цитата(Satana @ 1.2.2005, 22:47)
чото я не уловил сути вопроса? там же есть форматы по умолчанию, вот и отредактируй под себя

Суть вопроса в том, чтоб избежать анамалий ввода, чтоб в поле dd не могли ввести 41 день
или в mm - 13

Автор: Snowy 2.2.2005, 17:07
А вот это не заблокируешь. Единственный вариант контролировать самому через OnChange.
Или использовать TDateTimePicker.

Автор: ~FoX~ 2.2.2005, 17:12
Лучше не по onChange а по KeyUp, KeyDown или KeyPress, но все равно нудно получиться.
Используй DateTimePicker прада он тоже не очень удобный в плане ввода с клавы, но это обойти легко.

Автор: legwar 2.2.2005, 21:17
проблему решил функцией copy.
стандартная проверка
если скопированные цифры >'31' в значении дня тогда анамалия ввода
ну и т.д.

Автор: Гость_Demon 13.3.2005, 02:30
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;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)