Нужно создать свой класс "прямоугольник", вывести на канву восемь объектов разных цветов этого класса в 2 строки, затем по щелчку запомнить выбранный цвет в переменную, которую в дальнейшем можно будет как-то использовать в других процедурах.После вывести на канву 8 объектов так, чтобы цвета располагались в другом порядке и снова запомнить выбранный цвет.
Я вот создал свой класс, но никак не могу теперь написать процедуру выбора цвета.Мог бы кто-нибудь подсказать, что и как нужно использовать?
Код
unit UnitLucher;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TFormLucher = class(TForm)
BeginButton: TBitBtn;
ExitButton: TBitBtn;
procedure BeginButtonClick(Sender: TObject);
procedure ExitButtonClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TRectangle = class
x,y,dx,dy:integer;
rectcolor:word;
constructor Create(x1,y1,x2,y2:integer;acolor:word);
procedure Draw(acolor:word;IsShow:boolean);virtual;
procedure Show(acolor:word);
procedure Hide(acolor:word);
procedure MoveTo(adx,ady:integer;acolor:word);
end;
Tablica = class
A:array[1..8] of TRectangle;
procedure Create(acolor:word);
procedure ShowAll(acolor:word);
end;
var
FormLucher: TFormLucher;
acolor:word;
implementation
{$R *.dfm}
constructor TRectangle.Create;
begin
x:=x1;
y:=y1;
dx:=x2-x1;
dy:=y2-y1;
rectcolor:=acolor;
end;
procedure TRectangle.Draw;
begin
Rectangle(acolor,x,y,x+dx,y+dy);
FloodFill(acolor,x+1,y+1,acolor);
end;
procedure TRectangle.Show;
begin
Draw(acolor,true);
end;
procedure TRectangle.Hide;
begin
Draw(acolor,false);
end;
procedure TRectangle.MoveTo;
begin
Hide(acolor);
x:=x+adx;
y:=y+ady;
Show(acolor);
end;
procedure Tablica.Create;
var
i:integer;
begin
for i:=1 to 4 do begin
A[i].Create((FormLucher.Width div 9)+(i-1)*(2*FormLucher.Width div 9),
FormLucher.Height div 7,
(2*FormLucher.Width div 9)+(i-1)*(2*FormLucher.Width div 9),
2*FormLucher.Height div 7,acolor);
end;
for i:=5 to 8 do begin
A[i].Create((FormLucher.Width div 9)+(i-5)*(2*FormLucher.Width div 9),
3*FormLucher.Height div 7,
(2*FormLucher.Width div 9)+(i-5)*(2*FormLucher.Width div 9),
4*FormLucher.Height div 7,acolor);
end;
ShowAll(acolor);
end;
procedure Tablica.ShowAll;
var
i:integer;
begin
acolor:=clsilver;
for i:=1 to 8 do begin
A[i].Show(acolor);
acolor:=acolor+1;
end;
end;
var
Table:Tablica;
procedure TFormLucher.BeginButtonClick(Sender: TObject);
begin
with FormLucher.Canvas do begin
Table.Create(acolor);
end;
end;
procedure TFormLucher.ExitButtonClick(Sender: TObject);
begin
Close;
end;
end.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TFormLucher = class(TForm)
BeginButton: TBitBtn;
ExitButton: TBitBtn;
procedure BeginButtonClick(Sender: TObject);
procedure ExitButtonClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TRectangle = class
x,y,dx,dy:integer;
rectcolor:word;
constructor Create(x1,y1,x2,y2:integer;acolor:word);
procedure Draw(acolor:word;IsShow:boolean);virtual;
procedure Show(acolor:word);
procedure Hide(acolor:word);
procedure MoveTo(adx,ady:integer;acolor:word);
end;
Tablica = class
A:array[1..8] of TRectangle;
procedure Create(acolor:word);
procedure ShowAll(acolor:word);
end;
var
FormLucher: TFormLucher;
acolor:word;
implementation
{$R *.dfm}
constructor TRectangle.Create;
begin
x:=x1;
y:=y1;
dx:=x2-x1;
dy:=y2-y1;
rectcolor:=acolor;
end;
procedure TRectangle.Draw;
begin
Rectangle(acolor,x,y,x+dx,y+dy);
FloodFill(acolor,x+1,y+1,acolor);
end;
procedure TRectangle.Show;
begin
Draw(acolor,true);
end;
procedure TRectangle.Hide;
begin
Draw(acolor,false);
end;
procedure TRectangle.MoveTo;
begin
Hide(acolor);
x:=x+adx;
y:=y+ady;
Show(acolor);
end;
procedure Tablica.Create;
var
i:integer;
begin
for i:=1 to 4 do begin
A[i].Create((FormLucher.Width div 9)+(i-1)*(2*FormLucher.Width div 9),
FormLucher.Height div 7,
(2*FormLucher.Width div 9)+(i-1)*(2*FormLucher.Width div 9),
2*FormLucher.Height div 7,acolor);
end;
for i:=5 to 8 do begin
A[i].Create((FormLucher.Width div 9)+(i-5)*(2*FormLucher.Width div 9),
3*FormLucher.Height div 7,
(2*FormLucher.Width div 9)+(i-5)*(2*FormLucher.Width div 9),
4*FormLucher.Height div 7,acolor);
end;
ShowAll(acolor);
end;
procedure Tablica.ShowAll;
var
i:integer;
begin
acolor:=clsilver;
for i:=1 to 8 do begin
A[i].Show(acolor);
acolor:=acolor+1;
end;
end;
var
Table:Tablica;
procedure TFormLucher.BeginButtonClick(Sender: TObject);
begin
with FormLucher.Canvas do begin
Table.Create(acolor);
end;
end;
procedure TFormLucher.ExitButtonClick(Sender: TObject);
begin
Close;
end;
end.