Автоматизация деятельности торгового предприятия

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



В·влечения номенклатуры является рекурсивной. При этом, будут динамически создаваться экземпляры объектов TADOQuery при каждом вызове процедуры. Иначе, при обычном использовании компонента, каждое выполнение рекурсивно вызванной процедуры будет перезаписывать результат, хранимый в ADOQuery, рекурсивно вызвавшей ее процедуры.

Алгоритм процедуры представляет собой прямой обход дерева. Сначала из базы извлекается список каталогов для текущей ветви дерева. Затем ведется поиск товаров и услуг, которые являются дочерними для этой же ветви. Если такие находятся, то они добавляются к обрабатываемой ветви дерева, как дочерние элементы, а в массивы заносится информация о них. По завершении поиска товаров и услуг запускается цикл, в котором перебирается список каталогов, полученный в начале процедуры. В теле цикла для каждого каталога создается ветвь, являющаяся дочерней для текущего элемента дерева, и рекурсивно вызывается наша процедура с параметрами, обрабатываемого, на данный момент, каталога и только что созданной ветви. Причем созданные экземпляры объекта TADOQuery "уничтожаются" в обязательном порядке по завершению работы, что бы бессмысленно не расходовать ресурсы системы.

При запуске программы процедура выстраивает дерево в соответствии с содержимым номенклатуры, правильно воссоздав иерархию элементов, и не потеряв при этом ни одного из них (Рисунок 16).

Рисунок 16 - Номенклатура отображаемая приложением

3.3.6Совершений операций продаж. Запись в базу данных информации о совершенных продажах и поступивших заказах

Розничные точки, как и склады, записывают информацию о продажах в таблицу "l_sale", а информацию о заказах в таблицу "l_zakaz". На форме имеется кнопка "Провести".

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

Использование объекта StringGrid, для размещения данных.

Формы, указания количества заказываемого или покупаемого продукта.

Контекстное меню объектов TreeView и StringGrid.

3.3.6.1Использование и настройка компонента StringGrid, для размещения данных

Объект StringGrid представляет собой таблицу, содержащую строки. В приложении используется для составления списка товаров, которые будут либо проданы, либо заказаны. Данный объект использует большую часть пространства приложения, для нормального и удобного, для работника, отображения списка. И представляет собой набор полей и записей.

Первые колонка и строка таблицы зафиксированы. Первая строка содержит наименование полей ("№", "Id", "Наименование", "Количество" и так далее). Первая колонка отображает номера записей. Так же в свойстве "ScrollBars" установлено значение "ssVertical", что бы использовалась только вертикальная полоса прокрутки (Рисунок 17).

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

Рисунок 17 - Визуальное отображение объекта "StringGrid"

.3.6.2Форма указания количества заказываемого или покупаемого продукта и расчета суммы

Данная форма используется при заполнении таблицы, имеет несколько надписей для отображения информации о добавляемом товаре, поле ввода для указания количества, и две кнопки для завершения или отменны операции (Рисунок 18).

Рисунок 18 - Форма указания количества товаров

При каждом изменении содержимого поля ввода, автоматически изменяется текущая сумма, при этом программа контролирует корректность введенных значений (Рисунок 19). По нажатию на клавишу "Готово" в таблицу вносятся соответствующие записи (Рисунок 20).

Рисунок 19 - Процесс добавления товара в таблицу

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

Рисунок 20 - Таблица "StringGrid" с одной записью

3.3.6.3Контекстное меню объектов TTreeView и TStringGrid

При двойном нажатие левой кнопки мыши на элементе дерева, по умолчание будет выставляться операция "Продажа". Для реализации выбора типа операции воспользуется экземпляр объекта "TPopUpMenu" (контекстное меню) [10]. Контекстное меню дерева номенклатуры содержит две команды: "Продажа" и "Заказ". Каждая из команд контекстного меню, как и компоненты, имеет некоторый набор свойств и событий, представляемых в окне инспектора объектов (Рисунок 21).

Рисунок 21 - Редактор команд контекстного меню

Команда "Продажа" выполняет те же операции, что и при двойном нажатии, на левую кнопку мыши, на элементе дерева. Команда "Заказ" выполняет практически те же функции, что и команда "Продажа". За исключением того что в поле "Операция", таблицы StringGrid, заносится запись о том, что текущая позиция заказывается.

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