Рис. 1.24. Координатная сетка

/ обработка события OnPaint
procedure TForml.FormPaint(Sender: TObject);
var
xO,yO:integer; // координаты начала координатных осей
dx,dy:integer; // шаг координатной сетки (в пикселах)
h,w:integer; // высота и ширина области вывода координатной
// сетки
х,у:integer; lx,ly:real; // метки (оцифровка) линий сетки по X и Y
dlx,dly:real; // шаг меток (оцифровки) линий сетки по X и Y
cross:integer; // счетчик не оцифрованных линий сетки
dcross:integer; // количество не оцифрованных линий
// между оцифрованными
begin
х0:=30; у0:=220; // оси начинаются в точке (40,250)
dx:=40; dy:=4O; // шаг координатной сетки 40 пикселов
dcross:=1; // помечать линии сетки X: 1 — каждую;
// 2 — через одну;
// 3 ~ через две;
dlx:=0.5; // шаг меток qch X
dly:=1.0; // шаг меток оси У, метками будут: 1,2,3
// и т. д.
h:=200;
w:=300; with forml.Canvas do
begin
cross:=dcross ;
MoveTo(xO,yO); LineTofxO,yO-h); // ось X
MoveTo(xO,yO); LineTo(xO+w,yO); // ось Y // засечки, сетка и оцифровка по оси X
x:=xO+dx;
lx:=dlx;
repeat
MoveTo(x,yO-3);LineTo(x,yO+3) ; // засечка
cross:=cross-l;
if cross = 0 then //оцифровка
begin
TextOut(x-8,yO+5,FloatToStr(lx)) ;
cross:=dcross;
end;
Pen.Style:=psDot;
MoveTo(x,yO-3);LineTo(x,yO-h); // линия сетки
Pen.Style:=psSolid;
lx:=lx+dlx;
x:=x+dx;
until (x>xO+w);
// засечки, сетка и оцифровка по оси Y
y:=yO-dy;
ly:=dly;
repeat
MoveTo(xO-3, у);LineTo(xO+3,y) ; // засечка
TextOut(xO-20,y,FloatToStr(ly)) // оцифровка
Pen.Style:=psDot ;
MoveTo(xO+3,y); LineTo(xO+w,y); // линия сетки
Pen.Style:=psSolid;
y:=y-dy;
ly:=ly+dly;
until (y end;
end;