Программирование в Delphi
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
;
10. клик StringGrid-а.
Пояснения к алгоритму 10:
Блок 2 подтверждение выбора.
11. вызов печати.
Пояснения к алгоритму 11:
Блок 2 вызов стандартного почтового клиента.
12. выход.
Пояснения к алгоритму 12:
Блок 2 выход из программы.
5. Форма представления исходных данных
По условию поставленной задачи необходимо предусмотреть хранение информации в типизированных файлах. Для решения данного вопроса, необходимо разработать типизированный элемент хранения данных строку набора базы данных, роль которой в данном приложении будет выполнять переменная zap, имеющая следующую структуру.
type zap=record
prod:string[80];
onng:longint;
plan:longint;
onkg:longint;
svocep:extended;
end;
Т.е. данная переменная представляет собой линейный массив переменных данных необходимого нам типа. Для организации двумерного массива, опишем в разделе переменных массив Mzap:
var
Mzap:array[1..200] of zap; //объявление типа массива записей
Типизированный файл представляет собой набор типизированных элементов, структура и наименование которого описаны в вышеназванном разделе переменных:
filezap: file of zap;
filenamezap:string;
6. Разработка интерфейса
Принимая во внимание поставленную ранее задачу, создаем на форме следующие визуальные компоненты:
- StringGrid - для визуального отображения данных в табличной форме. Шапка таблицы будет повторять таблицу, указанную в начальном условии, и заполняется при открытии формы. Предустановленное максимальное количество строк 100, столбцов 7. Ширины столбцов выбираем в соответствии с размерностью данных.
- MEMO-поле для вывода данных, указанных в условии.
- 5 компонентов edit для добавления / изменения / удаления записей в базу данных (компоненты имеют ширину, соответствующую ширинам стобцов, и расположены напротив каждого столбца снизу) (см. рис. 1).
Рис.1. Общий вид приложения.
2 button-а для добавления и удаления записи, названных соответственно выполняемой функции. Так как для отображения информации в StringGrid используется текстовая форма, предусмотрено невозможность ввода текстовых данных в численные поля с выводом соответствующего сообщения, а также невозможность внесения пустого поля, так как все поля базы данных, необходимые для математического расчета по условиям задачи, должны быть обязательными для заполнения. Эти события регистрируются специальными предвартельными условиями и при обнаружения несоответствия выводится окно, отображающее наименование ошибки (см. рис.2 и рис.3).
Рис.2. Ошибка при добавлении пустого (пыстых) полей.
Рис.3. Ошибка при добавлении не численного значения.
- использованы стандартные диалоги OpenDialog и SaveDialog для предоставления пользователю возможности визуального выбора имени и пути типизированного файла для открытия либо для сохранения базы данных (См. рис.4).
Рис.4. Стандартное диалоговое окно для открытия базы данных.
Для вызова диалогов использованы 2 компонента button с соответствующими названиями. А для обнуления данных, т.е. создания новой базы использовать компонент button с подписью создать базу.
Для дублирования функций программы и создания дополнительного удобства работы с приложением применен компонент menu с соответствующими подменю и подписями кнопок.
Расположение кнопок и других полей выбрано для гарантированного удобства работы с приложением.
7. Листинг программы
unit EconomInfo;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, Menus, StdCtrls,shellapi;
type
TForm1 = class(TForm)
sg1: TStringGrid;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
Memo1: TMemo;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Button1: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
N8: TMenuItem;
procedure FormShow(Sender: TObject);
procedure cleansg(Sender: TObject);
procedure cleanedit(Sender:TObject);
procedure Button4Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure autorachet(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure sg1Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
type zap=record // объявление типа записи
prod:string[80];
onng:longint;
plan:longint;
onkg:longint;
svocep:extended;
end;
var
Mzap:array[1..200] of zap; //объявление типа массива записей
filezap: file of zap;
filenamezap:string;
//процедура выполнения действий при загрузке формы
procedure TForm1.FormShow(Sender: TObject);
begin
with sg1 do begin
Cells[0,0]:=Наименование продукции;
Cells[1,0]:=ОнНГ;
Cells[2,0]:=ПВ;
Cells[3,0]: