ГоловнаКаталогБлогРейтингЕ-Пошта 
 
 
Зробити домашньою у вибране  

  Створення обробника простої таблиці  
Типова форма обробки даних має вигляд:

форма обробки даних
Мал. 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:

ВластивістьЗначенняПояснення
dgEditingfalseзаборона редагувати в таблиці
dgIndicatorfalseзаборона показу індикатора активного запису
dgRowSelecttrueвиділення цілого рядка
dgAlwaysShowSelectiontrueзавжди показувати виділення

В таблиці нижче наведені всі властивості компонент, які були змінені.

КомпонентаВластивістьЗначення
Table1DatabaseName.\
TableNamejyteli.db
DataSource1DataSetTable1
DBGrid1DataSourceDataSource1
Options:
dgEditingdg
Indicator
dgRowSelectd
gAlwaysShowSelection
 
false
false
true
true
DBEdit1DataSourceDataSource1
DataFieldPIB
DBEdit2DataSourceDataSource1
DataFielddata_nar
DBComboBox1DataSourceDataSource1
DataFieldstat
ItemsЧ
Ж
Button1CaptionНовий
Button2CaptionРедагувати
Button3CaptionВидалити
Button4CaptionВихід
Button5CaptionПрийняти
Button6CaptionВідмінити
Form3(дана форма)CaptionЖителі
BorderStylebsDialog
PositionpoMainFormCenter

Необхідно також спроектувати форму, яка обробляє таблицю klasyf. Процес проектування даної форми нічим не відрізняється від описаного вище.




  Логін:
  Пароль:
Книга Фріланс на західному ринку
Книга Фріланс на західному ринку
APServer | SiMan CMS | Лічильник відвідувань | Тека сайтів | Рейтинг | Форум | Download | Шаблони сторінок | Посібник Smarty | Підручник PHP | Статті/Огляди