Типова форма обробки даних має вигляд:
Мал. 3
Дана форма містить на собі наступні компоненти:
1. Table - компонента для безпосередньої роботи з файлом бази даних (таблицею).
2. DataSource - компонента, який пов'язує компоненту Table та всі візуальні компоненти роботи з базами даних. Кожній компоненті Table може відповідати єдина компонента DataSource.
3. DBGrid - компонента відображення даних у табличній формі.
4. GroupBox - компонента групування компонент введення.
5. DBEdit - компоненнта введення значення в поле.
6. DBComboBox - компонента вибору значення поля активного поля з декількох альтернатив (аналогічно до компоненти ComboBox).
7. Button - кнопка, що виконує певну дію.
Компоненти Table та DataSource є невізуальними і при запуску програми не відображаються на екрані, тому їх можна розміщувати довільно.
Всі візуальні компоненти форми поділяються на дві групи:
А: Компоненти маніпулювання даними (кнопки додання, редагування та видалення даних, DBGrid).
Б: Компоненти обробки активного запису (введення та редагування даних).
Внаслідок цього, доцільним є, при натисненні кнопок "Новий" та "Редагувати", переводити компоненти групи Б в доступний для операцій стан (шляхом встановлення властивості Enabled цих компонент у значення true) і компоненти групи А в недоступний стан (шляхом встановлення властивості Enabled цих компонент у значення false) тобто компоненти стануть сірого кольору й не будуть реагувати на дії користувача. Після завершення роботи з даними активного запису, слід провести обернену операцію, тобто перевести компоненти групи А в доступний стан, а компоненти групи Б - в недоступний.
Наприклад, обробник події натиснення кнопки "Новий" матиме вигляд:
procedure TForm3.Button1Click(Sender: TObject);
begin
Table1.Append(); //перевести в режим редагування
Button1.Enabled:=false; //недоступна кнопка "Новий"
Button2.Enabled:=false; //недоступна кнопка "Редагувати"
Button3.Enabled:=false; //недоступна кнопка "Видалити"
Button4.Enabled:=false; //недоступна кнопка "Вихід"
DBGrid1.Enabled:=false; //недоступне табличне відображення
GroupBox1.Enabled:=true; //доступний компонент групування
Button5.Enabled:=true; //доступна кнопка "Прийняти"
Button6.Enabled:=true; //доступна кнопка "Відмінити"
DBEdit1.SetFocus(); //переведення фокусу введення
// на поле "Прізвище"
end;
Текст обробника події натиснення кнопки "Редагувати" буде відрізнятися від наведеного вище лише відсутністю рядка
Table1.Append();
Замість нього буде присутній рядок
Table1.Edit();
Текст обробника події натиснення на кнопку "Прийняти" наступний
procedure TForm5.Button1Click(Sender: TObject);
begin
Table1.Post(); //внесення змін у таблицю
Button1.Enabled:=true; //доступна кнопка "Новий"
Button2.Enabled:= true; //доступна кнопка "Редагувати"
Button3.Enabled:= true; //доступна кнопка "Видалити"
Button4.Enabled:= true; //доступна кнопка "Вихід"
DBGrid1.Enabled:= true; //доступне табличне відображення
GroupBox1.Enabled:=false; //недоступний компонент групування
Button5.Enabled:=false; //недоступна кнопка "Прийняти"
Button6.Enabled:=false; //недоступна кнопка "Відмінити"
Button1.SetFocus(); //переведення фокусу введення
// на кнопку "Новий"
end;
Текст обробника події натиснення кнопки "Відмінити" буде відрізнятися від наведеного вище лише відсутністю рядка
Table1.Post();
Замість нього буде присутній рядок
Table1.Cancel();
Обробник події натиснення на кнопку "Видалити" наступний:
procedure TForm3.Button3Click(Sender: TObject);
begin
Table1.Delete();
end;
Як зазначувалось вище, перед показом форми, необхідно відкрити файл бази даних. Для цього потрібно встановити обробник події OnActivate цієї форми (клацнувши по формі, в інспекторі об'єктів на закладці Events знайти дану подію і напроти неї двічі натиснути ліву кнопку миші), який матиме вигляд:
procedure TForm3.FormActivate(Sender: TObject);
begin
Table1.Open(); //відкрити файл бази даних
Button1.Enabled:=true; //доступна кнопка "Новий"
Button2.Enabled:= true; //доступна кнопка "Редагувати"
Button3.Enabled:= true; //доступна кнопка "Видалити"
Button4.Enabled:= true; //доступна кнопка "Вихід"
DBGrid1.Enabled:= true; //доступне табличне відображення
GroupBox1.Enabled:=false; //недоступний компонент групування
Button5.Enabled:=false; //недоступна кнопка "Прийняти"
Button6.Enabled:=false; //недоступна кнопка "Відмінити"
end;
Аналогічно, після завершення роботи з формою, перед її закриттям, потрібно викликати процедуру закриття файлу бази даних, встановивши обробник події OnClose форми:
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Table1.Close();
end;
Звичайно, встановлення активності/неактивності візуальних компонент краще оформити у вигляді окремої процедури, але зараз ми не роглядатимемо це.
Після внесення змін до тексту модуля форми слід встановити властивості компоненти Table1: DatabaseName (каталог, в якому знаходяться файли бази даних) та TableName (jyteli.db). Окрім того, у властивість DataSet компоненти DataSource1 встановлюється значення Table1 (тобто візуальні компоненти, які працюють через компоненту DataSource1, будуть звертатися до компоненти Table1). Після цього у компонентах DBGrid1, DBEdit1, DBEdit2, DBComboBox1 слід встановити властивість DataSource як DataSource1 (показує, з яким джерелом даних працюють компоненти) та властивість DataField (поле, за яке відповідає компонента) у компонентах DBEdit1, DBEdit2, DBComboBox1 відповідно PIB, data_nar, stat.
По завершенні програмування даної форми, необхідно у головній формі по натисканні пункту меню Довідка->Жителі викликати форму роботи з таблицею jyteli, встановивши обробник даного пункту:
procedure TForm1.N4Click(Sender: TObject);
begin
Form3.ShowModal();
end;
Після цього програму можна запустити (Project->Run) та перевірити роботу з файлом бази даних. При цьому можливий випадок, що дані не будуть відображатися чи оброблятися. В такому разі, слід перевірити, чи встановлені властивості компонентів DataSource1 (DataSet), DBGrid1 (DataSource), DBEdit1 (DataSource, DataField), DBEdit2 (DataSource, DataField), DBComboBox1 (DataSource, DataField), а також чи відкрита таблиця в обробнику запуску форми (OnActivate).
Якщо програма працює, слід перейти до наступного кроку - підписання полів таблиці в компоненті DBGrid1 та видалення з списку відображуваних полів kod_jytelia.
Для цього потрібно встановити всі поля таблиці як компоненти Delphi (див. розділ "Компонента Table"). Після цього необхідно викликати контекстне меню компоненти DBGrid1 та обрати пункт "Columns Editor" (редактор колонок), який викличе відповідне меню.
В редакторі колонок в його контекстному меню слід обрати пункт "Add All Fields" (додати всі поля), яка додасть у список всі поля таблиці jyteli. Так як поле kod_jytelia для перегляду не потрібне, його слід видалити, виділивши відповідний рядок в редакторі колонок та натиснувши клавішу Delete.
Після цих дій варто встановити "правильні" заголовки колонок (по замовчуванню вони називаються так, як і відповідні поля таблиці, тобто англійськими літерами). Для цього слід вибрати відповідний рядок в редакторі колонок і в інспекторі об'єктів розкрити складну властивість Title (за допомогою значка +) і заголовок колонки ввести в поле Caption.
Мал. 4
Цю операцію варто повторити для кожної колонки таблиці.
Для покращення вигляду табличного відображення слід встановити наступні значення складної властивості Options компоненти DBGrid1:
Властивість | Значення | Пояснення |
dgEditing | false | заборона редагувати в таблиці |
dgIndicator | false | заборона показу індикатора активного запису |
dgRowSelect | true | виділення цілого рядка |
dgAlwaysShowSelection | true | завжди показувати виділення |
В таблиці нижче наведені всі властивості компонент, які були змінені.
Компонента | Властивість | Значення |
Table1 | DatabaseName | .\ |
TableName | jyteli.db |
DataSource1 | DataSet | Table1 |
DBGrid1 | DataSource | DataSource1 |
Options:
dgEditingdg
Indicator
dgRowSelectd
gAlwaysShowSelection | false
false
true
true |
DBEdit1 | DataSource | DataSource1 |
DataField | PIB |
DBEdit2 | DataSource | DataSource1 |
DataField | data_nar |
DBComboBox1 | DataSource | DataSource1 |
DataField | stat |
Items | Ч Ж |
Button1 | Caption | Новий |
Button2 | Caption | Редагувати |
Button3 | Caption | Видалити |
Button4 | Caption | Вихід |
Button5 | Caption | Прийняти |
Button6 | Caption | Відмінити |
Form3(дана форма) | Caption | Жителі |
BorderStyle | bsDialog |
Position | poMainFormCenter |
Необхідно також спроектувати форму, яка обробляє таблицю klasyf. Процес проектування даної форми нічим не відрізняється від описаного вище.
|