- •Программируемый доступ к базе данных
- •Доступ к файлам баз данных
- •Поиск данных в файле
- •Изменение данных в файле
- •Графические возможности Delphi
- •Графические элементы
- •Рисование графиков функций
- •Компоненты tPaintBox и tShape
- •Исключительные ситуации
- •Обработка исключительных ситуаций
- •Обработка определенных исключительных ситуаций
- •Заключение
- •Контрольные вопросы
- •Литература
- •Содержание
Рисование графиков функций
Рисование графиков функций заметно сложнее: необходимо определить координаты всех точек, через которые пройдет его график. На рис. 8.2 показан график синуса, а ниже приведена реализация соответствующей процедуры.
Рис. 8.2. График функции
procedure TForm1.Button1Click(Sender: TObject);
const PI=3.14159;
Var
x,y :real;
px,py,half :longint;
begin
half:=Form1.Height div 2;
{Определяем половину вертикального размера формы}
for px:=0 to Form1.Width do
begin
{масштаб х приводим к 2*PI для отображения полного периода}
x:=px*(2*PI/Form1.Width);
y:=sin(x);
py:=trunc(0.7*y*half)+half;
{Выводим на экран один пиксел с заданными координатами}
{ и цветом: 0 – черный}
Canvas.Pixels[px, py]:=0;
end;
end;
Наиболее сложным моментом при рисовании графиков является расчет масштаба. Если с первой попытки это не удалось, то можно рекомендовать экспериментальным путем определить наиболее удачный вариант. Применяя знания по аналитической геометрии можно рисовать все что угодно!
Компоненты tPaintBox и tShape
До сих пор мы рисовали в пределах всей формы. Часто полезно ограничить графику прямоугольной областью на форме. Для этого используется компонента TPaintBox из палитры System. Как всегда, перенесем эту компоненту на форму, разместим на нужном месте и дадим ей необходимые размеры. Имя этой компоненты по умолчанию – PaintBox1. Координаты в дальнейшем должны определяться в ее пределах. Например, рисование закрашенного треугольника в пределах PaintBox выполняется следующей процедурой:
procedure TForm1.Button2Click(Sender: TObject);
begin
PaintBox1.Canvas.Brush.Color:=clBlue; {Определим цвет закраски}
PaintBox1.Canvas.Brush.Style:=bsCross;
{Определим рисунок – стиль – внутри}
Paintbox1.Canvas.Polygon([Point(10,10),
Point(65,200),Point(120,100),Point(10,10)]);
end;
Нетрудно видеть, что единственным отличием этой процедуры от аналогичной, приведенной выше, является квалификатор PaintBox1.
В Delphi имеется возможность вставить в свою форму простые геометрические фигуры. Для этого используется компонента Shape из палитры Additional. Перенесем ее на форму и обращаем внимание на свойства. В исходном виде Shape имеет форму квадрата, ее высоту и длину, а также местонахождение можно менять традиционными средствами (мышью или присвоением значений ее свойствам). Рассмотрим основные свойства.
Рис. 8.3. Геометрические фигуры
Brush – определяет стиль и цвет наполнения фигуры, имеет два подсвойства Color и Style;
Pen – определяет характеристики (цвет, стиль, толщина) ограничительной линии, имеет подсвойства Color, Mode, Style, Width;
Shape – определяет саму фигуру (эллипс, круг,...).
Форма с несколькими фигурами показана на рис. 8.3. Фигуры используются для иллюстраций, но с их помощью можно выводить и результаты вычислений в форме диаграмм. Напомним, что
Left, Top – координаты левой верхней точки;
Heigth, Width – высота и ширина квадрата.
Попробуйте самостоятельно построить диаграммы!
Исключительные ситуации
Исключительной ситуацией (exception) называется необычная или неожиданная ситуация, прерывающая нормальную работу программы. Генерация исключительной ситуации – уведомление о необычной или неожиданной ситуации. Обработка исключительной ситуации – нахождение выхода из возникшей ситуации и восстановление работоспособности программы.
С исключительными ситуациями мы уже встречались в рассмотренных нами примерах. Например:
Преобразование символьных данных в числовые генерирует исключительную ситуацию, если такое преобразование невозможно.
Если выполнение арифметического выражения невозможно (деление на нуль, квадратный корень отрицательного числа и т.д.), то возникает исключительная ситуация.
Попытка открытия несуществующего в заданной директории файла тоже вызывает исключительную ситуацию.