Перегляд та редагування полів таблиць бази даних використовуючи компонент TDBEdit

Для відображення та редагування значень рядкового поля в додатках що працюють з базами даних, зазвичай, використовується delphi-компонент типу TDBEdit. Однорядковий редактор такого типу працює так само, як однорядковий редактор TEdit, відображаючи рядкове значення і дозволяючи користувачеві змінювати його. Відмінність компонентів полягає лише в тому, що в редакторі TDBEdit відображаються і змінюються значення певного поля поточного запису відповідного набору даних.

Для того, щоб компонент TDBEdit відображав і дозволяв редагувати значення деякого поля набору даних, потрібно встановити для його властивості DataSource, в якості значення, ім'я джерела даних, а для властивості DataField — ім'я поля пов'язаного з цим джерелом набору даних. Зробити це можна за допомогою інспектора об'єктів або програмно. Відмітимо, що яким чином це реалізується в інспекторі об'єктів нами вже було показано при розгляді візуального компонента TDBTetx. Для текстового редактора TDBEdit процес підключення аналогічний: всі компоненти зв'язуються з відповідним полем набору даних через свої властивості DataSource та DataField.

tdbedit_komponent6

Підключення компонента DBEdit1 до поля Kod набору даних Table1 використовуючи інспектор об'єктів

Сьогодні встановимо необхідні значення для цих властивостей програмно. Для цього модифікуємо delphi-проект, що міститься за вказаним вище посиланням таким чином, щок користувач мав змогу не тільки переглядати рядки таблиці cars бази даних autobazar, а і вносити в її полях певні зміни. Отже, відкриємо delphi-проект та видалимо з головної форми всі компоненти типу TDBTetx. Замість них будемо використовувати однорядкові редактори TDBEdit. Для цієї мети на формі розмістимо стільки компонентів, скільки полів ми хочемо переглядати. В нашому випадку необхідно сім компонентів.

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

Далі, на подію OnCreate головної форми проекту, запишемо програмний код, з допомогою якого пов'яжемо всі візуальні компоненти TDBEdit з відповідними полями набору даних Table1.

procedure TForm1.FormCreate(Sender: TObject);
begin
// Підключення компонента DBEdit1 до поля Kod набору даних Table1
DBEdit1.DataSource := DataSource1;
DBEdit1.DataField := 'Kod';
// Підключення компонента DBEdit2 до поля Model набору даних Table1
DBEdit2.DataSource := DataSource1;
DBEdit2.DataField := 'Model';
// Підключення компонента DBEdit3 до поля Color набору даних Table1
DBEdit3.DataSource := DataSource1;
DBEdit3.DataField := 'Color';
// Підключення компонента DBEdit4 до поля Outputyear набору даних Table1
DBEdit4.DataSource := DataSource1;
DBEdit4.DataField := 'Outputyear';
// Підключення компонента DBEdit5 до поля Price набору даних Table1
DBEdit5.DataSource := DataSource1;
DBEdit5.DataField := 'Price';
// Підключення компонента DBEdit6 до поля Motor набору даних Table1
DBEdit6.DataSource := DataSource1;
DBEdit6.DataField := 'Motor';
// Підключення компонента DBEdit7 до поля Mileage набору даних Table1
DBEdit7.DataSource := DataSource1;
DBEdit7.DataField := 'Mileage';
end;

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

Перегляд та редагування вмісту таблиці cars використовуючи компонент TDBEdit

Також хочеться звернути увагу на ще кілька властивостей та подій, які можуть стати в нагоді при розробці delphi-програм, що працюють з базам даних з використанням компонентів TDBEdit. Отже, доступ до тексту, що виводиться в однорядковому редакторі, надає властивість Text типу TMaskedText. Текст у вікні визначається відповідним полем поточного запису і може змінюватися користувачем в режимі форма або програмно під час виконання. Відредаговане значення в полі поміщається в відповідне поле набору даних.

Зауваження: властивість Text компонентів TDBEdit, на відміну від однорядкових редакторів TEdit, під час проектування програми являється недоступною. Тому змінювати значення пов'язаного з ним поля використовуючи дану властивість, можна тільки програмно.

Як уже зазначалося вище, основне призначення текстового редактора TDBEdit — це введення і зміна значення певного поля набору даних. Проте, компонент такого типу можна використовувати і для відображення нередагованого тексту. З цією метою, для властивості ReadOnly типу Boolean потрібно встановити значення True.

Задати межу на максимальне число символів, що вводяться в компонент, можна за допомогою властивості MaxLength типу Integer. За замовчуванням у властивості встановлено нульове значення, тобто довжина рядка являється не обмеженою.

Якщо компонент TDBEdit планується застосування для введення конфіденційної інформації (наприклад, пароль доступу) і користувач delphi-програми не хоче знайомити з ними випадкового перехожого, що зазирнув у монітор, то для приховування тексту, що вводиться рекомендується використовувати властивість PasswordChar типу Char. Якщо значення властивості відрізняється від символу з кодом нуль («#0»), то при відображенні вмісту рядка реальні символи будуть підмінятися символом з PasswordChar.

З чималого переліку подій delphi-компонента TDBEdit, на практиці, вкрай корисною є подія, що виникає в момент натискання клавіші клавіатури OnKeyPress типу TKeyPressEvent, який описується наступним чином:

type TKeyPressEvent = procedure (Sender: TObject; var Key: Char) of Object;

Завдяки параметру Key (в якому передається код вибраного користувачем символу) подія дозволяє здійснювати перевірку даних що вводяться і таким чином забезпечує коректність інформації, що передається в базу даних. Припустимо, що однорядковий редактор призначений для введення в поле чотиризначного числа, яке вказує на рік випуску автомобіля. Тоді, в якості прикладу, для даного поля можна запропонувати наступний варіант обробка події OnKeyPress:

procedure TForm1.TForm1.DBEdit4KeyPress(Sender: TObject; var Key: Char);
begin
// Якщо при заповненні поля 'Рік випуску' код вибраного користувачем символу не збігається з кодом цифрової клавіші клавіатури, або довжина введеного користувачем значення дорівнює числу чотири
if (not (Key in ['0'..'9']) or (Length(DBEdit4.Text) >= 4)) then
//  І якщо, при цьому, користувач натиснув клавішу відмінну від Backspace
if (Key <> #8) then
begin
// Забороняємо вивід будь-яких символів
Key := #0;
//  Якщо довжина введеного користувачем значення являється меншою від числа чотири
if (Length(DBEdit4.Text) < 4) then
//  Виводимо повідомлення про те, що для введення даних в компоненті DBEdit4 доступні тільки цифри
ShowMessage('Для введення даних в поле ''Рік випуску'' доступні тільки цифри!')
else
//  Інакше, виводимо повідомлення про те, що довжина введеного в компоненті DBEdit4 значення, перевищує зазначений ліміт
ShowMessage('Значення поля ''Рік випуску'' не повинно перевищувати чотиризначне число!');
end;
end;

Запустивши проект на виконання та спробувавши ввести в компоненті DBEdit4 значення, яке, для даного поля, являється некоректним, отримаємо відповідне повідомлення.

Перевірка на корректність введених користувачем значень в компоненті DBEdit4

Скачати delphi-проект Перегляд та редагування полів таблиць бази даних використовуючи компонент TDBEdit.

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

Якщо тобі сподобалась дана тема, залиш свій коментар