Разработка программного продукта для расчета тепловых коэффициентов для тел с распределенными и сосредоточенными источниками энергии

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    417,17 Кб
  • Опубликовано:
    2015-06-22
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка программного продукта для расчета тепловых коэффициентов для тел с распределенными и сосредоточенными источниками энергии

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

Воронежский государственный технический университет

Кафедра конструирования и производства радиоаппаратуры










КУРСОВОЙ ПРОЕКТ

Расчетно-пояснительная записка

на тему «Разработка программного продукта для расчета тепловых коэффициентов для тел с распределенными и сосредоточенными источниками энергии»

Содержание

Введение

. Математические модели для расчета тепловых коэффициентов для тел с распределенными и сосредоточенными источниками энергии

1.1   Параллелепипед с равномерно распределенным источником тепла; граничные условия первого рода

1.2    Параллелепипед с равномерно распределенным источником тепла, грани которого находятся в состоянии теплообмена со средой

.3      Параллелепипед с источниками тепла, равномерно распределенными на двух противоположных гранях

2. Алгоритмы вычислений

.1 Параллелепипед с равномерно распределенным источником тепла; граничные условия первого рода

.2 Параллелепипед с равномерно распределенным источником тепла, грани которого находятся в состоянии теплообмена со средой

.3 Параллелепипед с источниками тепла, равномерно распределенными на двух противоположных гранях

. Структура и описание программ

. Руководство пользователю

.1 Описание окна ввода исходных данных

.2 Описание окна работы с графиком

Заключение

Приложение

Введение

Для сокращения времени расчетов температурных полей для тел с распределенными и сосредоточенными источниками энергии необходимо спроектировать три программных продукта для следующих условий:

параллелепипед с равномерно распределенным источником тепла; граничные условия первого рода;

параллелепипед с равномерно распределенным источником тепла, грани которого находятся в состоянии теплообмена со средой;

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

Это также необходимо для ознакомления с законами распределения тепла в данных телах и получения практических навыков для теплофизического проектирования модулей РЭС.

1. Математические модели для расчета тепловых коэффициентов для тел с распределенными и сосредоточенными источниками энергии

.1 Параллелепипед с равномерно распределенным источником тепла; граничные условия первого рода

В анизотропном параллелепипеде, размеры которого 21Х, 21у, 2/z, а коэффициенты теплопроводности в направлениях осей х, у, z равны Кх, Ку, Кг, равномерно распределен источник тепла с удельной мощностью W (рис. 1). На всех шести гранях параллелепипеда температура одинакова и равна ts.

Теплообмен со средой (температура среды tс) происходит по закону Ньютона, средний коэффициент теплообмена равен ее. Если температуры граней тела одинаковы, то а связан с коэффициентами теплообмена аx, ау, аz на гранях х = ± 1Х, у = ± 1у и z = ± lz зависимостью

   (1)

где Sx, Sy, Sz - площади поверхностей граней.

Известно, что если выполняются следующие условия: а) тело имеет различные коэффициенты теплопроводности Кх, Ку Кz в трех взаимно перпендикулярных направлениях, принятых за оси х, у, z; б) тело вообще не ограничено, либо ограничено плоскостями, перпендикулярными осям х, у, z, то уравнение теплопроводности, для такого класса анизотропных тел имеет вид

   (2)

где W - объемная плотность источников тепла.

Так как на всех шести гранях параллелепипеда температура по условию задачи постоянна, то удобно в дальнейшем отсчитывать температуру от значения ts, т. е. рассматривать разность температур (t - ts). Тогда условия на гранях примут вид представленный в уравнение (3).

Итак, введением разности (t - ts) вместо t удалось для поставленной задачи граничные условия третьего рода свести к условиям первого рода, что существенно упростило задачу.

Средняя поверхностная температура параллелепипеда

    (3)

Рисунок 1. - Параллелепипед с внутренним источником тепла.

Нетрудно заметить, что 21Х, 21у, 2/z равны соответственно 211, 212, 2/3 .

Если координатные оси расположены так, как указано на рис. 1, то на границах параллелепипеда справедливы условия:

 (4)

Решение системы уравнений (2) - (4) методом Г. А. Гринберга приводит к следующему выражению для температурного поля параллелепипеда.

 (5)

где

  (6)

Нетрудно видеть, что при х = у = z = 0 и x = 2/х, у = 2/2, z = 2/3 выражение (5) равно нулю, как это и следовало ожидать. Найдем температуру в центре параллелепипеда:

  (7)

  (8)

.2 Параллелепипед с равномерно распределенным источником тепла, грани которого находятся в состоянии теплообмена со средой

Температурное поле такого параллелепипеда (рисунок 2) также описывается уравнением (2).

Рис. 2. Параллелепипед с равномерно распределенным источником энергии.

Граничные условия запишем для случая попарно симметричных условий теплообмена на противоположных гранях:

  (9)

Приближенное решение системы уравнений (2) и (9) имеет вид:

 (10)

где

 (11)

Формулы (10), (11) в отличие от (5), (6) позволяют найти температурное поле во всех точках параллелепипеда, в том числе и на его гранях, при любых значениях коэффициентов теплообмена.

Значения тепловых коэффициентов Fjc для любой точки j из формулы средней поверхностной температуры параллелепипеда равны:

  (12)

что позволяет из формул (5), (6), (10), (11) найти выражения для тепловых коэффициентов.

1.3 Параллелепипед с источниками тепла, равномерно распределенными на двух противоположных гранях

Рассматривается, как и в предыдущей задаче анизотропный параллелепипед с источниками тепла, равномерно распределенными по поверхностям граней у = ± 1у.

Математическая формулировка задачи:


где qy - удельная мощность поверхностного источника энергии.

Приближенное решение задачи можно представить в виде:

 (14)

 (15)

Значения еy, ez, Bx, By, Bz определяются соотношениями (11).

программа параллелепипед теплообмен грань

2. Алгоритмы вычислений

.1 Параллелепипед с равномерно распределенным источником тепла; граничные условия первого рода

Для решения этой задачи необходимо выразить t(x,y,z) из формулы (5).

Геометрические размеры исследуемого параллелепипеда (рис. 1) нам известны. Удельная мощность источника тепла равна W. Коэффициент теплопроводности материала λ и коэффициент теплоотдачи поверхности тела α нам известны. Для вычисления средней поверхностной температуры ts воспользуемся формулой (3).

.2 Параллелепипед с равномерно распределенным источником тепла, грани которого находятся в состоянии теплообмена со средой

Для решения второй задачи необходимо воспользоваться формулой (10) выразив из нее t(x,y,z). Неизвестные значения находим из системы (11). Геометрические размеры исследуемого параллелепипеда (рис. 2) нам известны. Удельная мощность источника тепла равна W. Коэффициент теплопроводности материала λ и коэффициент теплоотдачи поверхности тела α вдоль осей x, y, z нам известны. Для вычисления средней поверхностной температуры ts воспользуемся формулой (3).

.3 Параллелепипед с источниками тепла, равномерно распределенными на двух противоположных гранях

В этой задаче исследуем параллелепипед (рис. 2) с источником тепла, равномерно распределенным по поверхностям граней вдоль оси y. Для решения этой задачи воспользуемся формулой (14). Все неизвестные значения находим из систем (15) и (11). Геометрические размеры исследуемого параллелепипеда нам известны. Мощность поверхностного источника тепла равна q. Коэффициент теплопроводности материала λ и коэффициент теплоотдачи поверхности тела α вдоль осей x, y, z нам известны. Для вычисления средней поверхностной температуры ts воспользуемся формулой (3).

3. Структура и описание программ

Расчет значений производился в соответствии с п.п. 2.1, 2.2, 2.3. Листинг программ представлен в приложениях. Приложение 1 - Листинг основного окна ввода данных программы п. 2.1. Приложение 2 - Листинг основного окна ввода данных программы п. 2.2. Приложение 3 - Листинг основного окна ввода данных программы п. 2.3. Приложение 4 - Листинг программы работы с графиком и курсором. Для решения этих задач применили стандартные функции и операторы языка программирования Object Pascal.

Для предотвращения ввода не корректных данных в окна текстовых полей (Edit) воспользовались рядом условий и ограничений, поэтому в поля нельзя вводить ничего кроме чисел и знака ' , ' для написания дробных величин, а также знака ' - ' для отрицательных чисел, это было осуществлено с помощью процедуры «KeyPress» на текстовые поля Edit. Основные вычисления по необходимым формулам производятся при нажатии на кнопки «Температура поля в точке с координатами x, y, z», «График зависимости t от x», «График зависимости t от y» и «График зависимости t от z», также при нажатии трех последних кнопок вызываются процедуры BeginPlot, AddPoint, необходимые для построения графика зависимости. Одновременно при нажатии на кнопки проверяется заполнены ли все поля и не выходят ли координаты исследуемых точек за пределы параллелепипеда. Если данные ошибки имеют место, то программно предлагается устранить их и вычисления не производятся. Эти подходы сводят к минимуму возникновение различных ошибок в ходе работы программы.

