Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 566

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
Мне нужно компактно сделать так, чтобы по предварительно заданным значениям координат выстраивались прямоугольники, но с тем условием, что если

Form1.PageControl1.TabIndex=1
(соседней формы), то рисуется 10 прямоугольников (каждый по своим координатам!), если
Index=2
, то 12 прямоугольников (плюсом к предыдущим). Пытался массивом сделать, но компактно ничего не получается.

Приложение:
  1. unit Unit9;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs, ExtCtrls;
  8.  
  9. type
  10. TForm9 = class(TForm)
  11. Image1: TImage;
  12. procedure FormPaint(Sender: TObject);
  13. procedure FormClose(Sender: TObject; var Action: TCloseAction);
  14. procedure FormShow(Sender: TObject);
  15. private
  16. { Private declarations }
  17. public
  18. { Public declarations }
  19. end;
  20.  
  21. var
  22. Form9: TForm9;
  23.  
  24. implementation
  25. uses Unit1,Unit2,Unit3,Unit4,Unit5,Unit6,Unit7,Unit8;
  26. {$R *.dfm}
  27. var
  28. 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,
  29. Sst,P1st,P2st,p0k,p12k,p23k,p34k,p45k,p56k,L0,Dk,Dst,H,Hst: real;
  30. J0,j, i: integer;
  31. const a=1.1; g=9.81; Y=0.03; x1=605; Y1=48; X2=772; Y2=104;
  32. x3=627; Y3=107; X4=646; Y4=379;
  33. x5=X3; Y5=194; X6=576; Y6=200;
  34. x7=582; Y7=193; X8=576;
  35. x9=X3; Y9=285; X10=526; Y10=291;
  36. x11=532; Y11=284; X12=X10;
  37. x13=650; Y13=380; X14=395; Y14=399;
  38. x15=479; Y15=377; X16=473;
  39. x17=394; Y17=Y13; X18=314; Y18=Y14;
  40. x19=398; Y19=Y15; X20=392;
  41. x21=314; Y21=Y13; X22=233; Y22=Y14;
  42. x23=317; Y23=Y15; X24=311;
  43. x25=233; Y25=Y13; X26=152; Y26=Y14;
  44. x27=235; Y27=Y15; X28=229;
  45. x29=152; Y29=Y13; X30=70; Y30=Y14;
  46. x31=154 ; Y31=Y15; X32=148;
  47. X33=70;Y33=Y13;X34=3;Y34=Y14;
  48. X35=72;Y35=Y15;X36=66;
  49. procedure TForm9.FormClose(Sender: TObject; var Action: TCloseAction);
  50. begin
  51. Form9.visible:=false;
  52. end;
  53.  
  54. procedure TForm9.FormPaint(Sender: TObject);
  55. begin
  56. With Canvas do begin
  57. Draw (10,10,Image1.Picture.Bitmap);
  58. end;
  59. end;
  60.  
  61. procedure TForm9.FormShow(Sender: TObject);
  62. var
  63. Y8,y12,y16,y20,y24,y28,y32,y36: integer;
  64. b: array[1..646] of integer= (x1,x3,x5,x9,x13,x17,x21,x25,x29,x33);
  65. c: array[1..399] of integer= (y1,y3,y5,y9,y13,y17,y21,y25,y29,y33);
  66. d: array[1..772] of integer= (x2,X4,x6,x10,x14,x18,x22,x26,x30,x34);
  67. e: array[1..399] of integer= (y2,y4,y6,y10,y14,y18,y22,y26,y30,y34);
  68.  
  69. begin
  70. if form1.CheckBox1.Checked and
  71. (form1.Raschet1.Enabled or form1.Raschet2.Enabled
  72. or form1.Raschet3.Enabled or form1.Raschet4.Enabled
  73. or form1.Raschet5.Enabled or form1.Raschet6.Enabled) then begin
  74.  
  75. if form1.Raschet1.Enabled then begin
  76. H:=StrtoFloat(Form1.EditH1)/1000;
  77. Hst:=StrtoFloat(Form1.EditHst1)/1000;
  78. Dst:=StrtoFloat(Form1.EditDst1)/1000;
  79. L0:=StrtoFloat(Form1.EditL01)/1000;
  80. Q:=StrtoFloat(Form2.StringGrid1.Cells[1,7])/1000000;
  81. end;
  82. if form1.Raschet2.Enabled then begin
  83. H:=StrtoFloat(Form1.EditH2)/1000;
  84. Hst:=StrtoFloat(Form1.EditHst2)/1000;
  85. Dst:=StrtoFloat(Form1.EditDst2)/1000;
  86. L0:=StrtoFloat(Form1.EditL02)/1000;
  87. Q:=StrtoFloat(Form3.SG2.Cells[1,0])/1000000;
  88. end;
  89. if form1.Raschet3.Enabled then begin
  90. H:=StrtoFloat(Form1.EditH3)/1000;
  91. Hst:=StrtoFloat(Form1.EditHst3)/1000;
  92. Dst:=StrtoFloat(Form1.EditDst3)/1000;
  93. L0:=StrtoFloat(Form1.EditL03)/1000;
  94. Q:=StrtoFloat(Form4.SG4.Cells[1,0])/1000000;
  95. end;
  96. if form1.Raschet4.Enabled then begin
  97. H:=StrtoFloat(Form1.EditH4)/1000;
  98. Hst:=StrtoFloat(Form1.EditHst4)/1000;
  99. Dst:=StrtoFloat(Form1.EditDst4)/1000;
  100. L0:=StrtoFloat(Form1.EditL04)/1000;
  101. Q:=StrtoFloat(Form5.SG4.Cells[1,0])/1000000;
  102. end;
  103. if form1.Raschet5.Enabled then begin
  104. H:=StrtoFloat(Form1.EditH5)/1000;
  105. Hst:=StrtoFloat(Form1.EditHst5)/1000;
  106. Dst:=StrtoFloat(Form1.EditDst5)/1000;
  107. L0:=StrtoFloat(Form1.EditL05)/1000;
  108. Q:=StrtoFloat(Form6.SG4.Cells[1,0])/1000000;
  109. end;
  110. if form1.Raschet6.Enabled then begin
  111. H:=StrtoFloat(Form1.EditH6)/1000;
  112. Hst:=StrtoFloat(Form1.EditHst6)/1000;
  113. Dst:=StrtoFloat(Form1.EditDst6)/1000;
  114. L0:=StrtoFloat(Form1.EditL06)/1000;
  115. Q:=StrtoFloat(Form7.SG4.Cells[1,0])/1000000;
  116. end;
  117. Sst:=Pi*Dst*Dst/4 ;
  118. Vst:=Q/Sst;
  119. P1st:=H-Hst*2/3-a*(Vst*Vst/(2*g))*(1+Zst+y*Hst/(Dst*3));
  120. P2st:=H-Hst/3-a*(Vst*Vst/(2*g))*(1+Zst+y*2*Hst/(Dst*3));
  121. P0k:=H-(a*(Vst*Vst/(2*g))*(Zst+y*Hst/Dst)+a*(Vk*Vk/(2*g))*(1+Zk+y*L0*4/(5*Dk)));
  122. if form1.Raschet1.Enabled then begin
  123. P12k:=0; P23k:=0;P34k:=0;P45k:=0;P56k:=0; end else
  124. 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))));
  125. if form1.Raschet2.Enabled then begin
  126. P23k:=0;P34k:=0;P45k:=0;P56k:=0; end else
  127. 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))));
  128. if form1.Raschet3.Enabled then begin
  129. P34k:=0;P45k:=0;P56k:=0; end else
  130. 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))));
  131. if form1.Raschet4.Enabled then begin
  132. P45k:=0;P56k:=0; end else
  133. 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))));
  134. if form1.Raschet5.Enabled then begin
  135. P56k:=0; end else
  136. 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))));
  137. k:=H/342;
  138. Y8=Y1+(H-P1st)/k;
  139. Y12=Y1+(H-P2st)/k;
  140. Y16=Y1+(H-P0k)/k;
  141. Y20= Y1+(H-P12k)/k;
  142. Y24=Y1+(H-P23k)/k;
  143. Y28=Y1+(H-P34k)/k;
  144. Y32=Y1+(H-P45k)/k;
  145. Y36=Y1+(H-P56k)/k;
  146. if Form1.PageControl1.TabIndex=0 then begin J:=8;
  147. rectangle(x7,y7,x8,y8);rectangle(x11,y11,x12,y12);rectangle(x15,y15,x15,y15);
  148. end;
  149. if Form1.PageControl1.TabIndex=1 then J:=10;
  150. if Form1.PageControl1.TabIndex=2 then J:=12;
  151. if Form1.PageControl1.TabIndex=3 then J:=14;
  152. if Form1.PageControl1.TabIndex=4 then J:=16;
  153. if Form1.PageControl1.TabIndex=5 then J:=18;
  154. with Image1.canvas do begin
  155. J0:=0;
  156. while J0<=J do begin rectangle(b,c,d,e);
  157. J0:=J0+1;
  158.  
  159. end;
  160. end;
  161. end;
  162. end;
  163. end.


Емельянов Константин Игоревич Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Емельянов Константин Игоревич (статус: Посетитель)
Вопрос отправлен: 7 сентября 2010, 09:18
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:44
Выполнено за 0.03 сек.