Смекни!
smekni.com

Изготовление печатей и штампов (стр. 7 из 9)

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

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

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

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

Если пользователь нажал кнопку "Загрузить", то программа отображает диалог загрузки рисунков. Поле строк заполняется текущими значениями внутренних переменных-путей к фотографиям для каждого типа. Если они равны пустой строке, то эта значение этой переменной не печатается. Если пользователь нажал кнопку "…", то программа отрывает диалог открытия файлов и передает управление ему. Если пользователь в этом диалоге нажал кнопку "Ок". То программа копирует имя файла из диалога в строку диалога загрузки файлов. Если же пользователь нажал "Отмена", то диалог просто закрывается, без сохранения изменений. Если пользователь нажал кнопку "Добавить" в диалоге загрузки фотографий, то программа пытается прочесть файл с фотографией и если ей это удается, то программа изменяет значение переменной, в соответствии с указанным типом фотографии. Если же файл с фотографией не открылся, то программа выдаст сообщение о том, что файл не может быть открыт. После этого обновляется содержание поля строк. Если пользователь нажимает кнопку "Очистить", то программа присваивает текущей переменной пустое значение. Если пользователь нажимает кнопку "Ок", то программа сохраняет сделанные изменения и закрывает диалог, если нажата кнопка "Отмена", то программа закрывает диалог без изменений.

Если в основном окне пользователь нажал кнопку "Передать в Word", то программа переходит к анализу данных. Составляется массив переменных размером равным количеству способов. Каждой переменной из массива присваивается значение равное 0. После этого происходить проверка, какие признаки указаны пользователем. Для этого программа просматривает все признаки. Если признак выбран (напротив его названия стоит "галочка"), то просматривается строка в таблице вывода, которая соответствует признаку. Если в ячейке этой строки находится число большее нуля, то к значению переменной соответствующей столбцу этой ячейки, прибавляется число, которое содержит эта ячейка. И так происходит, пока программа не переберет все признаки. Потом полученное значение каждой переменной делится на количество ячеек отличных от нуля в соответствующем столбце, если оно больше нуля. Из этих переменных выбирается та, которая имеет наибольшее значение. Определяется способ, который соответствует ей. Далее программа пытается запустить приложение Word. Если попытка не удалась, то программа выдает сообщение о том, что она не может найти приложение Word на данном компьютере. Далее программа выдает сообщение с названием способа, который получился на основе анализа исходных данных. Если пользователь нажал кнопку "Скопировать в буфер", то программа копирует в буфер обмена Windows название способа, который получен в результате анализа. Если же приложение Word найдено, то программа передает ему начальный текст, потом добавляет список всех указанных признаков и добавляет вывод – строку с названием способа. Потом активным становится окно Word.

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

Если пользователь выбрал пункт меню "Редактировать признак", то программа отображает диалог редактирования признаков. Основное поле этого диалога заполняется данными из таблицы вывода. Названия строк и столбцов заполняются из списков соответственно признаков и способов. Если название больше по длине чем место под него, то создается подсказка с полным названием признака или способа. Если пользователь указал мышью на название, то программа выводит подсказку. Если пользователь нажал на кнопку "Добавить способ", то программа выдает диалог со строкой для ввода названия. Если пользователь написал строку и нажал "Ок", то программа добавляет способ, если он нажал "Отмена", то закрывает диалог выбора названия. При добавлении программа проверяет, есть ли введенный способ уже в списке. Если есть, то программа выдает сообщение о том, что способ уже есть и спрашивает у пользователя стоит ли добавить еще один такой же способ. Если нет, то процедура добавления на этом заканчивается. Далее программа добавляет способ в список способов и создает дополнительный столбец в таблице. На этом процедура добавления заканчивается. Если пользователь нажал кнопку "Добавить признак", то программа действует также, только работа производится со списком всех признаков и в таблицу добавляется новая строка. Если пользователь нажал на правую кнопку мыши и указатель был на названии признака или способа, то программа выводит на экран контекстное меню. Если пользователь в нем выбрал "Удалить", то программа спрашивает, уверен ли пользователь в своем намеренье и при утвердительном ответе пользователя удаляет выбранный способ или признак из соответствующего списка. Затем удаляется соответствующая строка для признака или столбец для способа из таблицы вывода. Если же пользователь выбирает пункт меню "Изменить", то программа выдает диалог со строкой для ввода нового названия. И если пользователь нажимает в нем "Ок", то программа меняет название выбранного способа или признака на новое. Если пользователь нажимает одну из кнопок управления курсором, то программа пытается сдвинуть курсор в таблице в соответствующем направлении. Если новая позиция не выходит за приделы таблицы, то программа перерисовывает таблицу с новым положением курсора, иначе оставляет его на том же месте. Если пользователь нажал левую кнопку мыши и указатель попал на ячейку таблицы, то программа перемещает курсор туда. Если пользователь дважды щелкнул мышью на ячейке, то курсор переходит туда и программа делает эту ячейку доступной для редактирования. Тоже происходит, если пользователь нажимает кнопку "Enter", только редактируемой становится, та ячейка, на которую указывал курсор. Далее пользователь с помощью цифровых клавиш вводит число. Если он нажал "Enter" то программа считает, что ввод окончен и начинает оценивать, эту информацию. Если ввели не число, то программа выдает сообщение об ошибке ввода и вновь делает эту ячейку редактируемой. Если число находится вне диапазона от 0 до 100, то программа также выводит сообщение и переходит к редактированию ячейки. Если пользователь нажал кнопку "Отмена", то программа открывает файл с текущим набором правил и читает из него информацию, заменяя, ту, которая уже содержится в памяти. Сначала читаются названия признаков, способов потом читается таблица вывода. Таким образом внесенные изменения стираются. Если пользователь нажал кнопку "Ок", то программа должна записать сделанные изменения. Для этого делается попытка, открыть существующий файл. Если эта попытка не удалась, то программа пытается создать файл заново. Далее в открытый файл с начала записывается заголовок файла. Потом подряд названия признаков и способов. Далее составляется новая таблица вывода по данным таблицы, из диалога. Для этого данные таблицы из диалога перебираются справа налево, сверху вниз. Если встречается пустая ячейка, то в текущее место таблицы вывода заносится –1, иначе в таблицу вывода заносится число из таблицы в диалоге. После того, как все данные будут записаны, таблица вывода записывается в файл. Далее программа закрывает файл. Все данные остаются в памяти. Диалог закрывается.