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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2015, 19:41   #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 вне форума Ответить с цитированием
Старый 20.02.2015, 19:45   #2
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Цитата:
Сообщение от zaira001002 Посмотреть сообщение
Никак не могу поставить ограничение. Нужно, чтобы не допускал ввод символов, как только количество цифр превысит 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;
Блин, зачем бегины на один оператор? Я голова сломал.

Последний раз редактировалось Iron Monk; 20.02.2015 в 19:48.
Iron Monk вне форума Ответить с цитированием
Старый 20.02.2015, 19:49   #3
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию

если даже меньше 15) оно все равно не работает так, как должно
zaira001002 вне форума Ответить с цитированием
Старый 20.02.2015, 19:55   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

У edit-а есть свойство maxlength. Чем не устроило?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.02.2015, 20:00   #5
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Код:
 Edit1.ReadOnly:= true;
Смайл - головалицо.
Что бы с этим хотите ввести в Edit?
Iron Monk вне форума Ответить с цитированием
Старый 20.02.2015, 20:07   #6
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от zaira001002 Посмотреть сообщение
Никак не могу поставить ограничение. Нужно, чтобы не допускал ввод символов, как только количество цифр превысит 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;
В инспекторе объектов у компонента TEdit свойство Max Length установить на 15.

А в обработчике события keyPress написать такой код
Код:
if NOT (key in ['0'..'9', chr(8)]) then begin
    key:=chr(0);
  end;
вот и всё.

Последний раз редактировалось Вадим Мошев; 20.02.2015 в 20:09.
Вадим Мошев вне форума Ответить с цитированием
Старый 20.02.2015, 20:09   #7
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
В инспекторе объектов у компонента TEdit свойство Max Length установить на 15.
Там стоит едит рид онли = тру.
Что можно вообще ввести?
Iron Monk вне форума Ответить с цитированием
Старый 20.02.2015, 20:16   #8
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от Iron Monk Посмотреть сообщение
Там стоит едит рид онли = тру.
Что можно вообще ввести?
Ничего .

С уважением, Ваш Капитан Очевидность.
Вадим Мошев вне форума Ответить с цитированием
Старый 20.02.2015, 20:19   #9
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Ничего .
С уважением, Ваш Капитан Очевидность.
Нас тролят, сэр
Iron Monk вне форума Ответить с цитированием
Старый 20.02.2015, 20:29   #10
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию

у меня есть кнопки) я не стану ведь отправлять всю программу))) когда очевидно) что у меня что-то не так именно в Edit))) а так) у меня есть кнопки с цифрами))) оттуда и ввожу))) не принимайте меня за идиота)
zaira001002 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в 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/TMemo MaksimSeriy Общие вопросы Delphi 5 02.04.2009 01:04
Как установить в TEdit фразу "инкрементный поиск" с последующим его очищением на ввод символов? SkAndrew Общие вопросы Delphi 3 10.11.2008 02:38