Подробнее рассмотрим работу модуля работы с графиками, это наиболее сложный и объемный раздел. Основные процедуры модуля BeginPlot, AddPoint, NullPoint, они обеспечивают занесение точек в график.

Процедура BeginPlot подготавливает рисование нового графика, уничтожая информацию о прежнем графике. Сначала серия Seriesl очищается методом Clear от данных прежнего графика. Затем функцией SetLength обнуляется массив ABad, содержащий информацию об областях недопустимых значений прежнего графика. Сбрасывается в false глобальная переменная Bad, которая, как это будет видно далее, показывает, является ли предыдущая точка графика недопустимой. Значение false соответствует тому, что предыдущая точка допустимая. Последний оператор процедуры восстанавливает методом UndoZoom масштаб, если он был изменен пользователем при работе с предыдущим графиком.

Процедура AddPoint добавляет в график новую точку цвета Color с координатами X и Y. Но прежде, чем добавлять точку, проверяется, является ли Y конечным численным значением. Для этого проверяется, не равно ли значение Y, переведенное в строку, "NAN", "-NAN", "INF" или "-INF". Это значения, которые могут возвращать функции Delphi. Если Y не числовая или бесконечная величина, то вызывается рассмотренная далее процедура NullPoint, формирующая область недопустимых значений. А если Y - нормальное число, то точка заносится в серию Series1 методом AddXY и Bad устанавливается в false, сигнализируя, что точка допустимая.

Обращение к процедуре NullPoint происходит, если при аргументе X не удалось вычислить функцию. Тогда дальнейшие действия зависят от значения переменной Bad. Если Bad = false (предыдущая точка была допустимой), то размер массива ABad увеличивается на 2 и значение X записывается в него дважды - как начальная и конечная точка новой области недопустимых значений. А если Bad = true (предыдущая точка тоже была недопустимой), то значение X записывается в конец массива ABad как конечная точка текущей области недопустимых значений. В конце процедуры Bad устанавливается true, свидетельствуя о том, что текущая точка недопустимая.

Теперь рассмотрим организацию работы с курсорами графика. Отметим, что в модуле введены глобальные переменные IndCursl и IndCurs2, хранящие индексы точек в массиве отображаемых данных, соответствующие координатам первого и второго курсора графика. Кроме того введена глобальная переменная HCursor, хранящая текущий шаг сдвига курсора.

Процедура ACursMouseExecute переключает режим отображения координат курсора мыши. Она срабатывает при выборе пользователем команды меню Курсор | Курсор мыши. Первый оператор этой процедуры переключает действие ACursMouse, а вместе с ним и соответствующий раздел меню, между включенным и не включенным значениями. Если действие включилось, то делается видимым окно отображения координат курсора FCoord и свойство Cursor объекта Seriesl задается равным crCross. Последнее означает, что когда курсор мыши будет проходить над кривой графика, он будет изменять свой обычный вид - стрелку на крест. Тем самым можно будет знать, когда координаты курсора точно совпадают с координатами графика.

Если действие ACursMouse выключилось, то курсору возвращается его значение по умолчанию. Далее проверяется, включен ли режим курсоров графика. Если нет, то форма FCoord делается невидимой. Если же режим курсоров графика включен, то в окне FCoord стираются координаты курсора мыши.

Теперь рассмотрим процедуру ChartlMouseMove - обработчик событий OnMouseMove, происходящих при перемещении курсора над компонентом Chart. Если режим отображения координат курсора мыши включен (это проверяется по значению свойства Seriesl.Cursor), то требуется отображать координаты курсора в окне FCoord. Для этого методом GetCursorValues определяются координаты курсора в системе координат графика: XData и YData. А затем эти координаты отображаются в соответствующих метках окна формы FCoord.

Включение и выключение курсоров графиков осуществляется процедурой ACursorsExecute. Первый оператор этой процедуры включает или выключает курсоры графика. Если в результате курсоры включаются, то пиктограмма, отображаемая в соответствующем разделе меню и на соответствующей быстрой кнопке, изменяется с '+' на '-'. Индексы IndCursl и IndCurs2 сбрасываются на нуль, т.е. курсоры устанавливаются на первую точку графика. Затем следует вызов процедуры SetCursor, определяющей координаты курсоров и рисующей курсоры. После этого вызывается процедура WriteYalue, которая отображает в окне FCoord координаты курсоров. Если в результате выполнения первого оператора процедуры ACursorsExecute курсоры графика выключились, то пиктограмма, отображаемая в соответствующем разделе меню и на соответствующей быстрой кнопке, изменяется с '-' на '+'. Далее, если режим курсора мыши не включен, форма FCoord делается невидимой. Если же режим курсора мыши включен, то в окне координат стираются значения, относящиеся к координатам графика.

Теперь рассмотрим вспомогательную процедуру SetCursor, которая вызывается, в частности, из процедуры ACursorsExecute и из ряда других процедур. Назначение этой процедуры - определить координаты курсоров графика и нарисовать (или стереть) их изображение на экране.

Начинается процедура с установки режима рисования. Дело в том, что курсоры рисуются пером Pen на канве Canvas компонента Chart 1. При перемещении курсора надо сначала стереть прежнее изображение курсора, а затем нарисовать его в новом месте. Подобные операции легко осуществляются в режиме пера pmNotXor. В этом режиме повторное рисование фигуры на том же месте, где она была нарисована ранее, стирает прежнее изображение. В конце процедуры восстанавливается запомненный режим рисования пера.

Вторая вспомогательная процедура TFPlot. Write Value отображает координаты курсоров в окне FCoord. В начале этой процедуры методами Seriesl.XValue и Seriesl.YValue определяются координаты курсоров в системе координатных осей графика. Затем эти значения функцией FloatToStrF отображаются в соответствующих метках формы FCoord с точностью 7 значащих цифр.

Теперь обратимся к процедуре FormKeyDown. Это обработчик события ОпKeyDown формы, наступающего при нажатии пользователем какой-нибудь клавиши. Все операции выполняются только в случае, если включен режим курсоров графика (ACursors.Checked = true). Если пользователем нажата клавиша Shift (проверяется условием ssShift in Shift), то работа идет со вторым курсором. В противном случае работа идет с первым курсором. Индекс курсора, с которым идет работа, присваивается локальной переменной IndNew.

Далее анализируется нажатая пользователем клавиша. Если нажата клавиша со стрелкой влево (Key = VK_Left), то индекс курсора уменьшается функцией Dec на величину шага HCursor. Если нажата клавиша со стрелкой вправо (Key = VK_Right), то индекс курсора увеличивается функцией Inc на величину шага HCursor. При нажатых клавишах Ноmе и End индекс соответственно устанавливается на начало или конец графика.

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

Процедуры AMaxExecute и AMinExecute осуществляют расчет максимума и минимума отображенной на графике функции. Зрительно для пользователя это сводится к перемещению первого курсора соответственно в точку максимального или минимального значения. Поэтому сначала вызовом процедуры SetCursor стираются прежние изображения курсоров, затем по массиву Seriesl.YValues рассчитывается максимальное или минимальное значения графика, индекс первого курсора IndCursl задается равным индексу найденной точки, после чего курсоры рисуются в новой позиции.

Процедура ACalcExecute осуществляет вызов стандартной программ Windows «Калькулятор» функцией ShellExecute.

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

Процедуры ACopyBMPExecute, ACopyWMFExecute и ACopyEMFExecute соответствующими методами компонента копируют график в буфер обмена Clipboard в различных форматах. Из Clipboard эту копию может взять любая программа, например, Word.

Процедура APrintPExecut является обработчиком сразу двух действий: печати графика в книжной и альбомной ориентации. Вызов стандартного диалога печати позволяет пользователю выбрать принтер и число печатаемых копий, А затем одним из двух методов Chartl.PrintPortrait или Chartl.PrintLandscape (в зависимости от того, какое действие вызвало процедуру, т.е. от значения параметра Sender) осуществляется печать графика.

Процедура AExitExecute завершает приложение методом Application.Terminate. Процедура ChartlDblClick является обработчиком двойного щелчка. Она восстанавливает исходный масштаб графика, если он был изменен пользователем. Процедура AHelpExecute вызывает справку. Процедура FormClose является обработчиком события OnClose формы. Она закрывает окно координат, если оно было открыто.

