Форма Form4 содержит компонент DBChart1, источником данных которого являются данные из таблицы Query1. Все необходимые свойства этого компонента проще всего ввести с помощью мастера, также вызываемого двойным щелчком по компоненту.
Форма Form5 содержит отчет QuickRep1 и связанные с ним элементы: полосы данных QRBand1…QRBand4, надписи QRLabel1…QRLabel97, текстовые поля QRDBText1… QRDBText6, вычисляемые поля QRExpr1… QRExpr6, линии QRShape1, QRShape2. Источником данных формы являются связные таблицы Table1 и Table2, которые в свою очередь связаны с источником данных DataSource1.
Форма AboutBox содержит пять компонентов:
- командную кнопку OKButton, служащей для закрытия формы;
- панели Panel1 для группировки компонентов ProductName и Version;
- трех информационных надписей (ProductName и Version).
Форма Intro выполняет функции «заставки» при запуске программы и содержит два компонента: Image1 с графическим изображением (файл Intro.jpg) и Timer1, свойство которого Interval имеет значение 3000 мс, т.е. «заставка» будет отображаться на экране в течении 3 с.
Внешний вид форм проекта системы на этапе разработки приведен в прил.1
После подготовки компонентов форм необходимо приступить к написанию кода обработки событий, возникающих при работе приложения.
Код представляет собой программу на языке ObjectPascal обработки событий объектов и состоит из нескольких модулей: основного (kp), и модулей обработки событий форм (Unit1…Unit7). В каждом модуле, в свою очередь, может содержаться несколько процедур, предусматривающих обработку тех или иных событий компонентов форм.
Листинги соответствующих программ приведены в прил.3, 4.
После написания программного кода необходимо выполнить заключительный этап проектирования – запуск и отладку приложения. Запуск приложения на выполнение осуществляется путем выполнения команды Run (клавиша F9) среды проектирования BorlandDelphi. На этом этапе происходит анализ кода на предмет наличия синтаксических ошибок и, при их отсутствии, компиляция в исполняемый модуль – kp.exe. При необходимости код программы корректируется разработчиком: исправляются допущенные синтаксические и логические ошибки, оптимизируются те или иные конструкции.
Сразу после запуска системы пользователю становится доступны главная форма системы, меню, командные кнопки, элементы навигации по базе данных и элементы ввода условий фильтрации. Внешний вид форм проекта на этапе выполнения приведен в прил. 2
В строке меню (см. Рис.П.2.1) расположены команды по управлению системой. Описание структуры меню приведено в табл. 4
Таблица 4. Структура меню системы
Наименование раздела | Содержание раздела | Описание |
Файл | Выход | Команда выхода из системы. Во время выполнение команды выдается запрос на подтверждение и осуществляется корректный выход из системы. |
Правка | Новый товар | Ввод информации о новом товаре |
Удалить товар | Удаление информации о выбранном товаре | |
Поиск товара | Поиск товара по базе данных | |
Вид | Диаграмма | Просмотр сведений о продажах в графической форме |
Отчет | Предварительный просмотр и распечатки отчета о продажах | |
Справка | Вызов справки | Вызов окна справочной системы программы |
О программе | Вывод окна информации о разработчике |
Вспомогательная информация (подсказки по элементам управления) доступна пользователю в строке состояния.
Навигация по записям базы данных осуществляется путем выбора с помощью указателя мыши требуемого элемента в таблице товаров.
Пользователь имеет возможность изменить режим сортировки – для этого необходимо воспользоваться соответствующей радиокнопкой.
Для отбора сведений о товарах определенного типа необходимо включить режим фильтрации и указать искомый тип товара, выбрав его из списка.
Чтобы осуществить поиск информации о товаре в базе данных необходимо открыть с помощью кнопки «Поиск товара» форму ввода искомого значения (рис. .П.2.4) После нажатия кнопки «ОК» в системе будет осуществлен поиск искомых сочетаний знаков. При этом указатель будет помещен на первое найденное значение или будет выведено сообщение об отсутствии искомого значения.
Для ввода информации о новом товаре служит кнопка «Новый товар» (рис. .П.2.2). После её нажатия появляется форма ввода для внесения в базу новой записи.
Удаление информации о выбранном товаре осуществляется после нажатия кнопки «Удалить товар» (рис.П.2.3). При этом на экране появляется предупреждающее сообщение.
Вычисление общей суммы продаж по выбранному товару и остаток его на складе осуществляется автоматически.
Для просмотра сведений о продажах в графической форме служит кнопка «Диаграмма» (рис. .П.2.5).
Для работы с таблицей типов товаров необходимо нажать кнопку «Тип товара», что приведет к открытию соответствующей формы (см. рис.П.2.6).
Для предварительного просмотра и распечатки отчета о продажах служит кнопка «Отчет». В окне предварительного просмотра (рис. .П.2.7) пользователю доступны кнопки изменения масштаба изображения на экране, выбора и настройки принтера, отправки указанной страницы на печать.
Для нормальной работоспособности системы на другом компьютере необходимо воспользоваться программой InstallShield, поставляемой вместе с Delphi. Запустив мастер создания инсталляционного пакета и заполнив все необходимые поля карточки мастера (расположение на диске, метод установки, необходимость включения компонентов в пакет и т.п.) получаем на выходе исполняемый файл setup.exe. Этот файл необходимо передать пользователю программы.
Для установки системы на компьютере пользователя необходимо запустить указанный выше файл (setup.exe) и дождаться завершения установки. При этом будет произведено автоматическое копирование всех необходимых элементов, создан каталог KP на диске C компьютера пользователя, произведена настройка псевдонима базы данных.
Перед установкой программы необходимо:
1. Убедится в наличии установленных ОС Windows 98 или выше и администратора баз данных BDE версии 5.1 или выше.
2. Убедится в наличии установленной СУБД ACCESS 2000 или выше.
3. При необходимости установить указанные компоненты.
После завершения установки достаточно запустить из папки KP исполняемый файл kp.exe.
1. Архангельский А.Я. Работа с локальными базами данных в Delphi 5. М.:Бином,2000.
2. Архангельский А.Я. Язык SQL в Delphi 5. М.: ЗАО «Издательство БИНОМ»,М.: 2000.
3. Архангельский А.Я. Object Pascal в Delphi 5. М.: ЗАО «Издательство БИНОМ», 1999.
4. Гофман В.Э., Хомоненко А.Д. Delphi 6. СПб, «БХВ-Петербург», 2002.
5. Гофман В.Э., Хомоненко А.Д.Работа с базами данных в Delphi. СПб,«Скт- Петербург», 2000.
6. Дарахвелидзе П., Марков Е. Программирование в Delphi 7. СПб, «Скт-Петербург», 2003.
7. Климова Л.М. Программирование в среде Delphi. Часть 2.Учебное пособие. М.: МГТУ ГА, 2003.
8. Фаронов В.В. Delphi 6. Учебный курс. М.: Издатель Молгачкова С.В., 2002.
9. Архангельский А. Я. Программирование в Delphi 7. М: « Издательство БИНОМ», 2003.
Приложение
Файл kp.dpr
program kp;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2},
Unit3 in 'Unit3.pas' {Form3},
Unit4 in 'Unit4.pas' {Form4},
Unit5 in 'Unit5.pas' {Form5},
Unit6 in 'Unit6.pas' {Intro},
Unit7 in 'Unit7.pas' {AboutBox};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm4, Form4);
Application.CreateForm(TForm5, Form5);
Application.CreateForm(TIntro, Intro);
Application.CreateForm(TAboutBox, AboutBox);
Application.Run;
end.
Файл unit1.pas
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, Grids, DBGrids, DBTables, Menus, StdCtrls, ExtCtrls, DBCtrls,
dbcgrids, ComCtrls;
type
TForm1 = class(TForm)
Database1: TDatabase;
tTable1: TTable;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
tTable2: TTable;
tTable1KodZapisi: TAutoIncField;
tTable1Nazvanie: TStringField;
tTable1Kod: TIntegerField;
tTable1Prihod: TFloatField;
tTable1Rashod: TFloatField;
tTable1Zena: TFloatField;
tTable1Stoimost: TCurrencyField;
tTable1Ostatok: TFloatField;
tTable2Kod: TAutoIncField;
tTable2Tip: TStringField;
tTable1Field111: TStringField;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
cmdNew: TButton;
cmdDel: TButton;
cmdType: TButton;
RadioGroup1: TRadioGroup;
GroupBox1: TGroupBox;
CheckBox1: TCheckBox;
DBLookupComboBox1: TDBLookupComboBox;
DataSource2: TDataSource;
StatusBar1: TStatusBar;
cmdChart: TButton;
cmdReport: TButton;
cmdFind: TButton;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
procedure tTable1CalcFields(DataSet: TDataSet);
procedure N5Click(Sender: TObject);
procedure cmdNewClick(Sender: TObject);
procedure cmdDelClick(Sender: TObject);
procedure tTable1AfterPost(DataSet: TDataSet);
procedure cmdTypeClick(Sender: TObject);
procedure tTable2AfterPost(DataSet: TDataSet);
procedure RadioGroup1Click(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure DBLookupComboBox1Click(Sender: TObject);
procedure cmdChartClick(Sender: TObject);
procedure cmdFindClick(Sender: TObject);
procedure cmdReportClick(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormShow(Sender: TObject);
procedure N11Click(Sender: TObject);
private
{ Private declarations }
procedure DisplayHint(Sender: TObject);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2, Unit3, Unit4, Unit5, Unit6, Unit7;
{$R *.dfm}
//Вывод подсказки в строку состояния
procedure TForm1.DisplayHint(Sender: TObject);
begin
StatusBar1.SimpleText := Application.Hint;
end;
//Формированиезначенийвычисляемыхполей
procedure TForm1.tTable1CalcFields(DataSet: TDataSet);
begin
tTable1Stoimost.AsCurrency:=tTable1Zena.AsCurrency*tTable1Rashod.AsFloat;