Информационная система "Каталог игрушек"

Разработка информационной системы "Каталог игрушек", в которой содержится информация об игрушках с фотографиями и полным описанием согласно заданию. Отладка и тестирование системы. Создания отчетов в MS Word и в MS Excel с помощью шаблонов и Delphi 7.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 14.09.2016
Размер файла 1,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Содержание

Введение

1. Постановка задания

2. Проектирование

2.1 Проектирование данных

2.2 Проектирование функций

3. Программная реализация

4. Тестирование

5. Сопровождение

5.1 Пособия пользователя

5.2 Пособие разработчика

Заключение

Список литературы

Приложение

Введение

информационный тестирование отладка

В последнее время резко возрос интерес к программированию. Это связано с развитием и внедрением в повседневную жизнь информационно-коммуникационных технологий. Если человек имеет дело с компьютером, то рано или поздно у него возникает желание, а иногда и необходимость, программировать.

Среди пользователей персональных компьютеров в настоящее время наиболее популярно семейство операционных систем Windows и, естественно, что тот, кто собирается программировать, стремится писать программы, которые будут работать в этих системах.

Несколько лет назад рядовому программисту оставалось только мечтать о создании собственных программ, работающих в среде Windows, т.к. единственным средством разработки был Borland C++ for Windows, явно ориентированный на профессионалов, обладающих серьезными знаниями и опытом.

Delphi - это среда быстрой разработки, в которой в качестве языка программирования используется язык Delphi. Язык Delphi - строго типизированный объектно-ориентированный язык, в основе которого лежит хорошо знакомый программистам Object Pascal.

Существует четыре варианта пакета Borland Delphi 7 Studio: Personal, Professional, Enterprise и Architect. Каждый из этих комплектов включает стандартный набор средств, обеспечивающих разработку высокоэффективных программ различного назначения, в том числе для работы с базами данных. Вместе с тем, чем выше уровень комплекта (от Personal до Architect), тем большие возможности он предоставляет программисту. Так, комплект Enterprise позволяет разрабатывать приложения работы с удаленными базами данных (например, InterBase), а комплект Personal - нет.

1. Постановка задания

Создать информационную систему, согласно своего варианта. Программа должна быть реализована по технологии клиент-сервер с использованием СУБД MySQL или SQL Server.

Система предоставляет пользователю возможность выполнения стандартного набора действий, присущих информационным системам: просмотр и редактирование данных, сортировка, поиск, фильтрация, формирование отчетов.

Программа имеет привлекательную форму-заставку, которая содержит информацию о программе (название и версия), год создания на фоне произвольного рисунка. Форма должна иметь скругляющиеся углы.

При запуске программы выполняется регистрация пользователя и сохранения введенных данных в INI файле или реестре. Пользователь может указать логин, пароль, имя сервера, порт и, по желанию, имя БД.

Программа строится на основе MDI интерфейса. Главная форма должна иметь меню, панель инструментов, строка статусу. Строка состояния содержит дату/ время, состояние клавиш NumLock, CapsLock.

В сетках следует использовать цветовое оформление данных по различным критериям, предусмотреть отображение некоторой информации, вычисляемой по отдельным группам записей.

Формы должны иметь единый внешний стиль оформления, средства защиты программы от ошибок пользователя (шаблоны ввода, выпадающие списки с набором значений, календари, ограничение ввода определенного набора символов).

Области задания условий фильтрации должны отображаться вверху текущей формы.

На каждой форме предусмотреть панель инструментов с набором кнопок для выполнения основных операций над записями.

Программа должна иметь систему помощи и инсталлятор для установки на компьютер.

2. Проектирование

2.1 Проектирование данных

База данных «Toys» имеет две таблицы. Таблица «Vidy» для хранения информации о видах игрушек; таблица «Igra» для хранения подробной информации об игрушках.

Эти таблицы связаны между собой по полю id_grup.

Структура базы данных:

Таблица 1 - Структура таблицы Vidy

Название поля

Тип поля

Описание поля

id_grup

int

номер вида, ключевое, счетчик

id_nom

int

номер вида

nazv_grup

varchar(20)

название вида

Таблица 2 - Структура таблицы Igra

Название поля

Тип поля

Описание поля

shifr

int

ключевое поле

id_grup

int

поле для связи

nazv

varchar(15)

название

strana

varchar(15)

страна производитель

material

varchar(20)

материал

cena

decimal(7, 2)

цена

foto

image

фото игрушки

opisanie

text

описание игрушки

Связывание таблиц проходит по полям id_grup.

2.2 Проектирование функции

При запуске программы открывается привлекательная форма-заставка. После ее закрытия появляется форма-регистрация, в которой нужно ввести логин, пароль, имя сервера и порт. Если введенные данные верны, то открывается главная форма, иначе, всплывает окно с ошибкой о неверно введенных данных. Происходит возврат на форму-регистрацию для ввода данных. Логин, имя сервера и порт сохраняются в ini-файл для более простой регистрации при следующем запуске программы.

Рисунок 1 - Форма-регистрация

После ввода всех необходимых данных открывается главная форма «Каталог игрушек» для просмотра, редактирования, поиска, сортировки, добавления и удаления данных.

Рисунок 2 - Главная форма

Редактирование главной таблицы можно осуществить в самой сетке. А редактирование подчиненной таблицы осуществляется только после двойного клика на нужной записи.

Рисунок 3 - Форма редактирование данных

Для добавления данных в главную таблицу нужно нажать на кнопку «Добавить» под первой сеткой. Добавление происходит с помощью заполнения данных в сетку.

Для добавления данных в подчиненную таблицу нужно нажать на кнопку «Добавить» под второй сеткой. Открывается форма добавления данных. После заполнения полей необходимо кликнуть на кнопку «Сохранить». Данные отобразятся во второй сетке.

Рисунок 4 - Форма добавления данных

Для удаления данных нужно нажать на кнопку «Удалить» и подтвердив запрос удаления, запись будет удалена.

Для реализации поиска данных нужно нажать на кнопку «Поиск данных». С правой стороны окна отобразится панель поиска, в которой нужно ввести условия и нажать на соответствующую кнопку. При этом найденные записи будут отображены во второй сетке.

Рисунок 5 - Панель поиска данных

В программе есть возможность сформировать отчеты в MS Word и MS Excel.

В отчет можно вывести одну активную запись, все записи и отобранные записи.

Так же на главной форме присутствует информационная панель, которая сообщает об общем количестве игрушек, о максимальной цене, о минимальной цене и о средней цене, как по всем видам, так и по отдельному виду товара.

Рисунок 6 - Информационная панель

Меню программы помогает быстрее выполнить определенные операции над данными.

Рисунок 7 - Меню программы

После отображения панели поиска в меню появляется новый пункт «Поиск данных».

Рисунок 8 - Меню программы после открытия панели поиска данных

3. Программная реализация

Код формы регистрации

unit Unit2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, inifiles, stohtmlhelp;

type

TForm2 = class(TForm)

GroupBox1: TGroupBox;

GroupBox2: TGroupBox;

Edit1: TEdit;

Label1: TLabel;

Edit2: TEdit;

Label2: TLabel;

Edit3: TEdit;

Label3: TLabel;

Edit4: TEdit;

Label4: TLabel;

Button1: TButton;

Button2: TButton;

rocedure Button2Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure FormCreate(Sender: TObject);

procedure FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

login, password, server, port:string;

implementation

{$R *.dfm}

procedure TForm2.Button2Click(Sender: TObject);

begin

exitprocess(0);

end;

