Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Ограничение ввода данных в TEdit


Автор: huminclouds 20.11.2012, 14:11
Почему-то не срабатывает простейшая процедура Delphi 2010 под Win XP x86
Код

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in ['А'..'Я', 'а'..'я', 'Ё', 'ё', #8, #32]) then
    Key := #0;
end;

Но кириллические буковки с пробелами не вводятся. Если закомментить код, то вводятся любые символы без проблем. Не догоняю, где я туплю...

Автор: northener 21.11.2012, 00:27
Цитата(huminclouds @  20.11.2012,  14:11 Найти цитируемый пост)
Почему-то не срабатывает простейшая процедура Delphi 2010 

Давно уже задумывался над тем, как компилятор в Д2009+ сможет разрулить такую ситуацию, когда элемент набора set может быть только однобайтным, а в строке кода:
Код

  if not (Key in ['А'..'Я', 'а'..'я', 'Ё', 'ё', #8, #32]) then

проверяется вхождение  в набор двухбайтного WideChar?
Поэтому (в том числе) до сих пор и не собираюсь переходить на Д2009+ smile

Автор: huminclouds 21.11.2012, 11:10
А вот такая конструкция вполне себе работает:
Код

 case Key of
    'А'..'Я', 'а'..'я', 'Ё', 'ё', #8, #32: ;
 else
   Key:=#0;
 end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)