Re: Заштриховка нестандартной области
Добавлено: 31 мар 2008, 22:38
Код: Выделить всё
procedure zakraska(stroka:string);
begin
with form1.canvas do begin
brush.Style:=bsClear;
Rectangle(x0-150,y0-200,x0+150,y0);
Ellipse(x0-150-20,y0-75-25,x0+20,y0+75+25);
Ellipse(x0-50,y0-150,x0+250,y0+150);
end;
case strtoint(stroka) of
1: with form1.Canvas do begin
brush.Color:=clRed;
floodfill(x0+50,y0+15,clBlack, fsBorder);
end;
10: with form1.Canvas do begin
brush.Color:=clLime;
floodfill(x0-50,y0+15,clBlack, fsBorder);
end;
11: with form1.Canvas do begin
brush.Color:=clTeal;
floodfill(x0,y0+15,clBlack, fsBorder);
end;
100: with form1.Canvas do begin
brush.Color:=clYellow;
floodfill(x0,y0-150,clBlack, fsBorder);
end;
101: with form1.Canvas do begin
brush.Color:=clOlive;
floodfill(x0+50,y0-15,clBlack, fsBorder);
end;
110: with form1.Canvas do begin
brush.Color:=clFuchsia;
floodfill(x0-50,y0-15,clBlack, fsBorder);
end;
111: with form1.Canvas do begin
brush.Color:=clNavy;
floodfill(x0,y0-15,clBlack, fsBorder);
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var x0,y0:integer;
inv:set of 'A'..'C';
op,notr,nmul,nslozh:integer;
p,kol,cl:integer;
sslozh,smul:integer;
pst,c,k1,k2:integer;
text,x,s,ss,z,ymul,yplus,q,sss,y,st,before,after,yekv,yimp,d,zam_d,a,str_skob:string; i,k,m,j:integer;
pstpl,c1,d1,u,v,sotr,umnpos,gr1,gr2,kotr:integer;
posumn:integer;
nekv,sekv,pstekv,c2,d2,ekvpos:integer;
nimp,simp,pstimp,c3,d3:integer;
sotkr,szakr,l1,l2:integer;
op_d,notr_d,nmul_d,nslozh_d,nimp_d,nekv_d,kotr_d:integer;
R:TRect;
begin
with form1.canvas do begin
brush.Color:=clWhite;
brush.Style:=bsSolid;
with R do begin
top:=200;
left:=300;
right:=1100;
bottom:=900;
end;
fillrect(R);
end;
if length(edit1.text)=1 then begin
if edit1.text='1' then edit1.Text:='A*(B~C)+^A*B*C'
else if edit1.text='2' then edit1.Text:='B*(A~C)+A*B*^C'
else if edit1.text='3' then edit1.Text:='A*(B~C)+A*^B*C'
else if edit1.text='4' then edit1.Text:='A*^(C~B)+A*B*C'
else if edit1.text='5' then edit1.Text:='A*^(C~B)+^A*B*C'
else begin messagedlg('Некорректный ввод',mtError,[mbOK],0);
edit1.Text:=''; exit; end;
end;
x:=UpperCase(edit1.Text);
label9.Visible:=true;
label9.Caption:='Проверяем для: '+x;
groupbox2.Left:=25;
groupbox2.Top:=400;
stringgrid1.Visible:=true;
edit1.Text:='';
stringgrid1.cells[0,0]:='A';
stringgrid1.cells[1,0]:='B';
stringgrid1.cells[2,0]:='C';
zapst(form1.StringGrid1);
m:=length(x); s:=''; ss:='';
//удаляем пробелы из строки перед анализом
j:=1;
while j<=m do begin
p:=pos(' ',x);
if p<>0 then begin
delete(x,p,1);
m:=m-1;
end else break;
j:=j+1;
end;