Inno Setup ограничивает некоторые специальные символы при нажатии клавиш - PullRequest
0 голосов
/ 21 сентября 2018

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

procedure RestrictKeyPress(Sender: TObject; var Key: Char);
var
  KeyCode: Integer;
begin
  { Restrict special characters @, ^, *, \ }
  KeyCode := Ord(Key);
  if ((KeyCode = 32) or (KeyCode >= 64) or (KeyCode <= 94) or (KeyCode <= 42) or (KeyCode <= 92)) then
    Key := #0;
end;

Я вызываю эту процедуру в InitializeWizard вот так

PageConfig.Edits[1].OnKeyPress := @RestrictKeyPress;

Но когда я проверяю это, нажатие клавиш не работает ни для каких клавиш.Я пытаюсь ограничить только ключи, указанные ниже, и пробел.

@, ^, *, \

1 Ответ

0 голосов
/ 21 сентября 2018

Ваша логика совершенно неверна.:-) Давайте посмотрим:

if ((KeyCode = 32)          { Ok so far }
  or (KeyCode >= 64)        { Oops. Killing every key above 63 }
  or (KeyCode <= 94)        { And every key below 95 }
  or (KeyCode <= 42)        { And (redundantly) every key below 43 }
  or (KeyCode <= 92)) then  { And (redundantly) every key below 93 }

Вам также не нужно преобразовывать Key в число.

Вместо этого используйте простой набор:

if (Key in ['@', '^', '*', '\', #32]) then  { #32 is space }
  Key := #0;
...