| 
| 
 | Вопрос # 4 566/ вопрос открыт / | 
 |  Здравствуйте, уважаемые эксперты!  Мне нужно компактно сделать так, чтобы по предварительно заданным значениям координат выстраивались прямоугольники, но с тем условием, что если
 Form1.PageControl1.TabIndex=1(соседней формы), то рисуется 10 прямоугольников (каждый по своим координатам!), если Index=2, то 12 прямоугольников (плюсом к предыдущим). Пытался массивом сделать, но компактно ничего не получается. Приложение:Переключить в обычный режим unit Unit9; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, ExtCtrls; type  TForm9 = class(TForm)    Image1: TImage;    procedure FormPaint(Sender: TObject);    procedure FormClose(Sender: TObject; var Action: TCloseAction);    procedure FormShow(Sender: TObject);  private    { Private declarations }  public    { Public declarations }  end; var  Form9: TForm9; implementationuses Unit1,Unit2,Unit3,Unit4,Unit5,Unit6,Unit7,Unit8;{$R *.dfm}vark,Zst,zk,Vm12,Vm23,Vm34,Vm45,Vm56,Z2pr,Z3pr,Z4pr,Z5pr,Z6pr,Lm12,Lm23,Lm34,Lm45,Lm56,Vk,Vst,Q,q11,q2ob,q3ob,q4ob,q5ob,q6ob,Sst,P1st,P2st,p0k,p12k,p23k,p34k,p45k,p56k,L0,Dk,Dst,H,Hst: real;J0,j, i: integer;const a=1.1; g=9.81; Y=0.03; x1=605; Y1=48; X2=772; Y2=104;x3=627; Y3=107; X4=646; Y4=379;x5=X3; Y5=194; X6=576; Y6=200;x7=582; Y7=193; X8=576;x9=X3; Y9=285; X10=526; Y10=291;x11=532; Y11=284; X12=X10;x13=650; Y13=380; X14=395; Y14=399;x15=479; Y15=377; X16=473;x17=394; Y17=Y13; X18=314; Y18=Y14;x19=398; Y19=Y15; X20=392;x21=314; Y21=Y13; X22=233; Y22=Y14;x23=317; Y23=Y15; X24=311;x25=233; Y25=Y13; X26=152; Y26=Y14;x27=235; Y27=Y15; X28=229;x29=152; Y29=Y13; X30=70; Y30=Y14;x31=154 ; Y31=Y15; X32=148;X33=70;Y33=Y13;X34=3;Y34=Y14;X35=72;Y35=Y15;X36=66;procedure TForm9.FormClose(Sender: TObject; var Action: TCloseAction);beginForm9.visible:=false;end; procedure TForm9.FormPaint(Sender: TObject);beginWith Canvas do begin  Draw (10,10,Image1.Picture.Bitmap);end;end; procedure TForm9.FormShow(Sender: TObject);varY8,y12,y16,y20,y24,y28,y32,y36: integer;b: array[1..646] of integer= (x1,x3,x5,x9,x13,x17,x21,x25,x29,x33);c: array[1..399] of integer= (y1,y3,y5,y9,y13,y17,y21,y25,y29,y33);d: array[1..772] of integer= (x2,X4,x6,x10,x14,x18,x22,x26,x30,x34);e: array[1..399] of integer= (y2,y4,y6,y10,y14,y18,y22,y26,y30,y34); beginif form1.CheckBox1.Checked and(form1.Raschet1.Enabled or form1.Raschet2.Enabledor form1.Raschet3.Enabled or form1.Raschet4.Enabledor form1.Raschet5.Enabled or form1.Raschet6.Enabled) then begin if form1.Raschet1.Enabled then beginH:=StrtoFloat(Form1.EditH1)/1000;Hst:=StrtoFloat(Form1.EditHst1)/1000;Dst:=StrtoFloat(Form1.EditDst1)/1000;L0:=StrtoFloat(Form1.EditL01)/1000;Q:=StrtoFloat(Form2.StringGrid1.Cells[1,7])/1000000;end;if form1.Raschet2.Enabled then beginH:=StrtoFloat(Form1.EditH2)/1000;Hst:=StrtoFloat(Form1.EditHst2)/1000;Dst:=StrtoFloat(Form1.EditDst2)/1000;L0:=StrtoFloat(Form1.EditL02)/1000;Q:=StrtoFloat(Form3.SG2.Cells[1,0])/1000000;end;if form1.Raschet3.Enabled then beginH:=StrtoFloat(Form1.EditH3)/1000;Hst:=StrtoFloat(Form1.EditHst3)/1000;Dst:=StrtoFloat(Form1.EditDst3)/1000;L0:=StrtoFloat(Form1.EditL03)/1000;Q:=StrtoFloat(Form4.SG4.Cells[1,0])/1000000;end;if form1.Raschet4.Enabled then beginH:=StrtoFloat(Form1.EditH4)/1000;Hst:=StrtoFloat(Form1.EditHst4)/1000;Dst:=StrtoFloat(Form1.EditDst4)/1000;L0:=StrtoFloat(Form1.EditL04)/1000;Q:=StrtoFloat(Form5.SG4.Cells[1,0])/1000000;end;if form1.Raschet5.Enabled then beginH:=StrtoFloat(Form1.EditH5)/1000;Hst:=StrtoFloat(Form1.EditHst5)/1000;Dst:=StrtoFloat(Form1.EditDst5)/1000;L0:=StrtoFloat(Form1.EditL05)/1000;Q:=StrtoFloat(Form6.SG4.Cells[1,0])/1000000;end;if form1.Raschet6.Enabled then beginH:=StrtoFloat(Form1.EditH6)/1000;Hst:=StrtoFloat(Form1.EditHst6)/1000;Dst:=StrtoFloat(Form1.EditDst6)/1000;L0:=StrtoFloat(Form1.EditL06)/1000;Q:=StrtoFloat(Form7.SG4.Cells[1,0])/1000000;end;Sst:=Pi*Dst*Dst/4 ;Vst:=Q/Sst;P1st:=H-Hst*2/3-a*(Vst*Vst/(2*g))*(1+Zst+y*Hst/(Dst*3));P2st:=H-Hst/3-a*(Vst*Vst/(2*g))*(1+Zst+y*2*Hst/(Dst*3));P0k:=H-(a*(Vst*Vst/(2*g))*(Zst+y*Hst/Dst)+a*(Vk*Vk/(2*g))*(1+Zk+y*L0*4/(5*Dk)));if form1.Raschet1.Enabled then beginP12k:=0; P23k:=0;P34k:=0;P45k:=0;P56k:=0; end elseP12k:=H-(a*(Vst*Vst/(2*g))*(Zst+y*Hst/Dst)+a*(Vk*Vk/(2*g))*(Zk+y*L0/Dk)+a*(Vm12*Vm12/(2*g))*(1+Z2pr+Y*(Lm12/(2*dk))));if form1.Raschet2.Enabled then beginP23k:=0;P34k:=0;P45k:=0;P56k:=0; end elseP23k:=H-(a*(Vst*Vst/(2*g))*(Zst+y*Hst/Dst)+a*(Vk*Vk/(2*g))*(Zk+y*L0/Dk)+a*(Vm12*Vm12/(2*g))*(Z2pr+Y*(Lm12/dk))+a*(Vm23*Vm23/(2*g))*(1+Z3pr+Y*(Lm23/(2*dk))));if form1.Raschet3.Enabled then beginP34k:=0;P45k:=0;P56k:=0; end elseP34k:=H-(a*(Vst*Vst/(2*g))*(Zst+y*Hst/Dst)+a*(Vk*Vk/(2*g))*(Zk+y*L0/Dk)+a*(Vm12*Vm12/(2*g))*(Z2pr+Y*(Lm12/dk))+a*(Vm23*Vm23/(2*g))*(Z3pr+Y*(Lm23/dk))+a*(Vm34*Vm34/(2*g))*(1+Z4pr+Y*(Lm34/(2*dk))));if form1.Raschet4.Enabled then beginP45k:=0;P56k:=0; end elseP45k:=H-(a*(Vst*Vst/(2*g))*(Zst+y*Hst/Dst)+a*(Vk*Vk/(2*g))*(Zk+y*L0/Dk)+a*(Vm12*Vm12/(2*g))*(Z2pr+Y*(Lm12/dk))+a*(Vm23*Vm23/(2*g))*(Z3pr+Y*(Lm23/dk))+a*(Vm34*Vm34/(2*g))*(Z4pr+Y*(Lm34/dk))+a*(Vm45*Vm45/(2*g))*(1+Z5pr+Y*(Lm45/(2*dk))));if form1.Raschet5.Enabled then beginP56k:=0; end elsep56k:=H-(a*(Vst*Vst/(2*g))*(Zst+y*Hst/Dst)+a*(Vk*Vk/(2*g))*(Zk+y*L0/Dk)+a*(Vm12*Vm12/(2*g))*(Z2pr+Y*(Lm12/dk))+a*(Vm23*Vm23/(2*g))*(Z3pr+Y*(Lm23/dk))+a*(Vm34*Vm34/(2*g))*(Z4pr+Y*(Lm34/dk))+a*(Vm45*Vm45/(2*g))*(Z5pr+Y*(Lm45/dk))+a*(Vm56*Vm56/(2*g))*(1+Z6pr+Y*(Lm56/(2*dk))));k:=H/342;Y8=Y1+(H-P1st)/k;Y12=Y1+(H-P2st)/k;Y16=Y1+(H-P0k)/k;Y20= Y1+(H-P12k)/k;Y24=Y1+(H-P23k)/k;Y28=Y1+(H-P34k)/k;Y32=Y1+(H-P45k)/k;Y36=Y1+(H-P56k)/k;if Form1.PageControl1.TabIndex=0 then begin J:=8;rectangle(x7,y7,x8,y8);rectangle(x11,y11,x12,y12);rectangle(x15,y15,x15,y15);end;if Form1.PageControl1.TabIndex=1 then J:=10;if Form1.PageControl1.TabIndex=2 then J:=12;if Form1.PageControl1.TabIndex=3 then J:=14;if Form1.PageControl1.TabIndex=4 then J:=16;if Form1.PageControl1.TabIndex=5 then J:=18;with Image1.canvas do beginJ0:=0;while J0<=J do begin rectangle(b,c,d,e);J0:=J0+1; end;end;end;end;end.
 Мини-форум вопросаМини-форум пуст. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |