В программе «Медиаплан» используется процедура sub. Процедура sub не возвращает значения и наиболее часто используется для обработки связанного с ней события. Ее можно помещать в стандартные модули, модули классов и форм. Она имеет следующий синтаксис:
[Private] [Public] [Static} Sub имяПроцедуры (аргументы)
операторы
End Sub
Модули формы могут содержать объявления переменных, констант, типов данных, внешних процедур, используемых на уровне модуля, процедур обработки событий. Они хранятся в файлах, имеющих расширение frm. В модуле можно также ссылаться на другие формы и объекты данного приложения.
На четвертом этапе разрабатывается формат файлов хранения договоров.
Каждый договор сохраняется в отдельный файл типа aa-bb-cccc_xxx, где aa-день, bb-месяц, cccc-год создания договора, а xxx-имя организации, заключившей договор. Все файлы договор имеют расширение MGF и сохраняются в папке MGFiles.
Файл медиаплана представляет собой текстовой документ, где данные из приложения к договору сохраняются массивом и размещаются построчно.
Каждой строке строго соответствует определенная позиция договора.
На каждую новую позицию приложения к договору, в случае создания нового договора на основе имеющегося, добавляется четыре строки, номер позиции меняется.
Таблица 2.1 – Формат договора
№ строки | Реквизит договора |
1 | номер создаваемого договора |
2 | дата создания договора |
3 | наименование экрана |
4 | название организации |
5 | имя ролика с расширением |
6 | хронометраж ролика |
7 | ФИО исполнителя |
8 | ФИО заказчика |
9 | стоимость изготовления ролика |
10 | количество позиций размещения, n |
11 | дата начала первой позиции |
12 | дата окончания первой позиции |
13 | периодичность первой позиции |
14 | цена за секунду проката первой позиции |
15 | дата начала второй позиции |
… | ... |
Пример построчного размещения данных договора приведен в таблице 2.2:
Таблица 2.2 – Пример построчного размещения данных
5
04-24-2006
г. Бийск, пл. 9-го Января
fagot
fgt.avi
5
Трошин Е.Н.
ffgghj
111
2
12.03.2006
12.03.2006
5
0,5
12.03.2006
12.03.2006
5
1
На пятом этапе создается модуль программы. Объявляются глобальные переменные в модуле, программируются функции модуля. Глобальные переменные, описание и принципы работы функций модуля изложены в таблице 2.3.
На шестом этапе создаются текстовые файлы, которым присваивается расширение «.ini». Файлы Price.ini и Screen.ini хранят информацию настроек по умолчанию об адресах носителей (светодиодных экранов) и ценах за одну секунду проката видеоматериала на светодиодных экранах.
Тестирование программы на наличие ошибок проходит под наблюдением системного администратора. По окончании тестирования исходный файл компилируется в исполняющий двоичный файл, то есть создается независимый от среды исполнения файл (с расширением ехе), библиотека динамической компоновки (с расширением dll) и компоненты ActiveX (с расширением осх).
При необходимости создается инсталляционный модуль программы в виде самораспаковывающегося архива RAR с помощью программы WinRAR.
2.6.4 Описание функций модуля и принципы их работы
Программы Visual Basic хранятся в программных модулях, которые бывают трех видов: модуль формы, стандартный модуль и модуль класса.
Простое приложение, состоящее из одной формы, содержит, как правило, только модуль формы. По мере усложнения приложения повторяющиеся функции, выполняемые с нескольких модулей формы, можно выделить в отдельный программный код, который будет являться общим для всех. Такой программный код называется стандартным модулем.
Программа «Медиаплан» содержит модуль (код) формы и стандартный модуль.
Стандартные модули могут содержать объявления глобальных и локальных переменных, констант, типов, внешних процедур и процедур общего характера, доступных для других модулей данного приложения. Они хранятся в файлах с расширением bas.
Стандартный модуль программы «Медиаплан» использует процедуры Function
Процедуры Function в отличие от процедур sub могут возвращать значение в вызывающую процедуру. Синтаксис процедуры Function выглядит следующим образом:
[Private] [Public] [Static} Function имяПроцедуры (аргументы) [Astype]
операторы
End Function
Процедуры Function, как и переменные, имеют тип, задаваемый с помощью ключевого слова As. Если тип процедуры не задан, по умолчанию ей присваивается тип Variant. Тип процедуры определяет в свою очередь тип возвращаемого ею значения. Возвращаемое процедурой значение присваивается имени процедуры имяПроцедуры и может быть использовано в выражениях программного кода аналогично стандартным функциям Visual Basic.
Синтаксис модуля разрабатываемой программы имеет следующую структуру:
Option Explicit ‘объявляется список переменных
[Public] имяПеременной [Astype] ‘ объявляется переменная
..............................................................’ следующая переменная
[Public} Function имяПроцедуры (аргументы) [Astype]
операторы
End Function
…………………………………………’ следующая функция
Список используемых в программе глобальных переменных, объявленных в начале модуля и вызываемых командой Dim по мере их необходимости приведен в таблице 2.3:
Таблица 2.3 - Глобальные переменные модуля
Имя | Тип | Размер | Назначение |
PathProgramLow | String (строковая переменная) | 1 байт на символ | Хранит путь программы (без учета каталога с договорами) |
PathProgram | String (строковая переменная) | 1 байт на символ | Хранит путь программы + папка с договорами |
OnDay | Variant (универсальная; может хранить любые типы данных) | Не менее 16 байт | В процессе загрузки программы этой переменной приравнивается значение, равное одному дню. |
TrEditMode | Boolean (логический тип данных) | 2 байта | Триггер для определения режима редактирования договора |
allPos | Integer (Целочисленная переменная) | 2 байта | Кол-во позиций в создаваемом договоре |
numPos | Integer (Целочисленная переменная) | 2 байта | Номер активной позиции в создаваемом договоре |
TrVidAct | Integer (Целочисленная переменная) | 2 байта | Триггер для определения активного режима работы программы: 0-Просмотр, 1-Создать, 2-Поиск, 3-Настройки |
SelectedFile | String (строковая переменная) | 1 байт на символ | Хранит имя файла, выбранного в режиме Просмотра |
TrBitAct | Boolean (логический тип данных) | 2 байта | Триггер для определения нажатых кнопок в Главном меню |
MassView(11) | Variant (универсальная; может хранить любые типы данных) | Не менее 16 байт | Массив, в который заносятся данные из выбранного файла в режиме Просмотра |
Ниже приведены описания функций модуля программы и алгоритмы их работы и взаимодействия.
CreateMGF - функция создания договора. Функция служит, во-первых, для сохранения новых договоров в файл, во-вторых, для перезаписи редактируемых договоров.
Принцип работы:
- сначала идет проверка, заполнил ли пользователь все нужные поля формы, если есть пустые поля, то выводится диалоговое окно с текстом «Заполнены не все поля! Заполните оставшиеся поля и повторите процедуру», при этом функция прекращает работу;
- если все поля заполнены, и режим редактирования не выбран, то программа считывает с полей и с таблицы данные, создает новый файл с договором и записывает туда информацию. После этого функция завершает работу;
- если все поля заполнены и выбран режим редактирование, то программа выводит диалоговое окно с пояснениями и кнопками «Да», «Нет» и «Отмена». Если пользователь нажал «Отмена», то файл не создается и функция прекращает работу. Если нажата кнопка «Нет», то программа создает новый файл договора с текущей датой и дальше делает то, что описано в пункте 2. Если выбрана кнопка «Да», то программа сначала удаляет файл редактируемого договора, а затем создает файл с таким же именем и записывает туда все данные из полей и таблицы, после чего программа переходит в режим «Просмотра»;
Функция режима редактирования EditMGF активизируется тогда, когда пользователь выбрал в режиме Просмотра файл договора и нажал на кнопку «Правка».
Принцип работы:
- переходим в режим «Создать»;
- далее программа заносит в поля формы данные выделенного файла, причем эти данные она берет из массива MassView, который заполняется при работе функции ViewCode;
- очищаются данные таблицы, затем открывается файл редактируемого договора, из которого считываются нужные данные, после чего их заносят в таблицу;
- оставшиеся поля таблицы заполняются по формулам, на основе данных, взятых из файла;
- переставляем указатель позиций на крайнюю позицию, потом заносим в поля «Дата Начала», «Дата Окончания», «Периодичность» и «Цена за секунду» данные из крайней позиции;
- складываем суммы из всех позиций, затем в нижней строке таблицы выводим итоговую сумму;
- конец работы функции.
Функция скрытия всех элементов управления формы EraseAll скрывает все элементы управления на форме.
Функция реализации поиска FindAll предназначена для проведения поиска в режиме «Поиск» по одному из трех критериев.
Принцип работы:
- очищаем таблицу поиска;
- в зависимости от выбранного критерия поиска, программа по очереди считывает все файлы с договорами, сканирует в каждом из них нужную строку, где содержится данные, которые нужно найти;
- если программа нашла в каком-либо файле совпадение, то она выводит имя файла, где найдено совпадение, а также некоторые данные, вроде названия организации или имени ролика;
- конец работы функции.
FindCode - функция режима «Поиск».