2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 
Сообщение14.05.2008, 17:07 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
OZH писал(а):
Если это --- чьё-то упражнение, то можно много чего накрутить, изголяясь в умении использовать методы и свойства компонентов. Если это --- нужно для чего-нибудь, то кому мешает простой календарик?

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

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

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

 Профиль  
                  
 
 Re: Контроль ввода
Сообщение17.11.2011, 16:30 


17/11/11
1
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

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group