Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/49: Рейтинг темы: голосов - 49, средняя оценка - 4.71
40 / 8 / 0
Регистрация: 17.05.2011
Сообщений: 123
1

Запрет ввода Пробела в Edit

28.02.2012, 22:22. Показов 10156. Ответов 18
Метки нет (Все метки)

Имеется Edit, в который пользователь вводит данные. Если пользователь оставил поле пустым, то в него записывается ноль, это я сделал. А как сделать чтобы "хитрый пользователь" не смог забить поле пробелами? Т.е. позьзователь вводит любое количество пробелов, но при переходе на другое поле в Edit подставляются нули.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.02.2012, 22:22
Ответы с готовыми решениями:

Запрет ввода символов в Edit
Ответ на частый вопрос: - Как запретить ввод символов в edit - Как запретить ввод первого нуля...

Запрет ввода нуля в edit
Как запретить ввод в edit первой цифрой нуль , что бы если первая цифра нуль , то менялась бы на 1

Запрет ввода цифр в поле Edit
Как запретить ввод цифр с клавиатуры, в поле Edit? (но чтоб буквы и дополнительные символы...

Запрет ввода ненужных символов в edit
Выдаёт ошибку, нужно запретить ввод в edit символов, только вещественные и целые числа. procedure...

18
1299 / 705 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
28.02.2012, 23:30 2
Если пользователь оставил поле пустым, то в него записывается ноль, это я сделал
там где ты сделал эту проверку.

выполни Edit.Text:=trim(Edit.Text); и тогда все пробелы, если они есть, удалятся и, ты сможеш определить, что там пусто и подставиш ноль
1
5441 / 2148 / 450
Регистрация: 20.11.2009
Сообщений: 7,186
Записей в блоге: 1
29.02.2012, 00:12 3
а если пробел посредине где-то?
0
5 / 5 / 0
Регистрация: 08.07.2011
Сообщений: 120
29.02.2012, 00:23 4
а какие данные туда вводятся?
0
1299 / 705 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
29.02.2012, 00:27 5
а если пробел посредине где-то?
тогда это не пустая строка разве нет?
0
15 / 15 / 6
Регистрация: 02.01.2012
Сообщений: 73
29.02.2012, 00:31 6
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm2.Edit3KeyPress(Sender: TObject; var Key: Char);
...
if key =' ' then  begin //проверка при вводе пробела
                  if Edit3.Text='' then key:=#0//если текст в Edit3 пуст то ввод запрещен
                  else begin  //иначе если текст в Edit3 не пуст...
                  s:=edit3.text;//присваиваим переменной S текст из EDIT3
                  s1:=copy(s,1,Edit3.seLStart);//присваиваим переменной s1 часть строки s от начала до положения курсора
                  s2:=copy(s,Edit3.seLStart+1,length(s));//присваиваим переменной s1 часть строки s от положения курсора до конца
                  if Edit3.seLStart=0 then key:=#0; //нельзя писать пробел в начале строки
                  if (s<>'') and (Edit3.seLStart<>0 ) and (Edit3.seLStart<>length(s)) then begin //нельзя писать 2пробела подряд
                                                          if (s1[length(s1)]=' ') or (s2[1]=' ') then key:=#0;
                                                          end;
                  if (Edit3.seLStart=length(s)) and (s[length(s)]=' ') then key:=#0;//нельзя писать больше 1го пробела в конце строки
                  end;
                  end;
 Комментарий модератора 
Используйте специальные теги форматирования программного кода!
0
5441 / 2148 / 450
Регистрация: 20.11.2009
Сообщений: 7,186
Записей в блоге: 1
29.02.2012, 00:36 7
Цитата Сообщение от Alex_pac Посмотреть сообщение
тогда это не пустая строка разве нет?

Не по теме:

ну в принципе да, я опирался на название темы...

0
40 / 8 / 0
Регистрация: 17.05.2011
Сообщений: 123
29.02.2012, 01:03  [ТС] 8
Цитата Сообщение от Bios Посмотреть сообщение
а какие данные туда вводятся?
Целые или дробные числа
0
5441 / 2148 / 450
Регистрация: 20.11.2009
Сообщений: 7,186
Записей в блоге: 1
29.02.2012, 01:12 9
может так будет по проще все таки
Delphi
1
2
3
4
5
6
// цифры, запятая разделитель, минус и клавиша стирания разрешены, больше ничего не разрешено
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in ['0'..'9', ',', '-', #8]) then
    Key := #0;
end;
1
40 / 8 / 0
Регистрация: 17.05.2011
Сообщений: 123
29.02.2012, 01:19  [ТС] 10
Вариан Alex_pac мне подошел, сделал так в процедуре OnExit
Delphi
1
2
3
Edit1.text:=trim(Edit1.text);
If Edit1.text='' then 
Edit1.text:='0,00';
Добавлено через 6 минут
Цитата Сообщение от Arcor Посмотреть сообщение
может так будет по проще все таки
Delphi
1
2
3
4
5
6
// цифры, запятая разделитель, минус и клавиша стирания разрешены, больше ничего не разрешено
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in ['0'..'9', ',', '-', #8]) then
    Key := #0;
end;
А если пользователь клавишей стирания все сотрет, тот как раз и получится поле пустое.
0
5441 / 2148 / 450
Регистрация: 20.11.2009
Сообщений: 7,186
Записей в блоге: 1
29.02.2012, 01:22 11
Цитата Сообщение от Mihalish Посмотреть сообщение
А если пользователь клавишей стирания все сотрет, тот как раз и получится поле пустое.
ну ты же писал, что разобрался с этой проблемой, вот я и не брал эту проблему в расчет

Добавлено через 2 минуты
можешь так добавить тогда
Delphi
1
2
3
4
5
6
7
8
// цифры, точка разделитель, минус и клавиша стирания разрешены, больше ничего не разрешено
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in ['0'..'9', '.', '-', #8]) then
    Key := #0;
  if (Key = #8) and (Edit1.Text = '') then
    Edit1.Text := '0';
end;
0
40 / 8 / 0
Регистрация: 17.05.2011
Сообщений: 123
29.02.2012, 01:25  [ТС] 12
Разобрался, разобрался - всем спасибо.
0
1299 / 705 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
29.02.2012, 01:36 13
Edit1.text:=trim(Edit1.text);
If Edit1.text='' then
Edit1.text:='0,00';
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.Edit1Exit(Sender: TObject);
var d:double;
begin
  if (Length(trim(Edit1.Text))>0) then begin
    Edit1.Text:=StringReplace(Edit1.Text,'.',DecimalSeparator,[]);
    Edit1.Text:=StringReplace(Edit1.Text,',',DecimalSeparator,[]);
    if TryStrToFloat(Edit1.Text,d) then exit;
  end;
  Edit1.Text:='0'+DecimalSeparator+'00';
end;
0
36 / 36 / 8
Регистрация: 10.11.2011
Сообщений: 94
29.02.2012, 07:44 14
а не проще было бы сделать так

в событии OnChange Edit'a:
Delphi
1
2
3
4
5
6
7
8
9
var 
 str : string
begin
 str := Edit1.text;
 if str[Length(str)] = ' ' then
  delete(str, Length(str)-1, 1);
 
Edit1.text := str;
end;
может какийто неточности быть (я писал уже сдесь), но в целом должно работать
1
1299 / 705 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
29.02.2012, 11:19 15
может какийто неточности быть (я писал уже сдесь), но в целом должно работать
а с чего ты взял что курсор будет при вводе в конце. пользователь может и стрелочку нажать.
0
21 / 21 / 4
Регистрация: 30.01.2011
Сообщений: 119
09.03.2012, 11:37 16
ББК, вообще лутше наверное использовать не
Delphi
1
 if str[Length(str)] = ' ' then
а
Edit1.SelStart;
0
6 / 6 / 8
Регистрация: 18.09.2014
Сообщений: 124
18.09.2014, 20:41 17
А не проще сделать так?
Delphi
1
2
3
4
5
6
7
procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
  if key=' ' then
    begin
      keybd_event(VK_BACK,0,0,0);
    end;
end;
И потом просто залочить ввод пустого места
Delphi
1
2
3
4
if (edit3.text='')=false then
begin
...
end;
0
46 / 26 / 8
Регистрация: 11.05.2010
Сообщений: 169
18.09.2014, 21:57 18
Цитата Сообщение от Mihalish Посмотреть сообщение
Имеется Edit, в который пользователь вводит данные.
....
сделать чтобы "хитрый пользователь" не смог забить поле пробелами?
Цитата Сообщение от Bios Посмотреть сообщение
а какие данные туда вводятся?
Цитата Сообщение от Mihalish Посмотреть сообщение
Целые или дробные числа
А если злонамеренный пользователь введет буквы? Или что-то, что не будет считаться как целые или дробные числа.
Или отработку этой ситуации делать не требуется?
0
droider
18.09.2014, 22:11     Запрет ввода Пробела в Edit
  #19

Не по теме:

il-ir, Вы задаете вопросы ТС, который открыл эту тему больше двух лет назад. Ничего?

0
18.09.2014, 22:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2014, 22:11
Привет! Вот еще темы с ответами:

Запрет ввода любых символов в edit
у меня в программе в edit выводится ответ и какой код написать или что в функциях написать или...

Массив Edit и запрет ввода лишних символов
Уважаемые, подскажите. Создаю массив Edit'ов И необходимо каждому из них запретить ввод...

Как сделать запрет ввода у Edit в Delphi XE7 под андроид
Пишу программу под андроид, и нужно, чтобы в Edit вписывались только цифры, но кода нигде в...

Запрет на ввод чисел в EDIT, пока не будет заполнено другое поле edit
Здравствуйте! Дело в том, что мне нужно сделать так, чтобы одно поле edit нельзя было заполнять до...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.