Процедура FormCreate задает свойству Order массива аргументов серии Seriesl значение loNone. Это обеспечивает отсутствие упорядочивания точек и обеспечивает возможность рисования графиков многозначных функций.

4. Руководство пользователю

.1 Описание окна ввода исходных данных

Окно содержит текстовые поля для ввода исходных данных и кнопки для расчета температуры в конкретной точке или для перехода в окно работы с графиком.

Ввод дробных чисел осуществляется через запятую, а не через точку. Переход между окнами ввода и кнопками можно осуществлять с помощью клавиши "Tab", обратное перемещение "Shift+Tab".

Для работы с программой необходимо ввести требуемые данные в соответствующие поля. Размерность ввода указана рядом с полем ввода. Ввод температуры осуществляется в соответствии с заданием или в градусах Цельсия, или в градусах Кельвина, соответственно результат будет представлен в той размерности которую Вы выберите.

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

.2 Описание окна работы с графиком

Окно содержит панель, в которой отображается график, главное меню и инструментальную панель.

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

Для восстановления нормального изображения можно выполнить команду Правка | Перерисовать или нажать соответствующую быструю кнопку (шестая справа) на инструментальной панели.

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

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

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

В меню Курсор имеется два раздела: Курсор мыши и Курсоры графика. Второй из этих разделов продублирован "горячими" клавишами Ctrl-C и быстрой кнопкой на инструментальной панели (пятой справа на приведенных ранее рисунках).

При выборе любого из этих разделов открывается окно координат курсоров. Верхняя строка в этом окне заполнена, если включена команда Курсор мыши. Тогда при перемещении курсора мыши в поле графика в этой верхней строке отображаются координаты X и Y курсора, соответствующие координатным осям графика. В момент, когда курсор мыши проходит точно над кривой, изображенной на графике, изменяется вид курсора - вместо стрелки появляется крест. Таким образом, команда Курсор мыши позволяет быстро (но приблизительно) определить координаты характерных точек графика.

Если выполнена команда Курсоры графика, то в окне координат заполняются строки 1-ый курсор, 2-ой курсор, Разность. Одновременно на графике появляются два курсора в виде тонких линий, пересекающих все поле графика. В первый момент координата X обоих курсоров равна начальной координате. Если пользователь нажимает на клавиатуре клавишу со стрелкой вправо, первый курсор будет перемещаться вправо, причем будет точно отслеживать кривую графика. Соответственно в строке 1-ый курсор окна координат будут отображаться координаты той точки графика, в которой в данный момент расположен курсор. При нажатии клавиши со стрелкой влево курсор будет перемещаться по кривой влево. Если пользователь нажмет соответствующую клавишу со стрелкой и не будет ее отпускать, то движение курсора вдоль кривой будет со временем ускоряться. Это позволяет быстро подвести курсор к той области графика, которая интересует пользователя. А затем однократными нажатиями на клавишу со стрелкой можно установить курсор точно в требуемую позицию.

Нажатие клавиш Home или End переводит курсор в соответственно в начальную или конечную точку графика.

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

При измерениях на графиках в ряде случаев пользователю желательно произвести какие-то вычисления. Поэтому в окно графиков встроен вызов программы Windows "Калькулятор". Вызов осуществляется командой Функции | Калькулятор или соответствующей быстрой кнопкой на инструментальной панели (вторая справа).

Часто при исследовании графиков надо найти минимальное и максимальное значение кривой. Эти операции осуществляются командами Функции | Максимум и Функции | Минимум или соответствующими быстрыми кнопками со стрелками (третья и четвертая справа). При выборе этих команд открывается окно координат курсоров и первый курсор автоматически перемещается соответственно в точки минимума или максимума.

Команды Файл | Сохранить как .BMP, Файл | Сохранить как .WMF, Файл | Сохранить как .EMF и соответствующие им быстрые кнопки (три слева на инструментальной панели) сохраняют график в файлах форматов соответственно .bmp, .wmf (метафайл) и .emf (метафайл Enhanced WMF). При выборе этих команд открывается стандартное окно сохранения файла, в котором пользователь может задать имя файла и каталог.

Команды Файл | Печать книги (четвертая слева быстрая кнопка) и Файл | Печать альбома позволяют вывести график на принтер соответственно при книжной (вертикальной) или альбомной (горизонтальной) ориентации страницы.

Команды Правка | Копировать | Битовая матрица (BMP), Правка | Копировать | Метафайл WMF, Правка | Копировать | Метафайл EMF копируют в соответствующих форматах график в буфер обмена Clipboard, откуда его можно заимствовать в другое приложение, например, в документ Word.

Заключение

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

В третей задаче источник тепла равномерно распределен по поверхности грани y. Реализовать задачу распределения источника тепла по другим граням оказалось невыполнимым по формулам приведенным в [1].

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

Приложение 1

unit Unit1;, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,, Buttons, TeEngine, Series, ExtCtrls, TeeProcs, Chart,, ImgList, ActnList, Menus, ComCtrls, ToolWin, jpeg;= class(TForm)

…BitBtn1Click(Sender: TObject);Edit4Change(Sender: TObject);BitBtn2Click(Sender: TObject);BitBtn3Click(Sender: TObject);BitBtn4Click(Sender: TObject);FormShow(Sender: TObject);N1Click(Sender: TObject);Edit1KeyPress(Sender: TObject; var Key: Char);Edit10KeyPress(Sender: TObject; var Key: Char);

{ Private declarations }

{$R *.DFM}TForm1.BitBtn1Click(Sender: TObject);

// кнопка «График зависимости t от x»

if (Edit1.text='') or (Edit2.text='') or (Edit3.text='') or (Edit4.text='')(Edit5.text='') or (Edit7.text='') or (Edit8.text='') or (Edit9.text='')(Edit10.text='')then('Заполните все поля формы')(strtofloat(Edit7.text)<0) or (strtofloat(Edit7.text)>strtofloat(Edit2.text)) or

(strtofloat(Edit8.text)<0) or (strtofloat(Edit8.text)>strtofloat(Edit3.text)) then

ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')

else:=strtofloat(Edit1.text)/2;:=strtofloat(Edit2.text)/2;:=strtofloat(Edit3.text)/2;:=strtofloat(Edit4.text);:=(strtofloat(Edit4.text))/(8*l1*l2*l3);:=strtofloat(Edit5.text);:=strtofloat(Edit9.text);:=strtofloat(Edit10.text);:=strtofloat(Edit7.text);:=strtofloat(Edit8.text);:=2*2*l1*2*l2+2*2*l3*2*l2+2*2*l3*2*l1;:=(P+AL*tc*S)/(AL*S);:=0; x:=0;.BeginPlot;:=l1*2;:=maximal/1000;i:=1 to 1000 do:=0;:=(64*W*l3*l3)/(3.14*3.14*3.14*3.14*LA);

// Вычисление основной формулы

for n:=1 to 20 do

beginm:=1 to 20 do:=t2+(sin((2*n-1)*3.14*x/(2*l1))*sin((2*m-1)*3.14*y/(2*l2))/

((2*n-1)*(2*m-1)*

((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+

(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2)))*

(2*l3/3.14)*(2*l3/3.14)))*

(1-(exp(sqrt(((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2))))*(l3-z))+(-sqrt(((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2))))*(l3-z)))/

(exp(sqrt(((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2))))*l3)+(-sqrt(((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2))))*l3)));;;:=t1*t2+ts;.AddPoint(x,t,clRed);:=x+h;;.Chart1.Title.Text.Clear;

FPlot.Chart1.Title.Text.Add('График зависимости температуры от координаты X');

FPlot.Show;.LX.Caption:='X';;;;TForm1.Edit4Change(Sender: TObject);(Edit1.text<>'') and (Edit2.text<>'') and (Edit3.text<>'') and (Edit4.text<>'') then.Caption:=floattostr(round(strtofloat(Edit4.Text)/(strtofloat(Edit1.Text)*strtofloat(Edit2.Text)*strtofloat(Edit3.Text))*1000)/1000);;TForm1.BitBtn2Click(Sender: TObject);

// кнопка «График зависимости t от y»

if (Edit1.text='') or (Edit2.text='') or (Edit3.text='') or (Edit4.text='')(Edit5.text='') or (Edit6.text='') or (Edit8.text='') or (Edit9.text='')(Edit10.text='')then('Заполните все поля формы')(strtofloat(Edit6.text)<0) or (strtofloat(Edit6.text)>strtofloat(Edit1.text)) or

(strtofloat(Edit8.text)<0) or (strtofloat(Edit8.text)>strtofloat(Edit3.text)) then

ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')

