IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Объекты и классы
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


Вот задали прогу..
Нужно создать свой класс "прямоугольник", вывести на канву восемь объектов разных цветов этого класса в 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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 12.08.2022 15:28
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name