procedure TForm2.Button1Click(Sender: TObject);

begin

login:=edit1.Text;

password:=edit2.Text;

server:=edit3.Text;

port:=edit4.Text;

close;

end;

procedure TForm2.FormShow(Sender: TObject);

begin

Left:= (Screen.Width - Width)div 2;

Top:= (Screen.Height - Height)div 2;

AnimateWindow(Handle, 1000, $10 oR $20000);

if edit1.Text<>'' then

edit2.SetFocus;

end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);

var ini:tinifile;

begin

ini:=tinifile.Create(extractfilepath(application.ExeName)+'file.ini');

ini.writestring('Components','loginname',edit1.Text);

ini.writestring('Components','servername',edit3.Text);

ini.writestring('Components','portname',edit4.Text);

ini.free;

AnimateWindow(Handle, 1000, $10 oR $10000);

end;

procedure TForm2.FormCreate(Sender: TObject);

var ini:tinifile;

begin

ini:=tinifile.create(extractfilepath(application.exename)+'file.ini');

edit1.Text:=ini.readstring('Components','loginname',login);

edit3.Text:=ini.readstring('Components','servername',server);

edit4.Text:=ini.readstring('Components','portname',port);

ini.free;

end;

procedure TForm2.FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if key=vk_f1 then

application.helpcontext(screen.activecontrol.helpcontext);

end;

end.

Код главной формы:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, DBGrids, DB, ADODB, AppEvnts, StdCtrls, DBCtrls, ComCtrls,

ExtCtrls, dateutils, Menus, comobj, jpeg, stohtmlhelp;

type

TForm1 = class(TForm)

ADOConnection1: TADOConnection;

ADOTable1: TADOTable;

DataSource1: TDataSource;

DBGrid1: TDBGrid;

ADOTable2: TADOTable;

DataSource2: TDataSource;

DBGrid2: TDBGrid;

ADOTable1id_grup: TAutoIncField;

ADOTable1id_nom: TIntegerField;

ADOTable1nazv_grup: TStringField;

ADOTable2shifr: TAutoIncField;

ADOTable2id_grup: TIntegerField;

ADOTable2nazv: TStringField;

ADOTable2strana: TStringField;

ADOTable2material: TStringField;

ADOTable2data: TDateTimeField;

ADOTable2cena: TBCDField;

ADOTable2foto: TBlobField;

ADOTable2opisanie: TMemoField;

ApplicationEvents1: TApplicationEvents;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

DBImage1: TDBImage;

Label1: TLabel;

DBMemo1: TDBMemo;

GroupBox1: TGroupBox;

Label2: TLabel;

Edit1: TEdit;

Label3: TLabel;

Edit2: TEdit;

Label4: TLabel;

Edit3: TEdit;

Label5: TLabel;

Edit4: TEdit;

Label6: TLabel;

Edit5: TEdit;

Label7: TLabel;

Edit6: TEdit;

Label8: TLabel;

Edit7: TEdit;

GroupBox2: TGroupBox;

Button5: TButton;

DateTimePicker1: TDateTimePicker;

DateTimePicker2: TDateTimePicker;

ADOQuery1: TADOQuery;

Button6: TButton;

Button7: TButton;

Button8: TButton;

RadioGroup1: TRadioGroup;

GroupBox3: TGroupBox;

Label9: TLabel;

Label10: TLabel;

Label11: TLabel;

Label12: TLabel;

Label13: TLabel;

Label14: TLabel;

Label15: TLabel;

Label16: TLabel;

HeaderControl1: THeaderControl;

StatusBar1: TStatusBar;

Timer1: TTimer;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

Button9: TButton;

Button10: TButton;

PopupMenu1: TPopupMenu;

N10: TMenuItem;

N11: TMenuItem;

GroupBox4: TGroupBox;

Button11: TButton;

Button12: TButton;

PopupMenu2: TPopupMenu;

N12: TMenuItem;

N13: TMenuItem;

N9: TMenuItem;

N14: TMenuItem;

N16: TMenuItem;

N17: TMenuItem;

Word1: TMenuItem;

Excel1: TMenuItem;

N15: TMenuItem;

N18: TMenuItem;

N19: TMenuItem;

N20: TMenuItem;

Word2: TMenuItem;

N21: TMenuItem;

N22: TMenuItem;

Excel2: TMenuItem;

Jlyfpfgbcm1: TMenuItem;

N23: TMenuItem;

Image1: TImage;

N24: TMenuItem;

N25: TMenuItem;

N26: TMenuItem;

N27: TMenuItem;

ADOQuery1shifr: TAutoIncField;

ADOQuery1id_grup: TIntegerField;

ADOQuery1nazv: TStringField;

ADOQuery1strana: TStringField;

ADOQuery1material: TStringField;

ADOQuery1data: TDateTimeField;

ADOQuery1cena: TBCDField;

ADOQuery1foto: TBlobField;

ADOQuery1opisanie: TMemoField;

procedure FormCreate(Sender: TObject);

procedure FormDestroy(Sender: TObject);

procedure DBGrid1TitleClick(Column: TColumn);

