Відображення та редагування даних булевого типу використовуючи компонент TDBCheckBox

Компонент TDBCheckBox — пов'язаний з даними аналог звичайного індикатора TCheckBox. Він дозволяє відображати і редагувати дані поля булевого, а також символьного та числового типу. Якщо при виведенні даних булеве поле приймає значення True, то пов'язаний з ним індикатор являється включеним. Якщо ж в процесі редагування користувач включить або вимкне індикатор, то відповідно значення True або False запишеться у відповідному полі таблиці бази даних. Це один із способів забезпечити користувачеві безпомилкове введення значень в поле таблиці бази даних.

Зв'язок компонента типу TDBCheckBox з полем набору даних здійснюється за допомогою його властивостей DataSource типу TDataSource і DataField типу TDataField. Перше з властивостей вказує на ім'я компонента джерела даних, через який здійснюється зв'язок з набором даних. І властивість DataField для пов'язаного набору даних вказує ім'я поля.

Якщо ж delphi-компонент TDBCheckBox пов'язаний з полем символьного або числового типу, то у властивості ValueChecked типу String даного компонента заноситься рядок, який перераховує значення поля, при яких індикатор включається, а у властивості ValueUnchecked (також типу String) перераховуються значення, при яких індикатор вимикається (окремі значення розділяються крапкою з комою). При значеннях, що не перераховані ні у ValueChecked, ні у ValueUnchecked, індикатор TDBCheckBox переходить у невизначений стан, відображаючи сірий прапорець (навіть у тому випадку коли властивість AllowGrayed (відповідає за заборону переводу індикатора в невизначений стан) приймає значення False).

Включений або виключений індикатор можна визначити за значенням властивості Checked типу Boolean (являється доступною тільки під час виконання). Проте, більш детально стан індикатора можна визначити скориставшись властивістю State типу TCheckBoxState, який описується наступним чином:

type TCheckBoxState = (cbChecked, cbUnchecked, cbGrayed);

Якщо дана властивість приймає значення cbChecked — індикатор включений. Якщо cbUnchecked — індикатор вимкнений. І якщо властивість State приймає значення cbGrayed — індикатор знаходиться в невизначеному стані.

Напис в індикаторі задається властивістю Caption типу String а його розміщення по відношенню до індикатора — властивістю Alignment, типу TAligment, який описується так:

type TAligment = (taLeftJustify, taRightJustify);

Тобто дана властивість може приймати одне з двох значень taLeftJustify або taRightJustify. В першому випадку напис розташовується зліва і в другому — справа.

Властивість ReadOnly типу Boolean визначає, чи дозволено елементу управління TDBCheckBox змінювати дані у пов'язному з ним полі. Якщо властивість приймає значення True, то значення поля доступно тільки для читання. Якщо ж властивість приймає значення False (за замовчуванням), то значення поля можна змінювати. Проте хочеться зазначити, що заборона на редагування таким чином відноситься тільки до користувача. Програмим способом значення поля може бути змінене незалежно від того, яке значення приймає властивість ReadOnly.

Основною подією індикатора є подія OnClick, типу TNotifyEvent (являється спеціальним типом, що описує процедуру яка приймає єдиний параметр типу TObject).

type TNotifyEvent = procedure (Sender: TObject) of Object;

Дана подія настає при натисканні лівою кнопкою миші на компоненті TDBCheckBox. У обробнику цієї події, зазвичай, аналізують властивість Checked чи State, і, в залежності від того, які значення вони прийняли, виконують ту чи іншу дію.

В якості прикладу використання компонента TDBCheckBox, створимо delphi-проект, за допомогою якого, в режимі форма, користувач зможе переглядати та редагувати значення поля символьного типу. Для цього, скористаємось проектом, який ми розробили при розгляді багаторядкового редактора TDBMemo, і на головній формі розмістимо три компоненти типу TDBCheckBox.

Головна форма delphi-проекту

На наступному кроці, кожен з цих компонентів, програмно, пов'яжемо з полями bargaining, rexchange та cexchange таблиці cars («Автомобілі») бази даних autobazar («Автобазар») і для їх властивостей ValueChecked та ValueUnchecked встановимо значення «T» та «F» відповідно. Для цього, в обробнику події OnCreate головної форми проекту допишемо наступний програмний код:

procedure TForm1.FormCreate(Sender: TObject);
begin
// Підключення компонента DBCheckBox1 до поля Bargaining набору даних Table1
DBCheckBox1.DataSource := DataSource1;
DBCheckBox1.DataField := 'Bargaining';
// Підключення компонента DBCheckBox2 до поля Rexchange набору даних Table1
DBCheckBox2.DataSource := DataSource1;
DBCheckBox2.DataField := 'Rexchange';
// Підключення компонента DBCheckBox3 до поля Cexchange набору даних Table1
DBCheckBox3.DataSource := DataSource1;
DBCheckBox3.DataField := 'Cexchange';
// Для властивостей ValueChecked та ValueUnchecked компонентів DBCheckBox1, DBCheckBox2 та DBCheckBox3 встановимо значення «T» та «F» відповідно
DBCheckBox1.ValueChecked := 'T';
DBCheckBox1.ValueUnchecked := 'F';
DBCheckBox2.ValueChecked := 'T';
DBCheckBox2.ValueUnchecked := 'F';
DBCheckBox3.ValueChecked := 'T';
DBCheckBox3.ValueUnchecked := 'F';
end;

Далі, запустивши проект на виконання, перевіримо правильність його роботи.

Відображення та редагування даних символьного типу використовуючи компонент TDBCheckBox

Отже, переглянувши результат приходимо до висновку, що поля таблиці cars відображаються корректно, проте в даній реалізації є один недолік. Не зовсім зрозуміло що за інформація про автомобілі відображається та редагується з допомогою компонентів DBCheckBox1, DBCheckBox2 та DBCheckBox3. Тобто, для ясності, кожному з цих компонентів необхідно задати напис, який би найточніше описував дані що відображаються в них. Давайте реалізуємо це завдання. Для цього, в тілі процедури FormCreate головної форми, допишемо наступний програмний код:

procedure TForm1.FormCreate(Sender: TObject);
begin
// Зміна написів в компонентах типу TDBCheckBox
DBCheckBox1.Caption := 'Можливий торг';
DBCheckBox2.Caption := 'Можливий обмін на нерухомість';
DBCheckBox3.Caption := 'Можливий обмін на автомобіль';
end;

Знову-таки запустивши проект на виконання, отримаємо:

Зміна напису в компоненті TDBCheckBox використовуючи властивість Caption

Скачати delphi-проект Відображення та редагування даних символьного типу використовуючи компонент TDBCheckBox.

Матеріал був корисним, поділись в соціальних мережах:
Якщо тобі сподобалась дана тема, залиш свій коментар