const stepscale:array [0..nstepscale] of Extended=(0.0001,0.0002,0.00025,0.0005,0.001,0.002,0.0025,0.005,0.01,0.02,0.025,0.05,0.1,0.2,0.25,0.5,1,2,2.5,5,10,20,25,50,100,200,250,500,1000,2000,2500,5000,10000,20000,25000,50000,100000,200000,250000,500000);
.........................
//-----------Горизонтальные линии
Pb.Canvas.Pen.Color:=linecolor;
Pb.Canvas.Pen.Style:=psDot;
yyy:=maxy[0]-miny[0];
j:=Pb.Height-Bottomy-3;
j:=j div 40;if j=0 then j:=1;
yyy:=yyy/j;
b:=1000000000.0;
for i:=0 to nstepscale do
begin
a:=Abs(stepscale[i]-yyy);
if a<b then begin b:=a;j:=i; end;
end;
b:=stepscale[j];
xxx:=1/b;
aaa:=miny[0]*xxx;
aaa:=Trunc(aaa+0.1);
aaa:=aaa/xxx;
sigh:=0;DetectSigns(miny[0],maxy[0],aaa,b,sigh);
for i:=1 to 100 do
begin
if aaa<miny[0] then goto 4;
if aaa>maxy[0] then break;
j:=CalcY(aaa,0);
Pb.Canvas.MoveTo(Leftx,j);
Pb.Canvas.LineTo(Pb.Width-Rightx,j);
s:=Trim(Format('%10.'+IntToStr(Sigh)+'f',[aaa]));
Pb.Canvas.TextOut(10,j-5,s); //x=Pb.Width-Rightx+5
4: aaa:=aaa+b;
end;