Статьи

Приклад фільтрація даних вводяться в поля введення Delphi - Shinobi

  1. Трішки історії… При написанні свого проекту був момент, коли потрібно було розробити основну форму...
  2. Фільтрація введення TEdit в DelphiXE4 ... Ложка дьогтю в бочці меду ...

Трішки історії…

При написанні свого проекту був момент, коли потрібно було розробити основну форму для занесення даних особи, від якого буде подано заяву: ПІБ, адреса, паспортні дані і так далі.

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

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

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

Ось те саме місце, де можна обмежити введення символів, робиться це в такий спосіб:

OnKeyPress для TEdit

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

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

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

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

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

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

procedure TForm1.Edit1KeyPress (Sender: TObject; var Key: Char); var simvol: AnsiString; begin simvol: = String (Key); if not (Char (simvol [1]) in [ 'А' .. 'Я', # 08]) then Key: = # 0; end;

Епілог

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

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

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

procedure TForm1.Edit1KeyPress (Sender: TObject; var Key: Char); begin if not (Key in [ 'А' .. 'Я', # 08, # 13])) then Key: = # 0; if Key: = # 13 then // Перевіряємо чи дійсно натиснута клавіша Enter begin if (Тут умова перевірки того, що ввели. Наприклад, перевірка введеного Імені за довідником) then begin Edit1.Color: = clWindow; // Офарблюємо в білий колір, можете замінити на інший Edit2.Enabel: = True; // Активуємо наступні поле введення Edit2.SetFocus; // Передаємо в нього фокус, такий порядок важливий ... Не можна передавати фокус в НЕ активування поле - це викличе помилку. Else Edit1.Color: = clRed; // Офарблюємо в червоний. Якщо умова не виконана ... End;

Ось все, що я хотів написати по цій темі. Наостанок, скажу, що цифри вказуйте ось так « '0' .. '9'». Сподіваюся, дана стаття буде вам корисна, дорогі читачі!

Але що вам заважає, наприклад, робити те ж саме в ComboBox і інших компонентах для введення текстових даних?
Помітили в умова код символу # 08?

Новости

Как создать фото из видео
Кризис заставляет искать дополнительные источники дохода. Одним из таких источников может стать торговля на валютном рынке Форекс. Но чтобы не потерять свои деньги необходимо работать с надежным брокером.

Как оформить группу в вконтакте видео
Дано хотел свой магазин в вк, но не знал с чего начать его делать. Так как хотелось не банальный магазин с кучей ссылок и фото, а красиво оформленный. С меню, с аватаркой. После просмотра видео создал

Как оформить диск малыш от рождения до года из фото и видео
Оформить диск "Малыш от рождения до года" из фото и видео можно совершенно разными способами! Кто-то для достижения данной цели идет на шоу-таланты, кто-то пользуется услугами профессионалов, а кто-то