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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2015, 13:01   #1
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию Ввод символов с ограничением в компоненте TEdit (Delphi)

Никак не могу поставить ограничение. Нужно, чтобы не допускал ввод символов, как только количество цифр превысит 15. Множество Taxt: set of char я описываю в глобальных переменных. Вот вся моя процедура, подскажите ,пожалуйста, где у меня ошибка. Есть кнопки для ввода цифр, вводить с клавиатуры нельзя:
Код:
procedure TCalc.Edit1KeyPress(Sender: TObject; var Key: Char);
var
  I: Integer;
begin
  Edit1.ReadOnly:= true;
  Taxt:=['0'..'9',',','-'];
  for i := 1 to Length(Edit1.Text) do
    begin
      if not(Edit1.Text[i] in Taxt) and (Key <> #08) then
      begin
        key:=#0;
      end;
    end;
  if (Length(Edit1.Text) > 15) and (Key <> #08) then
    key:=#0;
end;
zaira001002 вне форума Ответить с цитированием
Старый 21.02.2015, 13:27   #2
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,603
По умолчанию

При нажатии на кнопки ввода цифр увеличивать глобальную переменную-счетчик количества нажатий, и когда она достигает 15 выключать кнопки.

Неизвестно количество символов, указанное в параметрах формы, которое может принимать Edit1. Оно может устанавливаться в окне опций.

Можно попробовать завести статическую переменную в процедуре (или использовать глобальную), которая будет увеличиваться каждый раз при попадании в эту процедуру.
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 21.02.2015, 13:57   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Код:
begin
  Edit1.ReadOnly:= true;
а это зачем? после первого же ввода ничего больше не ввести.
вполне достаточно
Код:
if key not in ['0'..''9',',','-',#8] then key:=#0;
if lengh(edit1.text)>15 and key<>#8 then key:=#0;
P.S. ваш цикл бесполезен поскольку он проверяет то что УЖЕ попало в Edit (т.е. только прошлые вводы).
А проверять надо текущий ввод (key in ....).
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 21.02.2015 в 14:25.
evg_m вне форума Ответить с цитированием
Старый 21.02.2015, 15:34   #4
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию

Спасибо, я сделала это задание)))
zaira001002 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод символов в компоненте TEdit (Delphi) zaira001002 Помощь студентам 12 21.02.2015 00:28
Как в TEdit ограничить ввод чисел? XerSon Общие вопросы Delphi 8 08.06.2010 11:50
ввод по маске в TEdit fize Помощь студентам 7 15.12.2009 15:13
Ввод символов в Edit в Delphi TaYgA Помощь студентам 3 21.11.2009 17:15
Как установить в TEdit фразу "инкрементный поиск" с последующим его очищением на ввод символов? SkAndrew Общие вопросы Delphi 3 10.11.2008 02:38