Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2012, 20:31   #1
13xXx13
Пользователь
 
Регистрация: 14.12.2010
Сообщений: 17
По умолчанию запрет на минус не вначале цифры в edit

Delphi. Как сделать запрет на минус не вначале цифры в edit? поправьте пожалуйста код.

имеется код:
Код:
{ защита поля редактирования на ввод числа }
case key of
'0'..'9',chr(8):;
',': if pos(',',edit1.text)>0 then key:=chr(0);
'–': if length( edit1.text)>0 then key:=chr(0);
chr(13): edit2.SetFocus;
else key:=chr(0);
end;
и по возможности исправить чтоб запятую вначале нельзя было ставить.
13xXx13 вне форума Ответить с цитированием
Старый 20.09.2012, 21:38   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,379
По умолчанию

Если коротко, то в части минуса и запятой сделал так, например:
Код:
procedure TForm1.Edit1Change(Sender: TObject);
begin
   if Edit1.Text = ',' Then // Запятая не может быть в начале числа
      Edit1.Text := '';
   if ((Length(Edit1.Text) > 1) and (Edit1.Text[Length(Edit1.Text)] = '-')) Then
   begin // Минус не может быть в середине числа
      Edit1.Text := Copy(Edit1.Text, 1, Length(Edit1.Text) - 1);
      Edit1.SelStart := Length(Edit1.Text);
      Edit1.SelText := '';
   end;
end;

end.
Но... Запятых может быть несколько, тут следует доработать
и о том, что это только цифры следует позаботиться.

В принципе, если нужна проверка на правильность ввода вещественного числа, то лучше глянуть на пример в книге:
В.В. Фаронов, DELPHI. Программирование на языке высокого уровня, 2005 г., стр 299.
Код:
var OldText: String; // Это описание следует поместить в секцию private класса формы
procedure TForm1.Edit1Change(Sender: TObject);
begin
   if Edit1.Text <> '' Then
    try
      StrToFloat(Edit1.Text);
      OldText := Edit1.Text;
    except
// Ошибка преобразования. Восстановим прежний текст
// Курсор в конец текста
      Edit1.Text := OldText;
      Edit1.SelStart := Length(Edit1.Text);
      Edit1.SelText := '';
   end;
end;

end.
Как то так ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 21.09.2012, 22:37   #3
13xXx13
Пользователь
 
Регистрация: 14.12.2010
Сообщений: 17
По умолчанию

спасибо за помощь
13xXx13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрет ввода в Edit Matrix6993 Мультимедиа в Delphi 17 12.10.2013 12:04
запрет на ввод Edit не даты (Delphi) tarasov_88 Помощь студентам 13 13.09.2012 16:54
Цифры и минус... lypyotr Общие вопросы Delphi 2 19.07.2012 17:36
Цифры в Edit(delphi) CAMOBAP Помощь студентам 4 25.01.2011 22:17
запрет ввода одинаковых чисел в edit epic6 Общие вопросы Delphi 6 15.06.2009 08:31