Перевірка даних після введення C + + Builder

Іноді вам не хочеться або ж ви не можете додавати дані посимвольний в поле введення У такому випадку ви віддасте перевагу почекати, поки користувач закінчить з введенням даних, а потім перевіряти дані при спробі покинути поле введення Це може бути введення чисел з конкретного діапазону, введення часу, дати або будь-яких інших специфічних даних

CBuilder також може допомогти вам у цих випадках у перевірці даних після вводу Для перевірки даних після введення їх користувачем вам потрібно додати обробник події OnExit для поля введення Для демонстрації як це робиться, потрібно додати обробник для події OnExit другого поля введення, Edit2 Додайте наступний код в цей новий обробник:

void __fastcall TForm1::Edit2Exit(TObject *Sender)

{

BOOL bFlag = TRUE

char *s = Edit2-&gtTextc_str()

/ / По-перше, перевіряємо що всі символи – цифри

for (int i=0 i&lt(int)strlen(s) ++i)

{

char c = s[i]

if ( isdigit(c) ) bFlag = false

}

/ / Дивимося, чи пройшов тест

if (  bFlag == false)

{

MessageBox(NULL,

“У це поле можна вводити тільки цифри”, Помилка, MB_OK)

Edit2-&gtSetFocus() return

}

/ / Тепер перевіряємо діапазон (1 . 10) long lVal = atol (Edit2-> Textc_str ()) if (lVal <1 | | lVal> 10)

{

MessageBox(NULL,

“У це поле можна вводити тільки значення від 1 до 10”, Помилка, MB_OK)

Edit2-&gtSetFocus() return

}

}

Цей обробник спочатку перевіряє, щоб введення містив тільки цифри Якщо цей тест не проходить, то зявляється повідомлення про помилку і фокус введення повертається до поля введення Якщо ж тест пройшов, тоді ми перевіряємо, що значення знаходиться в потрібному діапазоні Якщо ні, то знову ж зявляється повідомлення про помилку і фкус введення повертається до поля введення

Якщо ви працювали з Windows SDK, то ви ймовірно намагалися зробити щось подібне, обробляючи повідомлення WM_KILLFOCUS Якщо так, то ви, мабуть, знаєте, що спроба відображення вікна з повідомленням під час обробки повідомлення WM_KILLFOCUS призводить до нескінченного циклу, який врешті-решт руйнує програму Не бійтеся цих переказів старовини CBuilder не має таких проблем Ви можете відображати вікна з повідомленнями, міняти фокус введення або робити ще що завгодно в обробнику події OnExit Це сучасна ера програмування, а не темні роки

Я сподіваюся, ви отримали хороший урок в цьому прикладі з приводу перевірки вводу Давайте коротко повторимо основні моменти перевірка даних в полях введення в CBuilder:

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Для обробки окремих натиснень клавіш потрібно встановити властивість форми KeyPreview в

true

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Коли ви обробляєте введення посимвольний для полів введення, ставте значення символу в 0,

щоб не допустити його додавання в поле введення

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Ви можете прибрати обробку події, встановивши покажчик на обробник події для даного обєкта в NULL Так, щоб прибрати посимвольного обробку в полі введення, вам потрібно поставити Edit1-> OnKeyPress = NULL

· Для перевірки вводу при спробі користувача покинути поле введення обробляйте подія OnExit На додаток до цього, якщо вам потрібні будь-які дії при перемиканні користувача в поле введення, обробляйте подія OnEnter

От і все, що можна сказати про загальну проблему перевірці даних в полі введення для форм CBuilder Хоча проблема перевірки велика, CBuilder надає вам інструменти для вирішення основних проблем, що можуть виникнути у вашому додатку

Джерело: Теллес М – Borland C + + Builder Бібліотека програміста – 1998

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*