else:=strtofloat(Edit1.text)/2;:=strtofloat(Edit2.text)/2;:=strtofloat(Edit3.text)/2;:=strtofloat(Edit4.text);:=(strtofloat(Edit4.text))/(8*l1*l2*l3);:=strtofloat(Edit5.text);:=strtofloat(Edit9.text);:=strtofloat(Edit10.text);:=strtofloat(Edit6.text);:=strtofloat(Edit8.text);:=2*2*l1*2*l2+2*2*l3*2*l2+2*2*l3*2*l1;:=(P+AL*tc*S)/(AL*S);:=0; y:=0;.BeginPlot;:=l2*2;:=maximal/1000;i:=0 to 1000 do:=0;:=(64*W*l3*l3)/(3.14*3.14*3.14*3.14*LA);n:=1 to 20 dom:=1 to 20 do:=t2+(sin((2*n-1)*3.14*x/(2*l1))*sin((2*m-1)*3.14*y/(2*l2))/

((2*n-1)*(2*m-1)*

((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+

(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2)))*

(2*l3/3.14)*(2*l3/3.14)))*

(1-(exp(sqrt(((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2))))*(l3-z))+(-sqrt(((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2))))*(l3-z)))/

(exp(sqrt(((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2))))*l3)+(-sqrt(((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2))))*l3)));;;:=t1*t2+ts;.AddPoint(y,t,clRed);:=y+h;;.Chart1.Title.Text.Clear;

FPlot.Chart1.Title.Text.Add('График зависимости температуры от координаты Y');

FPlot.Show;.LX.Caption:='Y';;;;TForm1.BitBtn3Click(Sender: TObject);

// кнопка «График зависимости t от z»

if (Edit1.text='') or (Edit2.text='') or (Edit3.text='') or (Edit4.text='')(Edit5.text='') or (Edit7.text='') or (Edit6.text='') or (Edit9.text='')(Edit10.text='')then('Заполните все поля формы')(strtofloat(Edit7.text)<0) or (strtofloat(Edit7.text)>strtofloat(Edit2.text)) or

(strtofloat(Edit6.text)<0) or (strtofloat(Edit6.text)>strtofloat(Edit1.text)) then

ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')

else:=strtofloat(Edit1.text)/2;:=strtofloat(Edit2.text)/2;:=strtofloat(Edit3.text)/2;:=strtofloat(Edit4.text);:=(strtofloat(Edit4.text))/(8*l1*l2*l3);:=strtofloat(Edit5.text);:=strtofloat(Edit9.text);:=strtofloat(Edit10.text);:=strtofloat(Edit7.text);:=strtofloat(Edit6.text);:=2*2*l1*2*l2+2*2*l3*2*l2+2*2*l3*2*l1;:=(P+AL*tc*S)/(AL*S);:=0; z:=0;.BeginPlot;:=l3*2;:=maximal/1000;i:=0 to 1000 do:=0;:=(64*W*l3*l3)/(3.14*3.14*3.14*3.14*LA);n:=1 to 20 dom:=1 to 20 do:=t2+(sin((2*n-1)*3.14*x/(2*l1))*sin((2*m-1)*3.14*y/(2*l2))/

((2*n-1)*(2*m-1)*

((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+

(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2)))*

(2*l3/3.14)*(2*l3/3.14)))*

(1-(exp(sqrt(((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2))))*(l3-z))+(-sqrt(((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2))))*(l3-z)))/

(exp(sqrt(((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2))))*l3)+(-sqrt(((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2))))*l3)));;;:=t1*t2+ts;.AddPoint(z,t,clRed);:=z+h;;.Chart1.Title.Text.Clear;

FPlot.Chart1.Title.Text.Add('График зависимости температуры от координаты Z');

FPlot.Show;.LX.Caption:='Z';;;;TForm1.BitBtn4Click(Sender: TObject);

// кнопка «Температура поля в точке с координатами x, y, z.»

if (Edit1.text='') or (Edit2.text='') or (Edit3.text='') or (Edit4.text='')(Edit5.text='') or (Edit7.text='') or (Edit8.text='') or (Edit9.text='')(Edit10.text='') or (Edit6.text='') then

ShowMessage('Заполните все поля формы')

else(strtofloat(Edit6.text)<0) or (strtofloat(Edit6.text)>strtofloat(Edit1.text)) or

(strtofloat(Edit8.text)<0) or (strtofloat(Edit8.text)>strtofloat(Edit3.text)) or

(strtofloat(Edit7.text)<0) or (strtofloat(Edit7.text)>strtofloat(Edit2.text)) then

ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')

else:=strtofloat(Edit1.text)/2;:=strtofloat(Edit2.text)/2;:=strtofloat(Edit3.text)/2;:=strtofloat(Edit4.text);:=(strtofloat(Edit4.text))/(8*l1*l2*l3);:=strtofloat(Edit5.text);:=strtofloat(Edit9.text);:=strtofloat(Edit10.text);:=strtofloat(Edit6.text);:=strtofloat(Edit7.text);:=strtofloat(Edit8.text);:=2*2*l1*2*l2+2*2*l3*2*l2+2*2*l3*2*l1;:=(P+AL*tc*S)/(AL*S);:=0;:=0;:=(64*W*l3*l3)/(3.14*3.14*3.14*3.14*LA);n:=1 to 20 dom:=1 to 20 do:=t2+(sin((2*n-1)*3.14*x/(2*l1))*sin((2*m-1)*3.14*y/(2*l2))/

((2*n-1)*(2*m-1)*

((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+

(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2)))*

(2*l3/3.14)*(2*l3/3.14)))*

(1-(exp(sqrt(((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2))))*(l3-z))+(-sqrt(((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2))))*(l3-z)))/

(exp(sqrt(((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2))))*l3)+(-sqrt(((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2))))*l3)));;;:=t1*t2+ts;:=trunc(t*1000)/1000;.Caption:=floattostr(t);.Caption:=floattostr(trunc(ts*1000)/1000);;;;TForm1.FormShow(Sender: TObject);

begin('Для вызова помощи в программе, нажмите F1 или правую кнопку мыши');

// Переключение на русскую раскладку клавиатуры

LoadKeyboardLayout('00000419',KLF_ACTIVATE);

end;TForm1.N1Click(Sender: TObject);

// вызов справки.Show;;TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

// разрешение ввода только цифрnot (key in ['0'..'9', ',', #8]) then:=#0;;;TForm1.Edit10KeyPress(Sender: TObject; var Key: Char);

// разрешение ввода только цифр и знака «-»

