Следующие процедуры в коде листинга 4.6 - FormCreate и FormClose. Это обработчики событий создания и закрытия формы. При создании формы переменной-функции Func присваивается значение F. В результате этого присваивания операторы модуля Equl, вызывающие функцию Func, в действительности будут вызывать описанную выше функцию F данного модуля.

Другая операция, выполняемая при создании формы - создание функцией AssignFile и открытие для записи функцией Rewrite файла протокола. В файл заносятся первые строки (см. листинг 4.5), содержащие, в частности, текущую дату и время. Дата и время определяются функцией Now и преобразуются в строку функцией DateTimeToStr. Последний оператор процедуры FormCreat задает свойству Modified компонента Memol значение true - модифицирован. Это требуется для того, чтобы при занесении в протокол результатов первого расчета программа решила бы, что текст задания был модифицирован, и занесла бы в протокол текст задания. Как мы увидим ниже при рассмотрении процедуры ARootExecute, занесение в протокол текста задачи происходит только в том случае, если Memol.Modified = true.

Операции при закрытии формы сводятся к занесению в файл протокола заключительного текста и к закрытию файла.

Следующая процедура в коде листинга 4.6 - RGMetodClick. Это обработчик щелчка на радиокнопках RGMetod. При переключении кнопок, задающих метод расчета, делаются видимыми или невидимыми окна редактирования EXmin, EXmax и ЕХО и соответствующие им метки LXmin, LXmax, LXO. Выбранный пользователем метод определяется по индексу RGMetod.Itemindex: если он меньше двух, значит выбран метод дихотомии или хорд, для которого надо сделать видимыми окна задания интервала поиска и невидимым окно задания начальной точки. Кроме того, для метода простых итераций (RGMetod.Itemindex = 2) делается недоступным окно задания погрешности невязки EDF.

Следующая процедура в листинге 4.6 - ARootExecute. Это основная процедура приложения, осуществляющая трансляцию заданных выражений и поиск корня. В начале этой процедуры осуществляется "зачистка" результатов предыдущих расчетов: стираются результаты прошлых вычислений, отображавшиеся в компонентах EX, EF, Liter и LNote, а также закрывается форма сообщений об ошибках, если ранее она была создана. Затем вызовом функции CreatePZ транслируется заданный текст описания уравнения (Memol.Text) и создается польская запись, по которой в дальнейшем вызываемая из функции F функция Calculate может вести расчет. Если в заданных в окне Memol выражениях обнаружены синтаксические ошибки, функция CreatePZ возвращает false. В этом случае создается методом Application.CreateForm форма сообщений об ошибках FErrors и ее список LBErrors типа TListBox заполняется строками из списка сообщений об ошибках ErrorList. Поскольку тип списка ErrorList - TStrings совпадает с типом свойства Items компонента TListBox, то перенос содержимого списка осуществляется всего одним оператором - методом Assign. После заполнения списка форма FErrors делается видимой, а процедура ARootExecute завершает работу оператором exit.


⇐ Предыдущая страница| |Следующая страница ⇒

Приемы программирования в Delphi на основе VCL



Новости за месяц

  • Май
    2020
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс