Приклад обмеження символів edit delphi, shinobi

Трохи історії…

Я накидав на форму поля введення, все підписав, і думав це все 😉 Потім дав протестувати одному агенту, щоб дізнатися його думку. І тут почалося. З'ясувалося, що на все поля потрібно накласти перевірку на дані, що вводяться. Наприклад, в поле "Прізвище", "Ім'я" і "батькові" не можна вводити латиницю і всякі символи і так далі (допустима тільки кирилиця, одинарні прогалини і дефіс). Як пізніше показала практика, люди не дивляться, що вводять ... З цього я став застосовувати обмеження для вводяться користувачем символів.

Фільтрація букв і цифр, що заносяться поля введення (TEdit)

Отже, перейдемо від ліричного відступу до справи. У компонента edit, є чудова подія OnKeyPress. Подія виникає при введенні в поле будь-якого символу, символ зберігається в змінну Key (тип Char). Ось те саме місце, де можна обмежити введення символів, робиться це в такий спосіб:

Приклад обмеження символів edit delphi, shinobi
OnKeyPress для TEdit

Розберемо код. Порівнюємо змінну Key з масивом символів, в даному случає від А до Я в верхньому регістрі, і, якщо умова виконується, то символ відобразиться в поле введення. Якщо умова не виконується, просто Обнуляємо змінну Key. Тобто ми вводимо програмне обмеження на символи, що вводяться, яких немає в масиві 'А' .. 'Я'. У нашому випадку ми робимо фільтрацію букв при введенні в поле edit. Але що вам заважає, наприклад, робити те ж саме в ComboBox і інших компонентах для введення текстових даних? Зверніть увагу, що в умова варто «not», це означає, що за істину буде прийнято як раз те, що символ не входить в діапазон від А до Я.

Помітили в умова код символу # 08? Це код з таблиці ASCII - означає він клавішу Backspace. При написання цього коду я зіткнувся з тим, що якщо не вказати це символ, вийде наступні: можна внести будь-які літери від А до Я, але не можна редагувати запис ... Тому ми додатково дозволяємо вводити символ # 08, тим самим дозволяючи користувачеві редагувати текст.

Така подія є у більшості текстових полів введення, просто вставляєте код і все. Правда є одне «АЛЕ» - даний код я тестував при написанні DLL на Delphi XE 4 ... У мене виникли проблеми, про них я теж напишу. Щоб вас попередити ...

Фільтрація введення TEdit в DelphiXE4 ... Ложка дьогтю в бочці меду ...

Середа Delphi XE 4, і студії працюють з рядками в кодуванні utf8 замість cp1251. Тут ховається корінь зла і код, наведений вище, вже не відпрацює. Тому слід його модернізувати, нижче приведу код для Delphi XE ...

Ще хотілося б дати одну пораду. Я робив наступну схему для введення даних:

Заповнюємо поле edit і натискаємо Enter (в якості підтвердження введення) -> Перевіряємо в цілому введені дані -> підсвічується поле або пропускаємо далі.

Нижче я приведу реалізацію даної схеми.