if not (key in ['0'..'9', ',','-', #8]) then:=#0;;;.

Приложение 2

unit Unit1;, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,, Buttons, TeEngine, Series, ExtCtrls, TeeProcs, Chart,, ImgList, ActnList, Menus, ComCtrls, ToolWin, jpeg;= class(TForm)

….BitBtn1Click(Sender: TObject);Edit4Change(Sender: TObject);BitBtn2Click(Sender: TObject);BitBtn3Click(Sender: TObject);BitBtn4Click(Sender: TObject);N1Click(Sender: TObject);FormShow(Sender: TObject);Edit1KeyPress(Sender: TObject; var Key: Char);Edit10KeyPress(Sender: TObject; var Key: Char);

{ Private declarations }

{ Public declarations };: TForm1;,W,lz,ly,lx,LAx,LAy,LAz,x,y,z,h,maximal,ALx,ALy,ALz,tc,P,m: real;,Ez,px,py,Bx,By,Bz,KSIy,KSIz: real;: integer;UPlot, UCoord, Unit2;

begin

// проверка првильности ввода координат точек

if (strtofloat(Edit7.text)<(-1/2)*strtofloat(Edit2.text)) or (strtofloat(Edit7.text)>(1/2)*strtofloat(Edit2.text)) or

(strtofloat(Edit8.text)<(-1/2)*strtofloat(Edit3.text)) or (strtofloat(Edit8.text)>(1/2)*strtofloat(Edit3.text)) then

ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')

else:=strtofloat(Edit1.text)/2;:=strtofloat(Edit2.text)/2;:=strtofloat(Edit3.text)/2;:=strtofloat(Edit4.text);:=(strtofloat(Edit4.text))/(8*lx*ly*lz);:=strtofloat(Edit5.text);:=strtofloat(Edit11.text);:=strtofloat(Edit12.text);:=strtofloat(Edit9.text);:=strtofloat(Edit13.text);:=strtofloat(Edit14.text);:=strtofloat(Edit10.text);:=strtofloat(Edit7.text);:=strtofloat(Edit8.text);:=-lx;:=(lx/lz)*sqrt(LAz/LAx);:=(lx/ly)*sqrt(LAy/LAx);:=ALx*lx/LAx;:=ALy*ly/LAy;:=ALz*lz/LAz;:=sqrt((Ez*Ez/(Ey*Ey))*Bz/(1+0.5*Bz));:=(py*py*(exp(py)-exp(-py))/(exp(py)+exp(-py)))/(py-(exp(py)-exp(-py))/(exp(py)+exp(-py)));:=1/(1+By/m);:=1/(1+Bz/3);:=sqrt(Ey*Ey*By*KSIy+Ez*Ez*Bz*KSIz);.BeginPlot;:=2*lx/1000;i:=1 to 1000 do:=0;:=W*lx*lx/(2*Ez*Ez*LAx)*

(1-(exp(px*x/lx)+exp(-px*x/lx))/

(exp(px)+exp(-px)+(px/Bx)*(exp(px)-exp(-px))))*

(1-(exp(py*y/ly)+exp(-py*y/ly))/

(exp(py)+exp(-py)+(py/By)*(exp(py)-exp(-py))))*

(1+2/Bz-z*z/(lz*lz))+tc;.AddPoint(x,t,clRed);:=x+h;;.Chart1.Title.Text.Clear;

FPlot.Chart1.Title.Text.Add('График зависимости температуры от координаты X');

FPlot.Show;.LX.Caption:='X';;;;TForm1.Edit4Change(Sender: TObject);(Edit1.text<>'') and (Edit2.text<>'') and (Edit3.text<>'') and (Edit4.text<>'') then.Caption:=floattostr(round(strtofloat(Edit4.Text)/(strtofloat(Edit1.Text)*strtofloat(Edit2.Text)*strtofloat(Edit3.Text))*1000)/1000);;TForm1.BitBtn2Click(Sender: TObject);(Edit1.text='') or (Edit2.text='') or (Edit3.text='') or (Edit4.text='')(Edit5.text='') or (Edit6.text='') or (Edit8.text='') or (Edit9.text='')(Edit10.text='') or (Edit11.text='') or (Edit12.text='') or (Edit13.text='')(Edit14.text='') then('Заполните все поля формы')(strtofloat(Edit6.text)<(-1/2)*strtofloat(Edit1.text)) or (strtofloat(Edit6.text)>(1/2)*strtofloat(Edit1.text)) or

(strtofloat(Edit8.text)<(-1/2)*strtofloat(Edit3.text)) or (strtofloat(Edit8.text)>(1/2)*strtofloat(Edit3.text)) then

ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')

else:=strtofloat(Edit1.text)/2;:=strtofloat(Edit2.text)/2;:=strtofloat(Edit3.text)/2;:=strtofloat(Edit4.text);:=(strtofloat(Edit4.text))/(8*lx*ly*lz);:=strtofloat(Edit5.text);:=strtofloat(Edit11.text);:=strtofloat(Edit12.text);:=strtofloat(Edit9.text);:=strtofloat(Edit13.text);:=strtofloat(Edit14.text);:=strtofloat(Edit10.text);:=strtofloat(Edit6.text);:=strtofloat(Edit8.text);:=-ly;:=(lx/lz)*sqrt(LAz/LAx);:=(lx/ly)*sqrt(LAy/LAx);:=ALx*lx/LAx;:=ALy*ly/LAy;:=ALz*lz/LAz;:=sqrt((Ez*Ez/(Ey*Ey))*Bz/(1+0.5*Bz));:=(py*py*(exp(py)-exp(-py))/(exp(py)+exp(-py)))/(py-(exp(py)-exp(-py))/(exp(py)+exp(-py)));:=1/(1+By/m);:=1/(1+Bz/3);:=sqrt(Ey*Ey*By*KSIy+Ez*Ez*Bz*KSIz);.BeginPlot;:=2*ly/1000;i:=1 to 1000 do:=0;:=W*lx*lx/(2*Ez*Ez*LAx)*

(1-(exp(px*x/lx)+exp(-px*x/lx))/

(exp(px)+exp(-px)+(px/Bx)*(exp(px)-exp(-px))))*

(1-(exp(py*y/ly)+exp(-py*y/ly))/

(exp(py)+exp(-py)+(py/By)*(exp(py)-exp(-py))))*

(1+2/Bz-z*z/(lz*lz))+tc;.AddPoint(y,t,clRed);:=y+h;;.Chart1.Title.Text.Clear;

FPlot.Chart1.Title.Text.Add('График зависимости температуры от координаты Y');

FPlot.Show;.LX.Caption:='Y';;;;TForm1.BitBtn3Click(Sender: TObject);(Edit1.text='') or (Edit2.text='') or (Edit3.text='') or (Edit4.text='')(Edit5.text='') or (Edit7.text='') or (Edit6.text='') or (Edit9.text='')(Edit10.text='') or (Edit11.text='') or (Edit12.text='') or (Edit13.text='')(Edit14.text='') then('Заполните все поля формы')(strtofloat(Edit7.text)<(-1/2)*strtofloat(Edit2.text)) or (strtofloat(Edit7.text)>(1/2)*strtofloat(Edit2.text)) or

(strtofloat(Edit6.text)<(-1/2)*strtofloat(Edit2.text)) or (strtofloat(Edit6.text)>(1/2)*strtofloat(Edit1.text)) then

ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')

else:=strtofloat(Edit1.text)/2;:=strtofloat(Edit2.text)/2;:=strtofloat(Edit3.text)/2;:=strtofloat(Edit4.text);:=(strtofloat(Edit4.text))/(8*lx*ly*lz);:=strtofloat(Edit5.text);:=strtofloat(Edit11.text);:=strtofloat(Edit12.text);:=strtofloat(Edit9.text);:=strtofloat(Edit13.text);:=strtofloat(Edit14.text);:=strtofloat(Edit10.text);:=strtofloat(Edit7.text);:=strtofloat(Edit6.text);:=-lz;:=(lx/lz)*sqrt(LAz/LAx);:=(lx/ly)*sqrt(LAy/LAx);:=ALx*lx/LAx;:=ALy*ly/LAy;:=ALz*lz/LAz;:=sqrt((Ez*Ez/(Ey*Ey))*Bz/(1+0.5*Bz));:=(py*py*(exp(py)-exp(-py))/(exp(py)+exp(-py)))/(py-(exp(py)-exp(-py))/(exp(py)+exp(-py)));:=1/(1+By/m);:=1/(1+Bz/3);:=sqrt(Ey*Ey*By*KSIy+Ez*Ez*Bz*KSIz);.BeginPlot;:=2*lz/1000;i:=1 to 1000 do:=0;:=W*lx*lx/(2*Ez*Ez*LAx)*

(1-(exp(px*x/lx)+exp(-px*x/lx))/

(exp(px)+exp(-px)+(px/Bx)*(exp(px)-exp(-px))))*

(1-(exp(py*y/ly)+exp(-py*y/ly))/

(exp(py)+exp(-py)+(py/By)*(exp(py)-exp(-py))))*

(1+2/Bz-z*z/(lz*lz))+tc;.AddPoint(z,t,clRed);:=z+h;;.Chart1.Title.Text.Clear;

FPlot.Chart1.Title.Text.Add('График зависимости температуры от координаты Z');

FPlot.Show;.LX.Caption:='Z';;;;TForm1.BitBtn4Click(Sender: TObject);(Edit1.text='') or (Edit2.text='') or (Edit3.text='') or (Edit4.text='')(Edit5.text='') or (Edit7.text='') or (Edit8.text='') or (Edit9.text='')(Edit10.text='') or (Edit6.text='') or (Edit11.text='') or (Edit12.text='') or (Edit13.text='')(Edit14.text='') then('Заполните все поля формы')(strtofloat(Edit6.text)<(-1/2)*strtofloat(Edit1.text)) or (strtofloat(Edit6.text)>(1/2)*strtofloat(Edit1.text)) or

(strtofloat(Edit8.text)<(-1/2)*strtofloat(Edit3.text)) or (strtofloat(Edit8.text)>(1/2)*strtofloat(Edit3.text)) or

(strtofloat(Edit7.text)<(-1/2)*strtofloat(Edit2.text)) or (strtofloat(Edit7.text)>(1/2)*strtofloat(Edit2.text)) then

ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')

else:=strtofloat(Edit1.text)/2;:=strtofloat(Edit2.text)/2;:=strtofloat(Edit3.text)/2;:=strtofloat(Edit4.text);:=(strtofloat(Edit4.text))/(8*lx*ly*lz);:=strtofloat(Edit5.text);:=strtofloat(Edit11.text);:=strtofloat(Edit12.text);:=strtofloat(Edit9.text);:=strtofloat(Edit13.text);:=strtofloat(Edit14.text);:=strtofloat(Edit10.text);:=strtofloat(Edit6.text);:=strtofloat(Edit7.text);:=strtofloat(Edit8.text);:=(lx/lz)*sqrt(LAz/LAx);:=(lx/ly)*sqrt(LAy/LAx);:=ALx*lx/LAx;:=ALy*ly/LAy;:=ALz*lz/LAz;:=sqrt((Ez*Ez/(Ey*Ey))*Bz/(1+0.5*Bz));:=(py*py*(exp(py)-exp(-py))/(exp(py)+exp(-py)))/(py-(exp(py)-exp(-py))/(exp(py)+exp(-py)));:=1/(1+By/m);:=1/(1+Bz/3);:=sqrt(Ey*Ey*By*KSIy+Ez*Ez*Bz*KSIz);:=0;:=W*lx*lx/(2*Ez*Ez*LAx)*

(1-(exp(px*x/lx)+exp(-px*x/lx))/

(exp(px)+exp(-px)+(px/Bx)*(exp(px)-exp(-px))))*

(1-(exp(py*y/ly)+exp(-py*y/ly))/

(exp(py)+exp(-py)+(py/By)*(exp(py)-exp(-py))))*

(1+2/Bz-z*z/(lz*lz))+tc;:=trunc(t*1000)/1000;.Caption:=floattostr(t);;;;TForm1.N1Click(Sender: TObject);.Show;;TForm1.FormShow(Sender: TObject);

begin('Для вызова помощи в программе нажмите F1 или правую клавишу мыши.');

LoadKeyboardLayout('00000419',KLF_ACTIVATE);;TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);not (key in ['0'..'9', ',', #8]) then:=#0;;;TForm1.Edit10KeyPress(Sender: TObject; var Key: Char);not (key in ['0'..'9', ',','-', #8]) then:=#0;;;.

Приложение 3

unit Unit1;, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,, Buttons, TeEngine, Series, ExtCtrls, TeeProcs, Chart,, ImgList, ActnList, Menus, ComCtrls, ToolWin, jpeg;= class(TForm)

….BitBtn1Click(Sender: TObject);BitBtn2Click(Sender: TObject);BitBtn3Click(Sender: TObject);BitBtn4Click(Sender: TObject);N1Click(Sender: TObject);FormShow(Sender: TObject);Edit1KeyPress(Sender: TObject; var Key: Char);Edit10KeyPress(Sender: TObject; var Key: Char);

{ Private declarations }

{ Public declarations };: TForm1;,W,lz,ly,lx,LAx,LAy,LAz,x,y,z,h,ALx,ALy,ALz,tc,P,k: real;,Ez,g1,g2,Bx,By,Bz,KSIx,KSIz: real;: integer;UPlot, UCoord, Unit2;

{$R *.DFM}TForm1.BitBtn1Click(Sender: TObject);(Edit1.text='') or (Edit2.text='') or (Edit3.text='') or (Edit4.text='')(Edit5.text='') or (Edit7.text='') or (Edit8.text='') or (Edit9.text='')(Edit10.text='') or (Edit11.text='') or (Edit12.text='') or (Edit13.text='')(Edit14.text='') then('Заполните все поля формы')(strtofloat(Edit7.text)<(-1/2)*strtofloat(Edit2.text)) or (strtofloat(Edit7.text)>(1/2)*strtofloat(Edit2.text)) or

(strtofloat(Edit8.text)<(-1/2)*strtofloat(Edit3.text)) or (strtofloat(Edit8.text)>(1/2)*strtofloat(Edit3.text)) then

ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')

else:=strtofloat(Edit1.text)/2;:=strtofloat(Edit2.text)/2;:=strtofloat(Edit3.text)/2;:=strtofloat(Edit4.text);:=strtofloat(Edit4.text)/(4*lx*lz);:=strtofloat(Edit5.text);:=strtofloat(Edit11.text);:=strtofloat(Edit12.text);:=strtofloat(Edit9.text);:=strtofloat(Edit13.text);:=strtofloat(Edit14.text);:=strtofloat(Edit10.text);:=strtofloat(Edit7.text);:=strtofloat(Edit8.text);:=-lx;:=(lx/lz)*sqrt(LAz/LAx);:=(lx/ly)*sqrt(LAy/LAx);:=ALx*lx/LAx;:=ALy*ly/LAy;:=ALz*lz/LAz;:=1/(1+Bz/3);:=Bz*Ez*Ez*KSIz;:=(g2*g2*(exp(g2)-exp(-g2))/(exp(g2)+exp(-g2)))/(g2-(exp(g2)-exp(-g2))/(exp(g2)+exp(-g2)));:=1/(1+By/k);:=sqrt((Bx*KSIx+g2*g2)/(Ey*Ey));.BeginPlot;:=2*lx/1000;i:=1 to 1000 do:=0;:=W*lx*lx*0.5*g1*g1/(Ez*Ez*LAx*ly*By)*

(exp(g1*y/ly)+exp(-g1*y/ly))/

(exp(g1)+exp(-g1)+(g1/By)*(exp(g1)-exp(-g1)))*

(1-(exp(g2*x/lx)+exp(-g2*x/lx))/

(exp(g2)+exp(-g2)+(g2/Bx)*(exp(g2)-exp(-g2))))*

(1+2/Bz-z*z/(lz*lz))+tc;.AddPoint(x,t,clRed);:=x+h;;.Chart1.Title.Text.Clear;

FPlot.Chart1.Title.Text.Add('График зависимости температуры от координаты X');

FPlot.Show;.LX.Caption:='X';;;;TForm1.BitBtn2Click(Sender: TObject);(Edit1.text='') or (Edit2.text='') or (Edit3.text='') or (Edit4.text='')(Edit5.text='') or (Edit6.text='') or (Edit8.text='') or (Edit9.text='')(Edit10.text='') or (Edit11.text='') or (Edit12.text='') or (Edit13.text='')(Edit14.text='') then('Заполните все поля формы')(strtofloat(Edit6.text)<(-1/2)*strtofloat(Edit1.text)) or (strtofloat(Edit6.text)>(1/2)*strtofloat(Edit1.text)) or

(strtofloat(Edit8.text)<(-1/2)*strtofloat(Edit3.text)) or (strtofloat(Edit8.text)>(1/2)*strtofloat(Edit3.text)) then

ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')

else:=strtofloat(Edit1.text)/2;:=strtofloat(Edit2.text)/2;:=strtofloat(Edit3.text)/2;:=strtofloat(Edit4.text);:=strtofloat(Edit4.text)/(4*lx*lz);:=strtofloat(Edit5.text);:=strtofloat(Edit11.text);:=strtofloat(Edit12.text);:=strtofloat(Edit9.text);:=strtofloat(Edit13.text);:=strtofloat(Edit14.text);:=strtofloat(Edit10.text);:=strtofloat(Edit6.text);:=strtofloat(Edit8.text);:=-ly;:=(lx/lz)*sqrt(LAz/LAx);:=(lx/ly)*sqrt(LAy/LAx);:=ALx*lx/LAx;:=ALy*ly/LAy;:=ALz*lz/LAz;:=1/(1+Bz/3);:=Bz*Ez*Ez*KSIz;:=(g2*g2*(exp(g2)-exp(-g2))/(exp(g2)+exp(-g2)))/(g2-(exp(g2)-exp(-g2))/(exp(g2)+exp(-g2)));:=1/(1+By/k);:=sqrt((Bx*KSIx+g2*g2)/(Ey*Ey));.BeginPlot;:=2*ly/1000;i:=1 to 1000 do:=0;:=W*lx*lx*0.5*g1*g1/(Ez*Ez*LAx*ly*By)*

(exp(g1*y/ly)+exp(-g1*y/ly))/

(exp(g1)+exp(-g1)+(g1/By)*(exp(g1)-exp(-g1)))*

(1-(exp(g2*x/lx)+exp(-g2*x/lx))/

(exp(g2)+exp(-g2)+(g2/Bx)*(exp(g2)-exp(-g2))))*

(1+2/Bz-z*z/(lz*lz))+tc;.AddPoint(y,t,clRed);:=y+h;;.Chart1.Title.Text.Clear;

FPlot.Chart1.Title.Text.Add('График зависимости температуры от координаты Y');

FPlot.Show;.LX.Caption:='Y';;;;TForm1.BitBtn3Click(Sender: TObject);(Edit1.text='') or (Edit2.text='') or (Edit3.text='') or (Edit4.text='')(Edit5.text='') or (Edit7.text='') or (Edit6.text='') or (Edit9.text='')(Edit10.text='') or (Edit11.text='') or (Edit12.text='') or (Edit13.text='')(Edit14.text='') then('Заполните все поля формы')(strtofloat(Edit7.text)<(-1/2)*strtofloat(Edit2.text)) or (strtofloat(Edit7.text)>(1/2)*strtofloat(Edit2.text)) or

ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')

else:=strtofloat(Edit1.text)/2;:=strtofloat(Edit2.text)/2;:=strtofloat(Edit3.text)/2;:=strtofloat(Edit4.text);:=strtofloat(Edit4.text)/(4*lx*lz);:=strtofloat(Edit5.text);:=strtofloat(Edit11.text);:=strtofloat(Edit12.text);:=strtofloat(Edit9.text);:=strtofloat(Edit13.text);:=strtofloat(Edit14.text);:=strtofloat(Edit10.text);:=strtofloat(Edit7.text);:=strtofloat(Edit6.text);:=-lz;:=(lx/lz)*sqrt(LAz/LAx);:=(lx/ly)*sqrt(LAy/LAx);:=ALx*lx/LAx;:=ALy*ly/LAy;:=ALz*lz/LAz;:=1/(1+Bz/3);:=Bz*Ez*Ez*KSIz;:=(g2*g2*(exp(g2)-exp(-g2))/(exp(g2)+exp(-g2)))/(g2-(exp(g2)-exp(-g2))/(exp(g2)+exp(-g2)));:=1/(1+By/k);:=sqrt((Bx*KSIx+g2*g2)/(Ey*Ey));.BeginPlot;:=2*lz/1000;i:=1 to 1000 do:=0;:=W*lx*lx*0.5*g1*g1/(Ez*Ez*LAx*ly*By)*

(exp(g1*y/ly)+exp(-g1*y/ly))/

(exp(g1)+exp(-g1)+(g1/By)*(exp(g1)-exp(-g1)))*

(1-(exp(g2*x/lx)+exp(-g2*x/lx))/

(exp(g2)+exp(-g2)+(g2/Bx)*(exp(g2)-exp(-g2))))*

(1+2/Bz-z*z/(lz*lz))+tc;.AddPoint(z,t,clRed);:=z+h;;.Chart1.Title.Text.Clear;

FPlot.Chart1.Title.Text.Add('График зависимости температуры от координаты Z');

FPlot.Show;.LX.Caption:='Z';;;;TForm1.BitBtn4Click(Sender: TObject);(Edit1.text='') or (Edit2.text='') or (Edit3.text='') or (Edit4.text='')(Edit5.text='') or (Edit7.text='') or (Edit8.text='') or (Edit9.text='')(Edit10.text='') or (Edit6.text='') or (Edit11.text='') or (Edit12.text='') or (Edit13.text='')(Edit14.text='') then('Заполните все поля формы')(strtofloat(Edit6.text)<(-1/2)*strtofloat(Edit1.text)) or (strtofloat(Edit6.text)>(1/2)*strtofloat(Edit1.text)) or

(strtofloat(Edit8.text)<(-1/2)*strtofloat(Edit3.text)) or (strtofloat(Edit8.text)>(1/2)*strtofloat(Edit3.text)) or

(strtofloat(Edit7.text)<(-1/2)*strtofloat(Edit2.text)) or (strtofloat(Edit7.text)>(1/2)*strtofloat(Edit2.text)) then

ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')

else:=strtofloat(Edit1.text)/2;:=strtofloat(Edit2.text)/2;:=strtofloat(Edit3.text)/2;:=strtofloat(Edit4.text);:=strtofloat(Edit4.text)/(4*lx*lz); :=strtofloat(Edit5.text);:=strtofloat(Edit11.text);:=strtofloat(Edit12.text);:=strtofloat(Edit9.text);:=strtofloat(Edit13.text);:=strtofloat(Edit14.text);:=strtofloat(Edit10.text);:=strtofloat(Edit6.text);:=strtofloat(Edit7.text);:=strtofloat(Edit8.text);:=(lx/lz)*sqrt(LAz/LAx);:=(lx/ly)*sqrt(LAy/LAx);:=ALx*lx/LAx;:=ALy*ly/LAy;:=ALz*lz/LAz;:=1/(1+Bz/3);:=Bz*Ez*Ez*KSIz;:=(g2*g2*(exp(g2)-exp(-g2))/(exp(g2)+exp(-g2)))/(g2-(exp(g2)-exp(-g2))/(exp(g2)+exp(-g2)));:=1/(1+By/k);:=sqrt((Bx*KSIx+g2*g2)/(Ey*Ey));:=0;:=W*lx*lx*0.5*g1*g1/(Ez*Ez*LAx*ly*By)*

(exp(g1*y/ly)+exp(-g1*y/ly))/

(exp(g1)+exp(-g1)+(g1/By)*(exp(g1)-exp(-g1)))*

(1-(exp(g2*x/lx)+exp(-g2*x/lx))/

(exp(g2)+exp(-g2)+(g2/Bx)*(exp(g2)-exp(-g2))))*

(1+2/Bz-z*z/(lz*lz))+tc;:=trunc(t*1000)/1000;.Caption:=floattostr(t);;;;TForm1.N1Click(Sender: TObject);.Show;;TForm1.FormShow(Sender: TObject);

begin('Для вызова помощи в программе нажмите F1 или правую клавишу мыши.');

LoadKeyboardLayout('00000419',KLF_ACTIVATE);;TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);not (key in ['0'..'9',',', #8]) then:=#0;;;TForm1.Edit10KeyPress(Sender: TObject; var Key: Char);not (key in ['0'..'9',',','-', #8]) then:=#0;;;.

Приложение 4

unit UPlot;, Messages, SysUtils, Classes, Graphics, Controls, Forms,, ImgList, ActnList, Menus, ComCtrls, ToolWin, TeEngine, Series,, TeeProcs, Chart;= class(TForm)ACursMouseExecute(Sender: TObject);Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,: Integer);Chart1DblClick(Sender: TObject);FormKeyDown(Sender: TObject; var Key: Word;: TShiftState);Chart1AfterDraw(Sender: TObject);ARepaintExecute(Sender: TObject);AMaxExecute(Sender: TObject);AMinExecute(Sender: TObject);FormKeyUp(Sender: TObject; var Key: Word;: TShiftState);ACalcExecute(Sender: TObject);ASaveBMPExecute(Sender: TObject);ASaveWMFExecute(Sender: TObject);ASaveEMFExecute(Sender: TObject);ACopyBMPExecute(Sender: TObject);ACopyWMFExecute(Sender: TObject);ACopyEMFExecute(Sender: TObject);APrintPExecute(Sender: TObject);AExitExecute(Sender: TObject);ACursorsExecute(Sender: TObject);AHelpExecute(Sender: TObject);FCoordClose;FormClose(Sender: TObject; var Action: TCloseAction);FormCreate(Sender: TObject);

{ Private declarations }

// Прорисовка изображений курсоров графикаSetCursor;

// Запись координат курсоров в окно FCoord

procedure WriteValue;

{ Public declarations }BeginPlot;AddPoint(X,Y:real;Color:TColor);NullPoint(X:real);;: TFPlot;UCoord, Math, ShellAPI;

{$R *.DFM}

// IndCurs1 - индекс первого курсора

// IndCurs2 - индекс второго курсора

// HCursor - шаг перемещения курсора

var IndCurs1, IndCurs2, HCursor: LongInt;

ABad: array of real; // Массив областей недопустимых значений

Bad: boolean;TFPlot.BeginPlot;

begin

// Очистка серии прежнего графика.Clear;

// Обнуление массива недопустимых значений аргумента(ABad,0);

// Сброс флага, сообщающего о том,

// что предыдущее значение аргумента недопустимое:= false;

// Чтобы восстановить масштаб, если он перед этим изменялся

FPlot.Chart1.UndoZoom;;TFPlot.AddPoint(X,Y:real;Color:TColor);

begin

// Занесение очередной точки в график

if(FloatToStr(Y) = 'NAN')or

(FloatToStr(Y) = '-NAN')or

(FloatToStr(Y) = 'INF')or

(FloatToStr(Y) = '-INF')NullPoint(X)begin.AddXY(X,Y,'',Color);

// Сброс флага, сообщающего о том,

// что предыдущее значение аргумента недопустимое:= false;

end; ;TFPlot.NullPoint(X:real);

begin

// Если вычисление точки дало ошибкуBad

// Если прошлая точка тоже была недопустимой

then ABad[High(ABad)] := Xbegin

// Если прошлая точка была допустимой,

// то значение аргумента заносится как начальная и

// конечная точка очередного диапазона(ABad,Length(ABad)+2);

ABad[High(ABad)-1] := X;[High(ABad)] := X;

// Установка флага, сообщающего о том,

// что предыдущее значение аргумента недопустимое:= true;

end;;TFPlot.ACursMouseExecute(Sender: TObject);

// Включение/выключение курсора мыши.Checked:= not ACursMouse.Checked;ACursMouse.Checkedbegin.Cursor := crCross;.Visible := true;begin.Cursor := crDefault;(not ACursors.Checked)FCoord.Visible := falsebegin.XLabel.Caption := '';.YLabel.Caption := '';;;TFPlot.ACursorsExecute(Sender: TObject);

// Включение/выключение курсоров графика.Checked:= not ACursors.Checked;ACursors.Checkedbegin.ImageIndex:=4;:=0;:=0;;;.Visible := true;

SetFocus; // Переключение фокуса на данную форму

endbegin.ImageIndex:=3;;(not ACursMouse.Checked)FCoord.Visible := falsebeginFCoord do begin.Caption := '';.Caption := '';.Caption := '';.Caption := '';.Caption := '';.Caption := '';;;;;TFPlot.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

// Отображение координат курсора мыши

var XData, YData: double;(Series1.Cursor = crCross) then begin.GetCursorValues(XData, YData);FCoord do begin.Caption := FloatToStrF(XData,ffGeneral,7,0);.Caption := FloatToStrF(YData,ffGeneral,7,0);;;;TFPlot.SetCursor;

// Поиск координат и прорисовка курсоров графика

var XPos, YPos, Pos: LongInt;: TPenMode;Chart1 do begin:= Canvas.Pen.Mode;.Pen.Color:=clBlack;.Pen.Mode := pmNotXor;:=Series1.CalcXPos(IndCurs1);:=Series1.CalcYPos(IndCurs1);.MoveTo(XPos,ChartRect.Bottom);.LineTo(XPos, ChartRect.Top);.MoveTo(ChartRect.Left, YPos);.LineTo(ChartRect.Right, YPos);:=Series1.CalcXPos(IndCurs2);(Pos <> XPos) then begin.MoveTo(Pos,ChartRect.Bottom);.LineTo(Pos, ChartRect.Top);;:=Series1.CalcYPos(IndCurs2);(Pos <> YPos) then begin.MoveTo(ChartRect.Left, Pos);.LineTo(ChartRect.Right, Pos);;.Pen.Mode := PenMode;;;TFPlot.WriteValue;

begin:=Series1.XValue[IndCurs1];:=Series1.XValue[IndCurs2];:=Series1.YValue[IndCurs1];:=Series1.YValue[IndCurs2];FCoord do begin.Caption := FloatToStrF(X1,ffGeneral,7,0);.Caption := FloatToStrF(Y1,ffGeneral,7,0);.Caption := FloatToStrF(X2,ffGeneral,7,0);.Caption := FloatToStrF(Y2,ffGeneral,7,0);.Caption := FloatToStrF(X1-X2,ffGeneral,7,0);.Caption := FloatToStrF(Y1-Y2,ffGeneral,7,0);;;TFPlot.FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

// В режиме отображения курсоров графика перемещает курсоры

var IndNew:LongInt;(ACursors.Checked) then begin(ssShift in Shift)IndNew:=IndCurs2IndNew:=IndCurs1;Key of_Left: Dec(IndNew, HCursor);_Right: Inc(IndNew, HCursor);_Home: IndNew:=0;_End: IndNew:= Series1.Count-1;

else exit;;

// Ограничение перемещения курсора

if (IndNew < 0) then IndNew := 0;(IndNew > Series1.Count-1) then IndNew := Series1.Count-1;

// Ускорение перемещения курсора(HCursor);

SetCursor; // Стирание прежнего курсора(ssShift in Shift)IndCurs2:=IndNewIndCurs1:=IndNew;; // Рисование нового курсора;;;TFPlot.Chart1AfterDraw(Sender: TObject);

// При перерисовке изображения прорисовывает курсоры

// отображает области недопустимых значений

var i: integer;, X2 :longint;(ACursors.Checked) then SetCursor;(Length(ABad) > 0)begin.Chart1.Canvas.Brush.Color := clSilver;.Chart1.Canvas.Pen.Color := clBlack;.Chart1.Canvas.Brush.Style := bsSolid;:=0;:= FPlot.Series1.CalcXPosValue(Max(ABad[i],FPlot.Series1.MinXValue));:= FPlot.Series1.CalcXPosValue(Min(ABad[i+1],FPlot.Series1.MaxXValue));

if(X1 = X2) then begin

// Раздвигаются границы области, если они совпадают

Dec(X1,2);(X2,2);;.Chart1.Canvas.Rectangle(X1,.Chart1.ChartRect.Top,,.Chart1.ChartRect.Bottom);(i,2);(i >= Length(ABad));;;TFPlot.FCoordClose;

// Выключение курсоров.Checked := false;(ACursors.Checked) then begin;.Checked := false;.ImageIndex:=3;;;TFPlot.ARepaintExecute(Sender: TObject);

// Перерисовка изображения.Repaint;;TFPlot.AMaxExecute(Sender: TObject);

// Установка курсора на максимумi: integer;: double;

// Стирание прежнего курсора

if ACursors.Checked then SetCursor;:= -1.7E308;i:=0 to Series1.LastValueIndex do(Series1.YValues[i] > YMax)begin:= Series1.YValues[i];:= i;;:= 0;;;.Visible := true;.Checked := true;.ImageIndex:=4;;;TFPlot.AMinExecute(Sender: TObject);

// Установка курсора на минимумi: integer;: double;

// Стирание прежнего курсора

if ACursors.Checked then SetCursor;:= 1.7E308;i:=0 to Series1.LastValueIndex do(Series1.YValues[i] < YMin)begin:= Series1.YValues[i];:= i;;:= 0;;;.Visible := true;.Checked := true;.ImageIndex:=4;;;TFPlot.FormKeyUp(Sender: TObject; var Key: Word;: TShiftState);:= 1;;TFPlot.ACalcExecute(Sender: TObject);

// Вызов "Калькулятора"(Handle,'open','Calc',nil,nil,SW_RESTORE);;TFPlot.ASaveBMPExecute(Sender: TObject);

// Сохранят график в формате .bmp

with SaveDialog1 do begin:='bmp';:=1;(SaveDialog1.Execute)Chart1.SaveToBitmapFile(SaveDialog1.FileName);;;TFPlot.ASaveWMFExecute(Sender: TObject);

// Сохранят график в формате .wmf

with SaveDialog1 do begin:='wmf';:=3;(SaveDialog1.Execute)Chart1.SaveToMetafile(SaveDialog1.FileName);;;TFPlot.ASaveEMFExecute(Sender: TObject);

// Сохранят график в формате .emf

with SaveDialog1 do begin:='emf';:=2;(SaveDialog1.Execute)Chart1.SaveToMetafileEnh(SaveDialog1.FileName);;;TFPlot.ACopyBMPExecute(Sender: TObject);

// Копирует график в Clipboard в формате .bmp

begin.CopyToClipboardBitmap;;TFPlot.ACopyWMFExecute(Sender: TObject);

// Копирует график в Clipboard в формате .wmf

begin.CopyToClipboardMetafile(false);;TFPlot.ACopyEMFExecute(Sender: TObject);

// Копирует график в Clipboard в формате .emf

begin.CopyToClipboardMetafile(true);;TFPlot.APrintPExecute(Sender: TObject);

// Печать графикаi: integer;

begin(PrintDialog1.Execute) theni:=1 to PrintDialog1.Copies do(Sender = APrintP)Chart1.PrintPortraitChart1.PrintLandscape;;TFPlot.Chart1DblClick(Sender: TObject);

// Восстановление масштаба по умолчанию.UndoZoom;

end;TFPlot.AExitExecute(Sender: TObject);

// Завершение работы приложения.Terminate;

end;TFPlot.AHelpExecute(Sender: TObject);

// Вызов справки.HelpCommand(HELP_FINDER,0);;TFPlot.FormClose(Sender: TObject; var Action: TCloseAction);(ACursors.Checked or ACursMouse.Checked)FCoord.Close;;TFPlot.FormCreate(Sender: TObject);.XValues.Order := loNone;

end;.

Окно работы с курсором:

unit UCoord;

interface, Messages, SysUtils, Classes, Graphics, Controls, Forms,, StdCtrls;= class(TForm)FormClose(Sender: TObject; var Action: TCloseAction);

{ Private declarations }

{ Public declarations };: TFCoord;UPlot;

{$R *.dfm}TFCoord.FormClose(Sender: TObject; var Action: TCloseAction);.FCoordClose;;.

Похожие работы на - Разработка программного продукта для расчета тепловых коэффициентов для тел с распределенными и сосредоточенными источниками энергии

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!