![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
yngwie-malmsteen |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот задали прогу..
Нужно создать свой класс "прямоугольник", вывести на канву восемь объектов разных цветов этого класса в 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. |
![]() ![]() |
![]() |
Текстовая версия | 8.07.2025 16:10 |