procedure ApplicationEvents1Message(var Msg: tagMSG;

var Handled: Boolean);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure DBGrid2DblClick(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Edit4Enter(Sender: TObject);

procedure Edit5Enter(Sender: TObject);

procedure DateTimePicker1Exit(Sender: TObject);

procedure DateTimePicker2Exit(Sender: TObject);

procedure Button6Click(Sender: TObject);

procedure Button7Click(Sender: TObject);

procedure Button8Click(Sender: TObject);

procedure RadioGroup1Click(Sender: TObject);

procedure info;

procedure FormShow(Sender: TObject);

procedure ADOTable1AfterDelete(DataSet: TDataSet);

procedure ADOTable1AfterScroll(DataSet: TDataSet);

procedure ADOTable2AfterPost(DataSet: TDataSet);

procedure ADOTable2AfterDelete(DataSet: TDataSet);

procedure Timer1Timer(Sender: TObject);

procedure FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure N2Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure Button9Click(Sender: TObject);

procedure spisok;

procedure N10Click(Sender: TObject);

procedure N11Click(Sender: TObject);

procedure Button11Click(Sender: TObject);

procedure N12Click(Sender: TObject);

procedure Button10Click(Sender: TObject);

procedure N13Click(Sender: TObject);

procedure Button12Click(Sender: TObject);

procedure Spisok1;

procedure N8Click(Sender: TObject);

procedure N14Click(Sender: TObject);

procedure N16Click(Sender: TObject);

procedure N19Click(Sender: TObject);

procedure N21Click(Sender: TObject);

procedure N22Click(Sender: TObject);

procedure N23Click(Sender: TObject);

procedure Edit6KeyPress(Sender: TObject; var Key: Char);

procedure Edit7KeyPress(Sender: TObject; var Key: Char);

procedure N27Click(Sender: TObject);

procedure N25Click(Sender: TObject);

procedure Button5KeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

w:variant;

s:string;

e:variant;

p:string;

implementation

uses Unit2, Unit4, Unit5;

{$R *.dfm}

procedure Tform1.Spisok1;

var i,n:integer;

begin

//стараемся подключиться к запущенной программе excel

try

e:=getactiveoleobject('excel.application');

//если подключение не удачное, запускаем excel

except

e:=createoleobject('excel.application');

end;

//создаем новую книгу на основе шаблона

e.workbooks.add(extractfilepath(application.Exename)+'shablon\spisok.xlt');

//становимся на первую запись в списке

adoquery1.First;

//счетчику строк присваиваем 2, потому что в первую строку таблицы (шапка)

//находится во второй строке листа книги

i:=2;

//n - счетчик записей для столбика № п/п

n:=0;

//выделяем шапку таблицы (при условии, что она находится на 2 строке)

//и состоит из колонок a:f

e.activeworkbook.sheets.item[3].range['a2:f2'].select;

//копируем выделенную шапку в буфер обмена

e.activeworkbook.sheets.item[3].range['a2:f2'].copy;

//в цикле проходим по всем записях запроса

while not adoquery1.Eof do

begin

//увеличиваем количество строк на 1

i:=i+1;

//увеличиваем счетчик записей на 1

n:=n+1;

//стаим курсор в первую ячейку следующей строки (Aі)

e.activeworkbook.sheets.item[3].range['a'+inttostr(i)].select;

//вставляем из буфера в следующую строку скопированную шапку

e.activeworkbook.sheets.item[3].paste;

//заполняем столбик № п/п в новой строке

e.activeworkbook.sheets.item[3].cells[i,1].value:=n;

//заполняем столбик Название в новой строке

e.activeworkbook.sheets.item[3].cells[i,2].value:=adoquery1.Fieldbyname('nazv').asstring;

//заполняем столбик Страна в новой строке

e.activeworkbook.sheets.item[3].cells[i,3].value:=adoquery1.Fieldbyname('strana').asstring;

//заполняем столбик Материал в новой строке

e.activeworkbook.sheets.item[3].cells[i,4].value:=adoquery1.Fieldbyname('material').asstring;

//заполняем столбик Дата рождения в новой строке

e.activeworkbook.sheets.item[3].cells[i,5].value:=adoquery1.Fieldbyname('data').asstring;

//заполняем столбик Цена в новой строке

e.activeworkbook.sheets.item[3].cells[i,6].value:=adoquery1.Fieldbyname('cena').asstring;

//переходим на следующую запись

adoquery1.Next;

end;

//в отдельной строке рассчитываем количество сотрудников в списке

//увеличиваем число строк в таблице на 1

i:=i+1;

//становимся в первую ячейку новой строки

e.activeworkbook.sheets.item[3].range['a'+inttostr(i)].select;

//в таблице в новую строку вставляем скопированную шапку

e.activeworkbook.sheets.item[3].paste;

//так как мы копируем шапку, которая заполнена названиями столбцов,

//то для выполнения расчетов скопированные ячейки нужно очистить

//очищаем скопированную новую строку от данных

e.activeworkbook.sheets.item[3].range['a'+inttostr(i)+':f'+inttostr(i)].clearcontents;

e.visible:=true;

end;

procedure tform1.spisok;

//допоміжні змінні

//r - лічильник рядків

//c - кількість стовпців

//p - лічильник малюнків із Blob поля

var r,c,d:integer;

begin

w:=createoleobject('word.application');

w.documents.add(extractfilepath(application.Exename)+'shablon\spisok.dot');

adoquery1.first;

r:=0;

d:=0;

while not adoquery1.Eof do

begin

w.activedocument.tables.item(1).rows.add;

r:=r+1;

w.activedocument.tables.item(1).cell(r+1,1).range.text:=inttostr(r);

w.activedocument.tables.item(1).cell(r+1,2).range.text:=adoquery1.Fieldbyname('nazv').asstring;

w.activedocument.tables.item(1).cell(r+1,3).range.text:=adoquery1.Fieldbyname('strana').asstring;

w.activedocument.tables.item(1).cell(r+1,4).range.text:=adoquery1.Fieldbyname('material').asstring;

w.activedocument.tables.item(1).cell(r+1,5).range.text:=adoquery1.Fieldbyname('data').asstring;

w.activedocument.tables.item(1).cell(r+1,6).range.text:=adoquery1.Fieldbyname('cena').asstring;

//перевіряємо, чи заповнене поле foto

if adoquery1.Fieldbyname('foto').Asstring <>'' then

//якщо поле не порожнє

begin

//збільшуємо кількість малюнків на 1

d:=d+1;

//зберігаємо вміст поля у файл із ім'ям "pict" з номером N

tblobfield(adoquery1.Fieldbyname('foto')).savetofile(extractfilepath(application.Exename)+'pict'+inttostr(d));

//вставляємо в шосту чарунку збережений малю-нок

w.activedocument.tables.item(1).cell(r+1,7).range.inlineshapes.Addpicture(Filename:=extractfilepath(application.exename)+'pict'+inttostr(d), Linktofile:=False,Savewithdocument:=True);

//форматуємо малюнок у таблиці, задаючи ширину й висоту

w.activedocument.Inlineshapes.item(d).width:=50;

w.activedocument.Inlineshapes.item(d).height:=60;

//після додавання малюнка в таблицю видаляємо файл

deletefile(extractfilepath(application.exename)+'pict'+inttostr(d));

end;

w.activedocument.tables.item(1).cell(r+1,8).range.text:=adoquery1.Fieldbyname('opisanie').asstring;

//переходимо на наступний запис

adoquery1.Next;

end;

//після формування списку робимо вікно word видимим

w.visible:=true;

end;

procedure tform1.info;

begin

adoquery1.Active:=false;;

adoquery1.sql.clear;

adoquery1.sql.add('select count(shifr) as kolvo, round(max(cena),2) as maxcen, round(min(cena),2) as mincen, round(avg(cena),2) as sredcen from igra');

adoquery1.Active:=true;

label9.Caption:='Общее количество игрушек: '+vartostr(adoquery1.fieldbyname('kolvo').Value);

label10.Caption:='Общая максимальная цена: '+vartostr(adoquery1.fieldbyname('maxcen').Value);

label11.Caption:='Общая минимальная цена: '+vartostr(adoquery1.fieldbyname('mincen').Value);

label12.Caption:='Общая средняя цена: '+vartostr(adoquery1.fieldbyname('sredcen').Value);

adoquery1.Active:=false;

adoquery1.sql.clear;

if adotable1.fieldbyname('id_grup').asstring<>'' then

adoquery1.sql.add('select count(shifr) as kolvo, round(max(cena),2) as maxcen, round(min(cena),2) as mincen, round(avg(cena),2) as sredcen from igra where id_grup='+adotable1.fieldbyname('id_grup').asstring)

else

adoquery1.sql.add('select null as kolvo, null as maxcen, null as mincen, null as sredcen from igra');

adoquery1.Active:=true;

label13.Caption:='Количество игрушек в разделе: '+vartostr(adoquery1.fieldbyname('kolvo').Value);

label14.Caption:='Максимальная цена в разделе: '+vartostr(adoquery1.fieldbyname('maxcen').Value);

label15.Caption:='Минимальная цена в резделе: '+vartostr(adoquery1.fieldbyname('mincen').Value);

label16.Caption:='Средняя цена в разделе: '+vartostr(adoquery1.fieldbyname('sredcen').Value);

end;

procedure TForm1.FormCreate(Sender: TObject);

var a:tdatetime;

begin

a:=now;

statusbar1.panels[2].Text:='Сегодня: '+longdaynames[dayofweek(a)]+' '+datetostr(a)+' '+timetostr(a);

adoconnection1.connected:=false;

adoconnection1.ConnectionString:='Provider=SQLOLEDB.1;Password='+password+';Persist Security Info=True;User ID='+login+';Initial Catalog=Toys;Data Source='+server+','+port;

try

adoconnection1.connected:=true;

except

begin

application.messagebox('Неверные данные регистрации','Ошибка!',mb_ok+mb_iconerror);

exitprocess(0);

end;

end;

adotable1.active:=true;

adotable2.active:=true;

end;

procedure TForm1.FormDestroy(Sender: TObject);

begin

adoconnection1.Connected:=false;

end;

procedure TForm1.DBGrid1TitleClick(Column: TColumn);

begin

if adotable1.Indexfieldnames=column.Fieldname+' DESC' then

adotable1.Indexfieldnames:=column.Fieldname

else

adotable1.Indexfieldnames:=column.Fieldname+' DESC';

end;

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;

var Handled: Boolean); var

