Показать сообщение отдельно
  #5  
Старый 19.05.2010, 07:49
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 663
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Код:
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.
Снова пишу на коленке, поэтому внимательно проверить надо.
Красным пометил изменения.
Смену цвета и размера я убрал, тут продумать надо че хотим (если фигур несколько надо знать у какой что менять).
Принцип должен быть ясен, дальше - копать

З.Ы. Тут тоже самое, но при каждом новом клике по имэйджу создается новая фигура.
Ответить с цитированием