Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Zapiska_auto.doc
Скачиваний:
1
Добавлен:
31.08.2019
Размер:
951.3 Кб
Скачать
    1. Структура програмного продукту

Структура даного програмного продукту, є наступною:

  • Головне вікно програми (fmMain) – на ньому розміщено головне меню з такими пунктами: Перегляд, Редагування, Поставки, Вікно та Про програму.

  • Вікно редагування (fmDBForm) – забезпечує редагування записів в базі даних auto.

  • Вікно перегляду (fmDBTable) – вікно, в якому відображаються всі дані занесені до таблиць бази даних

  • Перегляд зв’язаних таблиць (fmDBMasterDetail) – дає можливість користувачу заносити дані до таблиць що зв’язані зв’язком один-до-багатьох.

  • Про програму (fmAbout) – містить відомості про автора.

    1. Розробка алгоритму

В процесі створення програмного продукту було створено головне вікно програми (fmMain) – на ньому розміщено головне меню, компонент ActionList1 та MainMenu1 з такими пунктами: Перегляд, Редагування, Поставки, Вікно та Про програму.

Форма fmAny – родоначальник усієї ієрархії форм проекту. Розмістимо на формі компоненти Panel1-3 та BitBtn1-2 і встановимо для їх властивостей значення. Panel1: Align -> alTop; Panel2: Align -> alClient; Panel 3: Align -> alBottom, BitBtn: Kind -> bkOk, Anchors -> akRight, BitBtn: Kind -> bkCansel, Anchors -> akRight. В код форми нічого не записуватимемо.

Форму fmAny зберігаємо в репозиторії: Project-> Add to Repository.

fmDBForm ­– форма, від якої будуть успадковуватись всі форми, які реалізують опрацювання таблиць бази даних в режимі “форма”. Створимо дану форму виконуючи наступне: File -> New -> Other -> Forms -> fmAny, встановимо перемикач Inherited та натиснемо OK. Перейменуємо нову форму в fmDBForm. На формі додамо компонент DataSource1, Navigator1, Label1-2, Button2.

procedure TfmQForm.BitBtn1Click(Sender: TObject);

begin

if Query1.State in [dsEdit, dsInsert] then

Query1.Post;

inherited;

end;

procedure TfmQForm.BitBtn2Click(Sender: TObject);

begin

if Query1.State in [dsEdit, dsInsert] then

Query1.Cancel;

inherited;

end;

procedure TfmQForm.FormCreate(Sender: TObject);

begin

inherited;

Query1.Open;

end;

procedure TfmQForm.FormActivate(Sender: TObject);

begin

inherited;

DataSource1DataChange(Self, Query1.Fields[0]);

end;

procedure TfmQForm.DataSource1DataChange(Sender: TObject; Field: TField);

begin

inherited;

case Query1.State of

dsEdit : Label1.Caption := 'Редагування';

dsInsert: Label1.Caption := 'Вставка';

dsBrowse: Label1.Caption := 'Перегляд';

end;

case Query1.State of

dsEdit, dsBrowse:

Label2.Caption := 'Запис '+IntToStr(Query1.RecNo)

+' ³ç '+IntToStr(Query1.RecordCount);

dsInsert:

Label2.Caption := 'Новий запис';

end;

Після завершення розробки форми fmDBForm її необхідно зберегти в репозиторії.

Форма fmDBTable – похідна від форми fmDBForm, від неї будуть успадковуватись всі форми, які реалізують опрацювання таблиць бази даних в режимі “таблиця”. Для створення нової форми потрібно виконати команди: File -> New -> Other -> Forms -> fmDBForm. Встановимо перемикач Inherited та натиснемо OK. Перейменуємо нову форму в fmDBTable.

Фрагмент коду для виводу звіту на друк з допомогою програми Excel

procedure TfmDBForm.Button2Click(Sender: TObject);

var

X: Variant;

i, j: integer;

begin

inherited;

// Створення Ole об’єкту Excel.Application ---

X := CreateOLEObject('Excel.Application');

try

// Робимо Ole об’єкт видимим, створюємо нову робочу книгу ---

X.Visible := true;

X.Workbooks.Add;

// ---

// Створення заголовку таблиці ---

for i := 0 to (DataSource1.DataSet).FieldCount - 1 do begin

X.WorkBooks[1].ActiveSheet.Cells[1, 1 + i].Value :=

(DataSource1.DataSet).Fields[i].DisplayLabel;

X.WorkBooks[1].ActiveSheet.Cells[1, 1 + i].Font.Bold := true;

X.WorkBooks[1].ActiveSheet.Cells[1, 1 + i].Interior.ColorIndex := 10;

end;

// ---

// Передача даних з таблиці ---

(DataSource1.DataSet).First;

for i := 0 to (DataSource1.DataSet).RecordCount - 1 do begin

for j := 0 to (DataSource1.DataSet).FieldCount - 1 do begin

X.WorkBooks[1].ActiveSheet.Cells[2 + i,1 + j].Value :=

(DataSource1.DataSet).Fields[j].AsString;

end;

(DataSource1.DataSet).Next;

end;

// Автовирівнювання стовпців ---

for j := 0 to (DataSource1.DataSet).FieldCount - 1 do

X.WorkBooks[1].ActiveSheet.Columns[1+j].EntireColumn.AutoFit;

// ---

// Присвоєння назви листа ---

X.WorkBooks[1].ActiveSheet.Name := (DataSource1.DataSet as TQuery).DatabaseName;

// Збереження робочої книги ---

// X.WorkBooks[1].SaveAs(SaveDialog1.FileName);

finally

{X.Quit;}

Screen.Cursor := crDefault;

end;

end;

fmDBMasterDetail ­­– похідна від форми fmDBForm, вона призначена бути предком форм, які реалізують опрацювання деяких двох зв’язаних таблиць бази даних в режимі „головна-підлегла таблиці”. Для створення нової форми, породженої формою fmDBForm, потрібно виконати команди: File -> New -> Other -> Forms -> fmDBForm. Встановимо перемикач Inherited та натиснемо OK. Перейменуємо нову форму в fmDBMasterDetail.