2.2 Используемые компоненты при разработке программы
При разработке приложения были использованы следующие стандартные модули: VCL.
Модуль VCL (Visual Components Library - библиотека визуальных компонентов) содержит компоненты в стиле Delphi, позволяющие разрабатывать приложения с главной формой, на которую могут быть помещены стандартные элементы управления Windows.
3. Описание программы
Программа не разбита на модули. Рассмотрим некоторые процедуры описанные в программе:
Процедура Output служит для вывода базы данных на экран. Входные данные отсутствуют.
Procedure Output;
var
Temp : Dlist;
temps : string;
I: integer;
begin
table.rowcount := tail^.data.number;
Temp := Head;
i :=1;
Table.setcell(1,1, '№');
Table.setcell(2,1, 'Наименование');
Table.setcell(3,1, 'Сорт');
Table.setcell(4,1, 'Количество');
Table.setcell(5,1, 'Цена');
table.setcell(6,1, 'Стоимость');
while Temp <> nil do begin
with Temp^.data do begin
i:=i+1;
table.setcell(1,i, inttostr(number));
table.setcell(2,i,name);
table.setcell(3,i,sort);
table.setcell(4,i,kolvo);
table.setcell(5,i,price);
table.setcell(6,i,stoim);
end;
Temp := Temp^.next;
end;
end;
Процедура AddRecord служит для добавления новых записей в базу данных. Входные данные, строки:
Procedure AddRecord (DName, DSort, DKolvo, DPrice : string);
var
NewNode : DList;
begin
New (NewNode);
with NewNode^.data do begin
Name := UpCase(DName[1]) + LowerCase(Copy(DName, 2, length(DName) - 1));
Sort := UpCase(DSort[1]) + LowerCase(Copy(DSort, 2, length(DSort) - 1));
Kolvo := DKolvo;
Price := DPrice;
stoim := inttostr(strtoint(Price) * strtoint(kolvo));
NewNode^.next := nil;
NewNode^.prev := nil;
end;
if Head = nil then begin
NewNode^.data.number := 1;
head := newnode;
tail := newnode;
end
else begin
NewNode^.data.Number := Tail^.data.number + 1;
Tail^.next := NewNode;
Tail := NewNode;
end;
Output;
ShowMessage (Запись успешно добавлена!');
end;
Процедура DeleteRecord служит для удаления записей. Входные данные, число:
procedure DeleteRecord(n: integer);
var
D: Dlist;
H: DList;
T: DList;
begin
D := SearchDelNode(n);
if (D <> nil) and (Head = D) and (Head^.next = nil) then begin
dispose (Head);
Head := nil;
Tail := nil;
end
else if (D <> nil) and (Head = D) then begin
Head := D^.next;
Head^.prev := nil;
dispose (D);
ChangeNumber;
end
else
if (D <> nil) and (Tail = D) then begin
Tail := D^.prev;
Tail^.next := nil;
dispose (D);
ChangeNumber;
end
else if D <> nil then begin
H := D^.prev;
T := D^.next;
H^.next := D^.next;
T^.prev := D^.prev;
dispose (D);
ChangeNumber;
end;
end;
procedure ChangeNode; Процедура редактирования. Входные данные отсутствуют.
Procedure LoadFromFile; Процедура загрузка информации из файла. Входные данные отсутствуют.
procedure SaveToFile; Процедура сохранения информации в файл. Входные данные отсутствуют.
procedure ChangeNumber; Процедура изменения порядкового номера записи. Входные данные отсутствуют.
procedure LoadP - процедура для создания главной формы программы:
procedure LoadP;
begin
cls;
MFrame := Form.Create
(0,0,800,600,'Количество реализованного
товара');
Table := StringGrid.create (Mframe,2,2,781,535);
Table.colcount := 6;
table.rowcount := 0;
Table.colwidths[1] := 30;
Table.colwidths[2] := 148;
table.colwidths[3] := 148;
table.colwidths[4] := 148;
table.colwidths[5] := 148;
table.colwidths[6] := 148;
Table.Editing:=False;
Table.setcell(1,1, '№');
Table.setcell(2,1, 'Наименование');
Table.setcell(3,1, 'Сорт');
Table.setcell(4,1, 'Количество');
Table.setcell(5,1, 'Цена');
table.setcell(6,1, 'Стоимость');
OFile := OpenDialog.create;
OFile.Filter := 'Текстовые файлы|*.dat';
SFile := SaveDialog.create;
SFile.Filter := 'Текстовые файлы|*.dat';
MMenu := MainMenu.Create;
MFrame.menu := MMenu;
MMenuADD
end;