i: SmallInt;

begin

if (dbgrid1.Focused = true) or (dbgrid2.Focused = true) then

if Msg.message = WM_MOUSEWHEEL then

begin

Msg.message := WM_KEYDOWN;

Msg.lParam := 0;

i := HiWord(Msg.wParam) ;

if i > 0 then

Msg.wParam := VK_UP

else

Msg.wParam := VK_DOWN;

Handled := False;

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

adotable1.Append;

adotable1.FieldByName('id_grup').FocusControl;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

if adotable1.FieldByName('id_grup').asstring<>'' then

if application.MessageBox(pchar('Удалить запись'''+adotable1.FieldByName('nazv_grup').AsString+'''?'), 'Подтвердите',mb_yesno+mb_iconquestion)=idyes then

adotable1.Delete;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

adotable2.Append;

adotable2.FieldByName('shifr').FocusControl;

adotable2.Edit;

form4:=tform4.create(nil);

form4.showmodal;

form4.Repaint;

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

if adotable2.FieldByName('shifr').asstring<>'' then

if application.MessageBox(pchar('Удалить запись '''+adotable2.FieldByName('nazv').AsString+'''?'), 'Подтвердите',mb_yesno+mb_iconquestion)=idyes then

adotable2.Delete;

end;

procedure TForm1.DBGrid2DblClick(Sender: TObject);

begin

adotable2.Edit;

form4:=tform4.create(nil);

form4.showmodal;

form4.Repaint;

end;

procedure TForm1.Button5Click(Sender: TObject);

begin

while width<1023 do

begin

width:=width+5;

left:=(screen.width-width) div 2;

end;

//edit1.Setfocus;

N9.Visible:=true;

end;

procedure TForm1.Edit4Enter(Sender: TObject);

begin

datetimepicker1.Visible:=true;

datetimepicker1.setfocus;

end;

procedure TForm1.Edit5Enter(Sender: TObject);

begin

datetimepicker2.Visible:=true;

datetimepicker2.setfocus;

end;

procedure TForm1.DateTimePicker1Exit(Sender: TObject);

begin

datetimepicker1.Visible:=false;

edit4.Text:=datetostr(datetimepicker1.date);

end;

procedure TForm1.DateTimePicker2Exit(Sender: TObject);

begin

datetimepicker2.Visible:=false;

edit5.Text:=datetostr(datetimepicker2.date);

end;

procedure TForm1.Button6Click(Sender: TObject);

var s:string;

begin

s:='';

//задаем условие поиска для поля "nazv" (текстовое)

if edit1.text<>'' then

if s<>'' then

s:=s+' and nazv like '''+edit1.Text+'%'''

else

s:=s+'nazv like '''+edit1.Text+'%''';

//задаем условие поиска для поля "material" (текстовое)

if edit2.text<>'' then

if s<>'' then

s:=s+' and material like '''+edit2.Text+'%'''

else

s:=s+'material like '''+edit2.Text+'%''';

//задаем условие поиска для поля "strana" (текстовое)

if edit3.text<>'' then

if s<>'' then

s:=s+' and strana like '''+edit3.Text+'%'''

else

s:=s+'strana like '''+edit3.Text+'%''';

//задаем условие поиска для поля "data" (дата от) (дата/время)

if edit4.text<>'' then

if s<>'' then

s:=s+' and data >= '''+formatdatetime('dd.mm.yyyy',strtodate(edit4.text))+''''

else

s:=s+'data >= '''+formatdatetime('dd.mm.yyyy',strtodate(edit4.text))+'''';

//задаем условие поиска для поля "data" (дата до) (дата/время)

if edit5.text<>'' then

if s<>'' then

s:=s+' and data <= '''+formatdatetime('dd.mm.yyyy',strtodate(edit5.text))+''''

else

s:=s+'data <= '''+formatdatetime('dd.mm.yyyy',strtodate(edit5.text))+'''';

//задаем условие поиска для поля "cena" (цена от) (числовое)

if edit6.text<>'' then

if s<>'' then

s:=s+' and cena >= '+edit6.Text

else

s:=s+'cena >= '+edit6.Text;

//задаем условие поиска для поля "cena" (цена до) (числовое)

if edit7.text<>'' then

if s<>'' then

s:=s+' and cena <= '+edit7.Text

else

s:=s+'cena <= '+edit7.Text;

if s='' then exit;

adoquery1.Active:=false;

adoquery1.sql.text:='select * from igra where '+s;

adoquery1.Active:=true;

datasource2.Dataset:=adoquery1;

end;

procedure TForm1.Button7Click(Sender: TObject);

begin

edit1.Clear;

edit2.Clear;

edit3.Clear;

edit4.Clear;

edit5.Clear;

edit6.Clear;

edit7.Clear;

edit1.Setfocus;

datasource2.Dataset:=adotable2;

end;

procedure TForm1.Button8Click(Sender: TObject);

begin

Button7Click(Sender);

while width>800 do

begin

width:=width-5;

left:=(screen.width-width) div 2;

end;

dbgrid1.Setfocus;

N9.Visible:=false;

end;

procedure TForm1.RadioGroup1Click(Sender: TObject);

begin

case radiogroup1.ItemIndex of

0: adotable2.mastersource:=datasource1;

1: adotable2.mastersource:=nil;

end;

adotable2.Active:=false;

adotable2.Active:=true;

end;

procedure TForm1.FormShow(Sender: TObject);

begin

info;

end;

procedure TForm1.ADOTable1AfterDelete(DataSet: TDataSet);

begin

info;

end;

procedure TForm1.ADOTable1AfterScroll(DataSet: TDataSet);

begin

info;

end;

procedure TForm1.ADOTable2AfterPost(DataSet: TDataSet);

begin

info;

end;

procedure TForm1.ADOTable2AfterDelete(DataSet: TDataSet);

begin

info;

end;

procedure TForm1.Timer1Timer(Sender: TObject);

var a:tdatetime;

begin

a:=now;

statusbar1.panels[2].Text:='Сегодня: '+longdaynames[dayofweek(a)]+' '+datetostr(a)+' '+timetostr(a);

end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

//если нажата F1

if key=vk_f1 then

//запускаем соответствующую страницу Помощи

application.helpcontext(screen.activecontrol.helpcontext);

if (getkeystate(vk_capital) and 1) = 1 then

statusbar1.Panels[0].Text:='Caps Lock'

else

statusbar1.Panels[0].text:='';

if (getkeystate(vk_numlock) and 1) = 1 then

statusbar1.Panels[1].Text:='Num Lock'

else

statusbar1.Panels[1].text:='';

end;

procedure TForm1.N2Click(Sender: TObject);

begin

adotable1.Append;

adotable1.FieldByName('id_grup').FocusControl;

end;

procedure TForm1.N3Click(Sender: TObject);

begin

adotable2.Append;

adotable2.FieldByName('shifr').FocusControl;

adotable2.Edit;

form4:=tform4.create(nil);

form4.showmodal;

form4.Repaint;

end;

procedure TForm1.N5Click(Sender: TObject);

begin

if adotable1.FieldByName('id_grup').asstring<>'' then

if application.MessageBox(pchar('Удалить запись'''+adotable1.FieldByName('nazv_grup').AsString+'''?'), 'Подтвердите',mb_yesno+mb_iconquestion)=idyes then

adotable1.Delete;

end;

procedure TForm1.N6Click(Sender: TObject);

begin

if adotable2.FieldByName('shifr').asstring<>'' then

if application.MessageBox(pchar('Удалить запись '''+adotable2.FieldByName('nazv').AsString+'''?'), 'Подтвердите',mb_yesno+mb_iconquestion)=idyes then

adotable2.Delete;

end;

procedure TForm1.Button9Click(Sender: TObject);

begin

popupmenu1.popup(form1.left+groupbox2.left+button9.left,form1.top+groupbox2.top+button9.top+button9.height);

end;

procedure TForm1.N10Click(Sender: TObject);

begin

try

w:=getactiveoleobject('word.application');

except

w:=createoleobject('word.application');

end;

w.documents.add(extractfilepath(application.exename)+'shablon\Anketa1.dot');

w.selection.find.text:='#nazv_vid#';

w.selection.find.replacement.text:=adotable1.fieldbyname('nazv_grup').value;

w.selection.find.execute(replace:=2);

w.selection.find.text:='#nazv#';

w.selection.find.replacement.text:=adotable2.fieldbyname('nazv').value;

w.selection.find.execute(replace:=2);

w.selection.find.text:='#strana#';

w.selection.find.replacement.text:=adotable2.fieldbyname('strana').value;

w.selection.find.execute(replace:=2);

w.selection.find.text:='#material#';

w.selection.find.replacement.text:=adotable2.fieldbyname('material').value;

w.selection.find.execute(replace:=2);

w.selection.find.text:='#data#';

w.selection.find.replacement.text:=adotable2.fieldbyname('data').value;

w.selection.find.execute(replace:=2);

w.selection.find.text:='#cena#';

w.selection.find.replacement.text:=adotable2.fieldbyname('cena').value;

w.selection.find.execute(replace:=2);

w.visible:=true;

end;

procedure TForm1.N11Click(Sender: TObject);

begin

if radiogroup1.ItemIndex=1 then

begin

adoquery1.active:=false;

adoquery1.sql.clear;

adoquery1.sql.add('select * from igra');

adoquery1.active:=true;

spisok;

end

else

application.messagebox('Выберите пункт "Просмотр общим списком"!','Ошибка!',mb_ok+mb_iconerror);

end;

procedure TForm1.Button11Click(Sender: TObject);

begin

p:='';

//задаем условие поиска для поля "nazv" (текстовое)

if edit1.text<>'' then

if p<>'' then

p:=p+' and nazv like '''+edit1.Text+'%'''

else

p:=p+'nazv like '''+edit1.Text+'%''';

//задаем условие поиска для поля "material" (текстовое)

if edit2.text<>'' then

if p<>'' then

p:=p+' and material like '''+edit2.Text+'%'''

else

p:=p+'material like '''+edit2.Text+'%''';

//задаем условие поиска для поля "strana" (текстовое)

if edit3.text<>'' then

if p<>'' then

p:=p+' and strana like '''+edit3.Text+'%'''

else

p:=p+'strana like '''+edit3.Text+'%''';

//задаем условие поиска для поля "data" (дата от) (дата/время)

if edit4.text<>'' then

if p<>'' then

p:=p+' and data >= '''+formatdatetime('dd.mm.yyyy',strtodate(edit4.text))+''''

else

p:=p+'data >= '''+formatdatetime('dd.mm.yyyy',strtodate(edit4.text))+'''';

//задаем условие поиска для поля "data" (дата до) (дата/время)

if edit5.text<>'' then

if p<>'' then

p:=p+' and data <= '''+formatdatetime('dd.mm.yyyy',strtodate(edit5.text))+''''

else

p:=p+'data <= '''+formatdatetime('dd.mm.yyyy',strtodate(edit5.text))+'''';

//задаем условие поиска для поля "cena" (цена от) (числовое)

if edit6.text<>'' then

if p<>'' then

p:=p+' and cena >= '+edit6.Text

else

p:=p+'cena >= '+edit6.Text;

//задаем условие поиска для поля "cena" (цена до) (числовое)

if edit7.text<>'' then

if p<>'' then

p:=p+' and cena <= '+edit7.Text

else

p:=p+'cena <= '+edit7.Text;

if p='' then

exit;

adoquery1.active:=false;

adoquery1.sql.clear;

adoquery1.sql.add('select * from igra where '+p);

adoquery1.active:=true;

spisok;

// else

// application.messagebox('Условия для отчета не заданы','Ошибка!',mb_ok+mb_iconstop);

end;

procedure TForm1.N12Click(Sender: TObject);

begin

// пытаемся подключиться к работающемы Excel

try

e:=getactiveoleobject('excel.application');

//если подключение не удачное, то запускаем Excel

except

e:=createoleobject('excel.application');

end;

//создаем новую книгу на основе шаблона

e.workbooks.add(extractfilepath(application.Exename)+'shablon\Anketa.xlt');

//присваиваем имени листа название игрушки

e.activeworkbook.sheets.item[1].name:=adotable2.Fieldbyname('nazv').asstring;

//заменяем имя #nazv_grup# на значение поля nazv_grup

e.activeworkbook.sheets.item[1].cells.replace

(what:='#nazv_grup#', replacement:=adotable1.Fieldbyname('nazv_grup').asstring);

//заменяем имя #nazv# на значение поля nazv

e.activeworkbook.sheets.item[1].cells.replace

(what:='#nazv#', replacement:=adotable2.Fieldbyname('nazv').asstring);

//заменяем имя #strana# на значение поля strana

e.activeworkbook.sheets.item[1].cells.replace

(what:='#strana#', replacement:=adotable2.Fieldbyname('strana').asstring);

//заменяем имя #material# на значение поля strana

e.activeworkbook.sheets.item[1].cells.replace

(what:='#material#', replacement:=adotable2.Fieldbyname('material').asstring);

//заменяем имя #data# на значение поля data

e.activeworkbook.sheets.item[1].cells.replace

(what:='#data#', replacement:=adotable2.Fieldbyname('data').asstring);

//заменяем имя #cena# на значение поля cena

e.activeworkbook.sheets.item[1].cells.replace

(what:='#cena#', replacement:=adotable2.Fieldbyname('cena').asstring);

//делаем видимым окно Excel

e.visible:=true;

end;

procedure TForm1.Button10Click(Sender: TObject);

begin

popupmenu2.popup(form1.left+groupbox2.Left+button10.left,form1.top+groupbox2.Top+button10.top+button10.height);

end;

procedure TForm1.N13Click(Sender: TObject);

begin

if radiogroup1.ItemIndex=1 then

begin

adoquery1.Active:=false;

adoquery1.SQL.clear;

adoquery1.sql.add('select * from igra');

adoquery1.Active:=true;

spisok1;

end

else

application.messagebox('Выберите пункт "Просмотр общим списком"!','Ошибка!',mb_ok+mb_iconerror);

end;

procedure TForm1.Button12Click(Sender: TObject);

begin

s:='';

//если первое поле заполнено

if edit1.text<>'' then

//добавляем условие поиска по полю nazv

if s<>'' then

s:=s+' and nazv like '''+edit1.Text+'%'''

else

s:=s+'nazv like '''+edit1.Text+'%''';

//если второе поле заполнено

if edit2.text<>'' then

//добавляем условие поиска по полю strana

if s<>'' then

s:=s+' and strana like '''+edit2.Text+'%'''

else

s:=s+'strana like '''+edit2.Text+'%''';

//если третье поле заполнено

if edit3.text<>'' then

//добавляем условие поиска по полю material

if s<>'' then

s:=s+' and material like '''+edit3.Text+'%'''

else

s:=s+'material like '''+edit3.Text+'%''';

//задаем условие поиска для поля "data" (дата от) (дата/время)

if edit4.text<>'' then

if s<>'' then

s:=s+' and data >= '''+formatdatetime('dd.mm.yyyy',strtodate(edit4.text))+''''

else

s:=s+'data >= '''+formatdatetime('dd.mm.yyyy',strtodate(edit4.text))+'''';

//задаем условие поиска для поля "data" (дата до) (дата/время)

if edit5.text<>'' then

if s<>'' then

s:=s+' and data <= '''+formatdatetime('dd.mm.yyyy',strtodate(edit5.text))+''''

else

s:=s+'data <= '''+formatdatetime('dd.mm.yyyy',strtodate(edit5.text))+'''';

//задаем условие поиска для поля "cena" (цена от) (числовое)

if edit6.text<>'' then

if s<>'' then

s:=s+' and cena >= '+edit6.Text

else

s:=s+'cena >= '+edit6.Text;

//задаем условие поиска для поля "cena" (цена до) (числовое)

if edit7.text<>'' then

if s<>'' then

s:=s+' and cena <= '+edit7.Text

else

s:=s+'cena <= '+edit7.Text;

//проверяем, заданно ли условие поиска

//если условие задано

if s='' then

exit;

adoquery1.active:=false;

adoquery1.sql.clear;

adoquery1.sql.add('select * from igra where '+s);

adoquery1.active:=true;

spisok1;

end;

procedure TForm1.N8Click(Sender: TObject);

begin

adotable2.Edit;

form4:=tform4.create(nil);

form4.showmodal;

form4.Repaint;

end;

procedure TForm1.N14Click(Sender: TObject);

var s:string;

begin

s:='';

//задаем условие поиска для поля "nazv" (текстовое)

if edit1.text<>'' then

if s<>'' then

s:=s+' and nazv like '''+edit1.Text+'%'''

else

s:=s+'nazv like '''+edit1.Text+'%''';

//задаем условие поиска для поля "material" (текстовое)

if edit2.text<>'' then

if s<>'' then

s:=s+' and material like '''+edit2.Text+'%'''

else

s:=s+'material like '''+edit2.Text+'%''';

//задаем условие поиска для поля "strana" (текстовое)

if edit3.text<>'' then

if s<>'' then

s:=s+' and strana like '''+edit3.Text+'%'''

else

s:=s+'strana like '''+edit3.Text+'%''';

//задаем условие поиска для поля "data" (дата от) (дата/время)

if edit4.text<>'' then

if s<>'' then

s:=s+' and data >= '''+formatdatetime('dd.mm.yyyy',strtodate(edit4.text))+''''

else

s:=s+'data >= '''+formatdatetime('dd.mm.yyyy',strtodate(edit4.text))+'''';

//задаем условие поиска для поля "data" (дата до) (дата/время)

if edit5.text<>'' then

if s<>'' then

s:=s+' and data <= '''+formatdatetime('dd.mm.yyyy',strtodate(edit5.text))+''''

else

s:=s+'data <= '''+formatdatetime('dd.mm.yyyy',strtodate(edit5.text))+'''';

//задаем условие поиска для поля "cena" (цена от) (числовое)

if edit6.text<>'' then

if s<>'' then

s:=s+' and cena >= '+edit6.Text

else

s:=s+'cena >= '+edit6.Text;

//задаем условие поиска для поля "cena" (цена до) (числовое)

if edit7.text<>'' then

if s<>'' then

s:=s+' and cena <= '+edit7.Text

else

s:=s+'cena <= '+edit7.Text;

if s='' then exit;

adoquery1.Active:=false;

adoquery1.sql.text:='select * from igra where '+s;

adoquery1.Active:=true;

datasource2.Dataset:=adoquery1;

end;

procedure TForm1.N16Click(Sender: TObject);

begin edit1.Clear;

edit2.Clear;

edit3.Clear;

edit4.Clear;

edit5.Clear;

edit6.Clear;

edit7.Clear;

edit1.Setfocus;

datasource2.Dataset:=adotable2;

end;

procedure TForm1.N19Click(Sender: TObject);

begin

while width<1023 do

begin

width:=width+5;

left:=(screen.width-width) div 2;

end;

edit1.Setfocus;

N9.Visible:=true;

end;

procedure TForm1.N21Click(Sender: TObject);

begin

try

w:=getactiveoleobject('word.application');

except

w:=createoleobject('word.application');

end;

w.documents.add(extractfilepath(application.exename)+'shablon\Anketa1.dot');

w.selection.find.text:='#nazv_vid#';

w.selection.find.replacement.text:=adotable1.fieldbyname('nazv_grup').value;

w.selection.find.execute(replace:=2);

w.selection.find.text:='#nazv#';

w.selection.find.replacement.text:=adotable2.fieldbyname('nazv').value;

w.selection.find.execute(replace:=2);

w.selection.find.text:='#strana#';

w.selection.find.replacement.text:=adotable2.fieldbyname('strana').value;

w.selection.find.execute(replace:=2);

w.selection.find.text:='#material#';

w.selection.find.replacement.text:=adotable2.fieldbyname('material').value;

w.selection.find.execute(replace:=2);

w.selection.find.text:='#data#';

w.selection.find.replacement.text:=adotable2.fieldbyname('data').value;

w.selection.find.execute(replace:=2);

w.selection.find.text:='#cena#';

w.selection.find.replacement.text:=adotable2.fieldbyname('cena').value;

w.selection.find.execute(replace:=2);

w.visible:=true;

end;

procedure TForm1.N22Click(Sender: TObject);

begin

if radiogroup1.ItemIndex=1 then

begin

adoquery1.Active:=false;

adoquery1.SQL.clear;

adoquery1.sql.add('select * from igra');

adoquery1.Active:=true;

spisok;

end

else

application.messagebox('Выберите пункт "Просмотр общим списком"!','Ошибка!',mb_ok+mb_iconerror);

end;

procedure TForm1.N23Click(Sender: TObject);

begin

if radiogroup1.ItemIndex=1 then

begin

adoquery1.Active:=false;

adoquery1.SQL.clear;

adoquery1.sql.add('select * from igra');

adoquery1.Active:=true;

spisok1;

end

else

application.messagebox('Выберите пункт "Просмотр общим списком"!','Ошибка!',mb_ok+mb_iconerror);

end;

procedure TForm1.Edit6KeyPress(Sender: TObject; var Key: Char);

begin

if (key='.') or (key=',') then

key:=DecimalSeparator;

//если символ не цифра, не запятая, не минус и не Backspace

if not (key in ['0'..'9',',','-',#8]) or ((key=',') and (pos(',',edit6.Text)>0))

or ((key='-') and (pos('-',edit6.Text)>0))

or ((key='-') and (edit6.SelStart>0)) then

key:=#0;

end;

procedure TForm1.Edit7KeyPress(Sender: TObject; var Key: Char);

begin

if (key='.') or (key=',') then

key:=DecimalSeparator;

//если символ не цифра, не запятая, не минус и не Backspace

if not (key in ['0'..'9',',','-',#8]) or ((key=',') and (pos(',',edit7.Text)>0))

or ((key='-') and (pos('-',edit7.Text)>0))

or ((key='-') and (edit7.SelStart>0)) then

key:=#0;

end;

procedure TForm1.N27Click(Sender: TObject);

begin

form5:=tform5.create(nil);

form5.showmodal;

form5.Repaint;

end;

procedure TForm1.N25Click(Sender: TObject);

begin

application.helpcommand(help_contents, 0);

end;

procedure TForm1.Button5KeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if key=vk_f1 then

application.helpcontext(screen.activecontrol.helpcontext);

end;

end.

Код формы-заставки:

unit Unit3;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, jpeg, ExtCtrls;

type

TForm3 = class(TForm)

Image1: TImage;

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure FormShow(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);

begin

AnimateWindow(Handle, 1000, $10 oR $10000);

action:=cafree;

end;

procedure TForm3.FormShow(Sender: TObject);

begin

Left:= (Screen.Width - Width)div 2;

Top:= (Screen.Height - Height)div 2;

AnimateWindow(Handle, 1000, $10 oR $20000);

end;

procedure TForm3.FormCreate(Sender: TObject);

var myregion:hrgn;

begin

myregion:=createroundrectrgn(0,0,clientwidth,clientheight,35,35);

setwindowrgn(handle,myregion,true);

end;

end.

Код формы редактирования/добавления данных:

unit Unit4;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Mask, DBCtrls, db, ExtDlgs, ComCtrls, ADODB;

type

TForm4 = class(TForm)

DBEdit1: TDBEdit;

DBEdit2: TDBEdit;

DBEdit3: TDBEdit;

DBEdit4: TDBEdit;

DBEdit5: TDBEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

DBImage1: TDBImage;

Label6: TLabel;

Label7: TLabel;

DBMemo1: TDBMemo;

OpenPictureDialog1: TOpenPictureDialog;

Button1: TButton;

Button2: TButton;

DateTimePicker1: TDateTimePicker;

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure DBImage1Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure DBEdit4Enter(Sender: TObject);

procedure DateTimePicker1Exit(Sender: TObject);

procedure DBEdit5KeyPress(Sender: TObject; var Key: Char);

procedure FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4;

implementation

uses Unit1, Unit3, Unit2;

{$R *.dfm}

procedure TForm4.FormClose(Sender: TObject; var Action: TCloseAction);

begin

action:=cafree;

end;

procedure TForm4.DBImage1Click(Sender: TObject);

begin

if openpicturedialog1.Execute = true then

tblobfield(form1.adotable2.fieldbyname('foto')).loadfromfile(openpicturedialog1.Filename);

end;

procedure TForm4.Button1Click(Sender: TObject);

begin

if dbedit1.text<>'' then

begin

form1.adotable2.post;

close;

end;

end;

procedure TForm4.Button2Click(Sender: TObject);

begin

form1.adotable2.cancel;

close;

end;

procedure TForm4.DBEdit4Enter(Sender: TObject);

begin

datetimepicker1.Visible:=true;

if dbedit4.text<>'' then

datetimepicker1.Date:=strtodate(dbedit4.text);

datetimepicker1.setfocus;

end;

procedure TForm4.DateTimePicker1Exit(Sender: TObject);

begin

datetimepicker1.Visible:=false;

dbedit4.text:=datetostr(datetimepicker1.Date);

end;

procedure TForm4.DBEdit5KeyPress(Sender: TObject; var Key: Char);

begin

if (key='.') or (key=',') then

key:=DecimalSeparator;

//если символ не цифра, не запятая, не минус и не Backspace

if not (key in ['0'..'9',',','-',#8]) or ((key=',') and (pos(',',dbedit5.Text)>0))

or ((key='-') and (pos('-',dbedit5.Text)>0))

or ((key='-') and (dbedit5.SelStart>0)) then

key:=#0;

end;

procedure TForm4.FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if key=vk_f1 then

application.helpcontext(screen.activecontrol.helpcontext);

end;

end.

Код формы «О программе»:

unit Unit5;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, jpeg, ExtCtrls;

type

TForm5 = class(TForm)

Image1: TImage;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form5: TForm5;

implementation

{$R *.dfm}

end.

4 Тестирование

Для проверки программы выполним несколько тестовых заданий.

Откроем главную форму и нажмем кнопку «Добавить» под главной сеткой.

Рисунок 9 - Добавление в таблицу «Vidy»

Выполним проверку добавления в таблицу «Igra». Нажмем на кнопку «Добавить» под второй сеткой.

Рисунок 10 - Добавление в таблицу «Igra»

Проверим, что данные были добавлены.

Рисунок 11 - Проверка добавления в таблицу «Igra»

Выполним проверку удаления из таблицы «Igra». Кликнем на кнопку «Удалить» под второй сеткой. Нажмем «Да» для подтверждения действия.

Рисунок 12 - Удаление записи из таблицы «Igra»

Проверим, что запись была удалена.

Рисунок 13 - Проверка удаления

Проверим удаление из главной таблицы «Vidy». Нажмем на «Удалить» под первой сеткой и подтвердим выполненное действие нажатием пункта «Да».

Рисунок 14 - Удаление из главной таблицы «Vidy»

Проверим, что удаление выполнилось.

Рисунок 15 - Проверка удаления из таблицы «Vidy»

Выберем пункт «Просмотр общим списком» и проверим отображение всех данных в таблице «Igra».

Рисунок 16 - Просмотр общим списком

Проверим работу функции «Редактирование данных». Для этого дважды кликнем на нужной записи. Появится форма редактирования. Изменим нужные характеристики и нажмем на кнопку «Сохранить».

Рисунок 17-18 - Редактирование данных

Проверим, что данные сохранились.

Рисунок 19 - Проверка редактирования данных

Проверим работу функции «Поиск данных». Нажмем на кнопку «Поиск данных», с правой стороны формы появится панель поиска. Введем критерии поиска и нажмем на кнопку «Поиск».

Рисунок 20 - Поиск данных по условию

Протестируем функцию «Отчет», как в MS Word, так и в MS Excel. (см. Дополнение 1 - 6).

5. Сопровождение

5.1 Пособие пользователя

После запуска программы на главной форме «Каталог игрушек» размещены две таблицы. Данные в первой таблице редактируются в самой сетке, а во второй - при помощи двойного клика по нужной записи.

Добавить записи в первую и вторую таблицы можно с помощью кнопок «Добавить». В первой таблице добавление осуществляется в самой сетке, а во второй - при помощи формы добавления. В эту форму нужно ввести необходимую информации, в числовые поля можно ввести только числа. Кнопка «Сохранить» сохраняет данные, а кнопка «Отменить» - отменяет добавление и выходит из формы.

При помощи кнопок «Удалить» можно удалить информацию из таблиц. Появиться окно подтверждения, в котором нужно выбрать подтвердить удаление или отменить.

При помощи кнопки F1 можно узнать подробно, как пользоваться разными функциями программы.

При нажатии на кнопку «Поиск данных» с правой стороны формы открывается панель поиска, в которой задаются критерии для отбора. После ввода условий нужно нажать на кнопку «Поиск».

Если необходимо вывести информацию в отчет, то это можно выполнить с помощью нажатия кнопки «Отчет». В отчет можно вывести одну активную запись, все записи и отобранные данные с помощью функции «Поиск». Отчет создается как в MS Word, так и в MS Excel.

5.2 Пособие разработчика

Для того, чтобы запустить программу нужно установить на компьютер SQL Server 2005 или новее.

После, устанавливаем на компьютер программу «Каталог игрушек» при помощи инсталлятора Game.exe. После установки программы на рабочем столе появится ярлык запуска программы.

Заключение

Во время выполнения курсовой работы я разработала информационную систему «Каталог игрушек». В ней содержится информация об игрушках с фотографиями и полным описанием.

Овладела навыками работы с SQL Server 2008 и Delphi 7.

На практике научилась работать с ini-файлами, с компонентами программы, с диалогами открытия файлов. Научилась работать с технологией ADO, создавать форму - регистрацию. Закрепила знания о создании запросов. Научилась создавать файл помощи для программы. Овладела способами создания отчетов в MS Word и в MS Excel с помощью шаблонов и Delphi 7. Научилась работать с MDI интерфейсом и с программой - компилятором.

Система прошла отладку и тестирование. Были исправлены все ошибки и недочеты. Программа полностью готова к использованию.

Список литературы

1. Конспект лекций по предмету «Инструментальные средства визуального программирования»

2. Архангельский А. Я. Программирование в Delphi 7: Бином-Пресс, 2003

3. Архангельский А. Я. Работа с локальными базами данных в Delphi 5: Бином, 2000

4. Аткинсон Л. MySQL. Библиотека профессионала: Диалектика, 2002

5. Понамарев В. Базы данных в Delphi 7. Самоучитель: Питер, 2003

6. Гофман В.Э., Хомоненко А.Д. Delphi. Быстрый старт. - СПб: БХВ-Петербург, 2003. - 288 с.: ил.

Размещено на Allbest.ru

...

Подобные документы

  • Разработка информационной системы для ведения каталога книг/читателей, поисковой системы, предварительных заказов на приобретение книг. Анализ затрат на разработку системы. Архитектура объектно-ориентированной системы. Диаграмма классов, модули системы.

    курсовая работа [906,1 K], добавлен 24.06.2013

  • Теоретические основы разработки web-сайта. Сбор и анализ данных для качественной реализации программного продукта. Разработка модели сайта магазина детских игрушек. Графическое оформление страниц. Выбор средств и технологий, тестирование и отладка.

    курсовая работа [349,2 K], добавлен 09.04.2015

  • Рассмотрение структуры и схемы базы данных. Описание таблиц и архитектура приложения информационной системы "Музыкальный каталог". Изучение интерфейса пользователя: страниц регистрации, главной и страницы поиска. Приложение для работы с базами данных.

    курсовая работа [821,2 K], добавлен 27.07.2014

  • Цель создания информационной системы. Автоматизированная информационная система "Строительное предприятие". Использование вычислительной техники и программного обеспечения для создания автоматизированной информационной системы управления на предприятии.

    курсовая работа [2,5 M], добавлен 04.01.2011

  • Анализ предметной области разрабатываемой информационной системы "Библиотека". Проектирование базы данных в среде MS Access. Физическая реализация данной информационной системы средствами Delphi 7 и MS Access 2003. Области применения технологии BDE.

    курсовая работа [2,4 M], добавлен 12.01.2016

  • Особенности создания базы данных. Характеристика программного и технического обеспечений. Анализ создания информационной системы по оплате студентов за обучение. Состав Borland Delphi 7: компилятор, генератор отчетов, библиотека визуальных компонент.

    курсовая работа [641,2 K], добавлен 29.02.2012

  • Приложения MS Word, MS Excel, Open Office в деятельности менеджера, категории задач, для решения которых они используются. Составление операционной математической модели, максимизирующей общий доход фабрики за месяц. Поиск решения с помощью MS Excel.

    контрольная работа [511,4 K], добавлен 27.11.2011

  • Разработка программы для ввода данных из актов о возврате бракованных ванн в БД учета брака. Проектирование информационных систем. Разработка модели БД с помощью ERWin, приложения ввода данных в Borland Delphi 7, системы создания отчётности в MS Excel.

    курсовая работа [2,6 M], добавлен 30.03.2011

  • Сущность тестирования и отладки, методика выявления ошибок в программном обеспечении. Практика отладки приложений в среде Delphi, системы управления версиями приложения и отслеживания ошибок. Применение точек остановки и модификация локальных переменных.

    курсовая работа [303,4 K], добавлен 19.01.2016

  • Выбор методологии проектирования и разработка информационной системы "Расчёт зарплаты" для предприятия ОАО РТП "Авторемонтник". Архитектурное проектирование базы данных информационной системы и разработка её интерфейса. Тестирование программного модуля.

    дипломная работа [2,3 M], добавлен 25.05.2014

  • Создание автоматизированной системы "Медицинские организации города" с помощью MS Access 2002: создание таблиц с данными, разработка запросов и отчетов. Создание программы на языке Visual Basic, содержащей сведения об ассортименте игрушек в магазине.

    курсовая работа [4,3 M], добавлен 13.11.2009

  • Проектирование информационной системы предприятия "Ниссан-Авто" с помощью табличного процессора Excel. Условия для выполнения расчетной части. Макросы, используемые в программе. Создание проекта по разделам: база данных, сводная таблица, график.

    контрольная работа [3,6 M], добавлен 16.01.2011

  • Язык Delphi как строго типизированный объектно-ориентированный язык, в основе которого лежит хорошо знакомый программистам Object Pascal, его главные особенности. Стадии создания автоматизированной системы. Листинг программы, разработка интерфейса.

    курсовая работа [933,9 K], добавлен 08.12.2011

  • Общее понятие про отчет. Системы формирования отчетов. Возможности Сrystal Reports 2008. Формирование сложных отчетов на основе ранее подготовленных шаблонов и правил с помощью T-FLEX DOCs. Анализ идеальной модели отчетов для языков программирования.

    курсовая работа [54,2 K], добавлен 05.06.2009

  • Создание сложных текстовых документов с помощью шаблонов и мастеров Word. Разработка собственных шаблонов. Разоаботка общей структуры документа, настройка параметров страницы, перемещение по тексту с помощьюпанели схемы документа. Внешний вид текста.

    методичка [30,1 K], добавлен 14.02.2009

  • Создание системы управления данными для информационной системы ВУЗа с помощью MS Access. Разработка таблиц и схемы базы данных, запросов в MS SQL Server, основных форм и отчетов. Организация формы главного меню для автоматического вызова объектов БД.

    курсовая работа [3,0 M], добавлен 09.04.2012

  • Разработка системы, поддерживающей формирование итоговых отчетов из данной базы и обеспечивает ввод, удаление, хранение и редактирование информации, которая содержится в таблицах данных. Обоснование выбора среды разработки Delphi 7 для WINDOWS–приложений.

    дипломная работа [2,1 M], добавлен 20.05.2012

  • Создание структуры базы данных. Таблица реквизитов входных данных информационной системы "Видеобиблиотека". Процессы, составляющие действие в базе данных. Формирование ведомостей с использованием MS Excel. Использование интегрированной среды Delphi.

    курсовая работа [455,8 K], добавлен 05.01.2013

  • Разработка автоматизированной информационной системы "Супермаркет DNS" с опорой на платформу NET, в среде MS Visual Studio, на языке программирования C. Объектная модель программной системы согласно методологии ОМТ. Описание алгоритмов обработки данных.

    курсовая работа [394,0 K], добавлен 21.10.2012

  • Требования к системе проектирования информационной системы финансового контроля. Информационное, программное и техническое обеспечение автоматизированной системы. Алгоритмы и модели работы базы данных, созданной в среде разработки Borland Delphi 7.0.

    дипломная работа [1,2 M], добавлен 25.10.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.