|
Вопрос # 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;
-
- implementation
- uses Unit1,Unit2,Unit3,Unit4,Unit5,Unit6,Unit7,Unit8;
- {$R *.dfm}
- var
- k,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);
- begin
- Form9.visible:=false;
- end;
-
- procedure TForm9.FormPaint(Sender: TObject);
- begin
- With Canvas do begin
- Draw (10,10,Image1.Picture.Bitmap);
- end;
- end;
-
- procedure TForm9.FormShow(Sender: TObject);
- var
- Y8,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);
-
- begin
- if form1.CheckBox1.Checked and
- (form1.Raschet1.Enabled or form1.Raschet2.Enabled
- or form1.Raschet3.Enabled or form1.Raschet4.Enabled
- or form1.Raschet5.Enabled or form1.Raschet6.Enabled) then begin
-
- if form1.Raschet1.Enabled then begin
- H:=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 begin
- H:=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 begin
- H:=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 begin
- H:=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 begin
- H:=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 begin
- H:=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 begin
- P12k:=0; P23k:=0;P34k:=0;P45k:=0;P56k:=0; end else
- P12k:=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 begin
- P23k:=0;P34k:=0;P45k:=0;P56k:=0; end else
- P23k:=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 begin
- P34k:=0;P45k:=0;P56k:=0; end else
- P34k:=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 begin
- P45k:=0;P56k:=0; end else
- P45k:=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 begin
- P56k:=0; end else
- p56k:=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 begin
- J0:=0;
- while J0<=J do begin rectangle(b,c,d,e);
- J0:=J0+1;
-
- end;
- end;
- end;
- end;
- end.
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|