Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Spin;
type
TMainForm = class(TForm)
rLabel: TLabel;
SpinEdit: TSpinEdit;
ColorButton: TButton;
Shape1: TShape;
Image: TImage;
ColorDialog: TColorDialog;
TypeFigure: TRadioGroup;
ExitButton: TButton;
procedure FormActivate(Sender: TObject);
procedure ImageMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure ExitButtonClick(Sender: TObject);
private
{ Private declarations }
public
procedure ClearFigList;
end;
var
MainForm: TMainForm;
FigList: TList;
implementation
{$R *.dfm}
Uses Unit2;
procedure TMainForm.ClearFigList;
var
i: Integer;
begin
if FigList.Count = 0 then Exit;
for i := 0 to FigList.Count - 1 do
TMyFigure(FigList.Items[i]).Free;
FigList.CLear;
end;
procedure TMainForm.FormActivate(Sender: TObject);
begin
Image.Canvas.Brush.Color:=clWhite; {установить белый фон}
Image.Canvas.Pen.Color:=clBlack; {установить цвет рисования}
end;
procedure TMainForm.ImageMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
C:TMyFigure;
begin
if Button=mbLeft then {если нажата левая кнопка мыши}
begin
{если объект создан, то уничтожить его}
case TypeFigure.ItemIndex of
0: C:=TMyCircle.Create(Image,X,Y,SpinEdit.Value,
Image.Canvas.Pen.Color); {конструировать}
1: C:=TMySquare.Create(Image,X,Y,SpinEdit.Value,
Image.Canvas.Pen.Color); {конструировать}
2: C:=TMyRomb.Create(Image,X,Y,SpinEdit.Value,
Image.Canvas.Pen.Color);
end;
C.Draw; {изобразить объект с заданными параметрами}
FigList.Add(C);
end;
end;
procedure TMainForm.ExitButtonClick(Sender: TObject);
begin
Application.Terminate;
end;
Initialization
FigList := TList.Create;
Finalization
ClearFigList;
FigList.Free;
end.
Снова пишу на коленке, поэтому внимательно проверить надо.
Красным пометил изменения.
Смену цвета и размера я убрал, тут продумать надо че хотим (если фигур несколько надо знать у какой что менять).
Принцип должен быть ясен, дальше - копать
З.Ы. Тут тоже самое, но при каждом новом клике по имэйджу создается новая фигура.