Interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls,Unit2, Grids, Menus, ComCtrls;
type
massiv = array [0..500,0..500] of integer;
type
TForm1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Button3: TButton;
Image1: TImage;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N5: TMenuItem;
N4: TMenuItem;
StatusBar1: TStatusBar;
procedure Button3Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Cell;
procedure Button1Click(Sender: TObject);
procedure Strelka(x:integer; y:integer);
procedure RandomWrite(i:integer; j:integer);
procedure N2Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
procedure AppHint(Sender: TObject);
{ Private declarations }
public
{ Public declarations }
M,N:integer;
Mas : massiv;
Search : TSearch;
end;
var
Form1: TForm1;
Implementation
{$R *.dfm}
procedure TForm1.Strelka(x:integer;y:integer);
begin
Image1.Canvas.MoveTo(x,y);{x=20,y=20}
Image1.Canvas.LineTo(x-10,y-12);
Image1.Canvas.MoveTo(x,y);
Image1.Canvas.LineTo(x-10,y+12);
Image1.Canvas.MoveTo(x-10,y-12);
Image1.Canvas.LineTo(x-10,y-3);
Image1.Canvas.MoveTo(x-10,y+12);
Image1.Canvas.LineTo(x-10,y+3);
Image1.Canvas.MoveTo(x-10,y-3);
Image1.Canvas.LineTo(x-18,y-3);
Image1.Canvas.MoveTo(x-10,y+3);
Image1.Canvas.LineTo(x-18,y+3);
Image1.Canvas.MoveTo(x-18,y+3);
Image1.Canvas.LineTo(x-18,y-3);
end;
procedure TForm1.Cell;
var
i:integer;
rec:TRect;
begin
Rec.Left:=0;
Rec.Top:=0;
Rec.Bottom:=Image1.Height;
Rec.Right:=Image1.Width;
Image1.Canvas.Brush.Color:=clWhite;
Image1.Canvas.FillRect(Rec);
Image1.Canvas.Pen.Color:=clBlue;
Image1.Canvas.Pen.Width:=2;
for i:=0 to M do
begin
Image1.Canvas.MoveTo(540,Round(i*(500/M))+4);
Image1.Canvas.LineTo(40,Round(i*(500/M))+4);
end;
for i:=0 to N do
begin
Image1.Canvas.MoveTo(Round(i*(500/N))+40,504);
Image1.Canvas.LineTo(Round(i*(500/N))+40,4);
end;
//
Image1.Canvas.Pen.Color:=clRed;
Image1.Canvas.Pen.Width:=3;
Strelka(30,15);
Image1.Canvas.Pen.Color:=clGreen;
Strelka(570,490);
//
Image1.Canvas.Pen.Color:=clBlack;
Image1.Canvas.Pen.Width:=1;
end;
procedure TForm1.RandomWrite(i:integer; j:integer);
var
x1,x2,y1,y2:integer;
w,h:integer;
rec:TRect;
begin
h:=Round((500/N));
w:=Round((500/M));
//
if (i = 0)and(j = 0) then i:=1;
if (i = n-1)and(j = m-1) then i := n-2;
x1:=41+i*h;
y1:=5+j*w;
x2:=h+39+i*h;
y2:=w+3+j*w;
rec:=Rect(x1,y1,x2,y2);
Image1.Canvas.Brush.Color:=clSilver;
Image1.Canvas.FillRect(rec);
i:=0;
j:=0;
x1:=41+i*h;
y1:=5+j*w;
x2:=h+39+i*h;
y2:=w+3+j*w;
rec:=Rect(x1,y1,x2,y2);
Image1.Canvas.Brush.Color:=clRed;
Image1.Canvas.FillRect(rec);
//
i:=N-1;
j:=M-1;
x1:=41+i*h;
y1:=5+j*w;
x2:=h+39+i*h;
y2:=w+3+j*w;
rec:=Rect(x1,y1,x2,y2);
Image1.Canvas.Brush.Color:=clGreen;
Image1.Canvas.FillRect(rec);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
Button1.SetFocus;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
k,i,j:integer;
begin
M:=StrToInt(Edit1.Text);
N:=StrToInt(Edit2.Text);
if ((N>=1)and(N<=10))then N:=10;
if ((N>=11)and(N<=20))then N:=20;
if ((N>=21)and(N<=25))then N:=25;
if ((N>=26)and(N<=50))then N:=50;
if ((M>=1)and(M<=10))then M:=10;
if ((M>=11)and(M<=20))then M:=20;
if ((M>=21)and(M<=25))then M:=25;
if ((M>=26)and(M<=50))then M:=50;
if (M>50) then M:=50;
if (N>50) then N:=50;
Cell;
k:=1;
while k <= Round(N*M/4) do
begin
Randomize;
i:=Random(N);
j:=Random(M);
RandomWrite(i,j);
Inc(k);
end;
Search := TSearch.Create(true);
Search.Resume;
Search.Priority:=tpLower;
end;
procedure TForm1.N2Click(Sender: TObject);
begin
close;
end;
procedure TForm1.N4Click(Sender: TObject);
begin
ShowMessage('Лабораторная работа 7');
end;
procedure TForm1.N5Click(Sender: TObject);
begin
Application.HelpCommand(HELP_Finder,1);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnHint:= AppHint;
end;
procedure TForm1.AppHint(Sender: TObject);
begin
StatusBar1.Panels[0].Text := Application.Hint;
end;
end.
unit Unit2;
