end;
{Реакция на нажатие кнопки «Очистить»}
procedure TForm1.SpeedButton3Click(Sender: TObject);
var i,j:byte;
R:TGridRect;
begin
R.Left:=1;R.Top:=1;R.Right:=4;R.Bottom:=4; {Закрашиваем таблицы}
T1.Selection:=R;
T2.Selection:=R;
T3.Selection:=R;
Num:=0; {Номер эксперимента =0}
for i:=1 to 4 do {очищаем таблицы}
for j:=1 to 4 do
begin
T1.Cells[i,j]:='';
T2.Cells[i,j]:='';
T3.Cells[i,j]:='';
end;
for i:=1 to 10 do
for j:=0 to 1 do
begin
SG1.Cells[i,j]:='';
SG2.Cells[i,j]:='';
end;
SpeedButton2.Enabled:=false; {Активируем и деактивируем кнопки}
SpeedButton1.Enabled:=true;
SpeedButton3.Enabled:=false;
Speedbutton4.Enabled:=false;
Speedbutton5.Enabled:=false;
Speedbutton7.Enabled:=false;
end;
{реакция на «Задать АК»}
procedure TForm1.SpeedButton2Click(Sender: TObject);
var Yes:boolean;
i:byte;
R:TGridRect;
begin
R.Left:=1;R.Top:=1;R.Right:=4;R.Bottom:=4;
T1.Selection:=R;
T2.Selection:=R;
T3.Selection:=R;
inc(Num); {Номер эксперимента = +1}
randomize;
Yes:=false;
Repeat {проверяем на наличие свободных АК}
k:=random(4);
for i:=0 to 3 do
if a[1,i,k]=1 then
Yes:=true;
until Yes=true;
AK:=random(4)+k*4; {Задаём АК }
H:=random(4); {Задаём путь}
SG1.Cells[Num,0]:=inttostr(AK);
SG1.Cells[Num,1]:=inttostr(H);
Rashchet; {вызываем процедуру расчета}
if Num=8 then Speedbutton2.Enabled:=false; {деактивируем кнопку}
end;
{Реакция на «Графич. Пр.» }
procedure TForm1.SpeedButton5Click(Sender: TObject);
var R,R1:TRect;
begin
form1.Enabled:=false; {Запрещаем форму 1 и рисуем путь на форме 2}
R1:=Rect((AK mod 4)*20,0,(AK mod 4)*20+20,55);
case AK div 4 of
0:form2.Image3.Top:=20;
1:form2.Image3.Top:=77;
2:form2.Image3.Top:=135;
3:form2.Image3.Top:=192;
end;
R:=Rect(0,0,20,55);
form2.Image3.Canvas.CopyRect(R,form2.Image2.Canvas,R1);
R1:=Rect(H*67,0,H*67+67,58);
R:=Rect(0,0,67,58);
form2.Image5.Canvas.CopyRect(R,form2.Image4.Canvas,R1);
case E of
0:form2.Image5.Top:=9;
1:form2.Image5.Top:=66;
2:form2.Image5.Top:=124;
3:form2.Image5.Top:=181;
end;
R:=Rect(0,0,79,231);
R1:=Rect((k*4+kom1)*79,0,(k*4+kom1)*79+79,231);
form2.Image7.Canvas.CopyRect(R,form2.Image6.Canvas,R1);
R1:=Rect(kom2*79,0,kom2*79+79,231);
form2.Image8.Canvas.CopyRect(R,form2.Image6.Canvas,R1);
form2.show; {выводим форму 2 на экран}
end;
{реакция на «Выделить маршрут»}
procedure TForm1.SpeedButton7Click(Sender: TObject);
var GO:TGridRect;
begin {Выделяем пройденные точки в таблицах}
GO.Left:=kom1+1;GO.Top:=k+1;GO.Right:=kom1+1;GO.Bottom:=k+1;
T1.Selection:=GO;
GO.Left:=kom1+1;GO.Top:=E+1;GO.Right:=kom1+1;GO.Bottom:=E+1;
T2.Selection:=GO;
GO.Left:=H+1;GO.Top:=E+1;GO.Right:=H+1;GO.Bottom:=E+1;
T3.Selection:=GO;
speedbutton7.Enabled:=false;
end;
{ Р. На «Занулить»}
procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
a[1,kom1,k]:=0; {Зануляем}
a[2,kom1,E]:=0;
a[3,H,E]:=0;
T1.Cells[kom1+1,k+1]:='0';
T2.Cells[kom1+1,E+1]:='0';
T3.Cells[H+1,E+1]:='0';
Speedbutton4.Enabled:=false;
end;
end.
{Модуль Unit2}
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, ImgList;
type
TForm2 = class(TForm)
Image1: TImage;
Image2: TImage;
Image3: TImage;
Image4: TImage;
Image5: TImage;
Image6: TImage;
Image7: TImage;
Image8: TImage;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
form1.enabled:=true; {при закрытии формы 2 активируем форму 1}
end;
end.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.