2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2
 
 
Сообщение14.05.2008, 17:07 
Аватара пользователя
:evil:
OZH писал(а):
Если это --- чьё-то упражнение, то можно много чего накрутить, изголяясь в умении использовать методы и свойства компонентов. Если это --- нужно для чего-нибудь, то кому мешает простой календарик?

Ну, например, выпадающий календарик имеет другую эргономику. Для любителей грызунов — самое то, но страшно неудобно с клавиатуры. Да и времени ввод даты занимает куда больше. А время (если не отрывать от DOOM'а, а рассматривать коммерчески) — штука дорогая.

Кроме того, есть ещё один момент: на что ориентирован интерфейс. На чайника, для которого семь пятниц на неделе и который свой пароль вводит с осьмнадцатой попытки, или на профи, который ошибается раз в году. Во втором случае нужна именно проверка ввода, а не календарь.

Другой вопрос, что и в том и в другом случае уместен control. Сделан он с eye candy или как текстовое поле с шаблоном и validation — не важно.

 
 
 
 Re: Контроль ввода
Сообщение17.11.2011, 16:30 
procedure TForm1.MaskEdit1Change(Sender: TObject);
begin
if length(MaskEdit1.Text)=2 then
begin
if StrToInt(MaskEdit1.Text) >31 then
begin
ShowMessage('Кол-во дней в месяце больше 31 не бывает');
MaskEdit1.Text:='';
exit;
end;
end;

if length(MaskEdit1.Text)=3 then
begin
if copy(MaskEdit1.Text,3,1) <> '.' then
begin
ShowMessage('Дата вводится в формате дд.мм.гг');
MaskEdit1.Text:=copy(MaskEdit1.Text,1,2);
MaskEdit1.SelStart:=2;
exit;
end;
end;

if length(MaskEdit1.Text)=5 then
begin
if strtoint(copy(MaskEdit1.Text,4,2)) > 12 then
begin
ShowMessage('Извините, кол-во месяцев году всего 12.');
MaskEdit1.Text:=copy(MaskEdit1.Text,1,3);
MaskEdit1.SelStart:=3;
exit;
end;
end;
if length(MaskEdit1.Text)=6 then
begin
if copy(MaskEdit1.Text,6,1) <> '.' then
begin
ShowMessage('Дата вводится в формате дд.мм.гг');
MaskEdit1.Text:=copy(MaskEdit1.Text,1,5);
MaskEdit1.SelStart:=5;
exit;
end;
end;
end;

procedure TForm1.MaskEdit1KeyPress(Sender: TObject; var Key: Char);
const Digit: Set of Char=['0' .. '9','.'];
begin
if not (Key in Digit) then
Key:=#0;
end;

 
 
 [ Сообщений: 17 ]  На страницу Пред.  1, 2


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group