按照书上的列子写的代码,编译时出现未定义 DrawingTool: TDrawingTool,奇怪了,不知哪里出错了,代码如下:
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, ComCtrls, Buttons;type
  TForm1 = class(TForm)
    Panel1: TPanel;
    LineSpeedButton: TSpeedButton;
    RectangleSpeedButton: TSpeedButton;
    RoundSpeedButton: TSpeedButton;
    EllipseSpeedButton: TSpeedButton;
    StatusBar1: TStatusBar;
    ScrollBox1: TScrollBox;
    Image: TImage;
    procedure FormCreate(Sender: TObject);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure LineSpeedButtonClick(Sender: TObject);
    procedure RectangleSpeedButtonClick(Sender: TObject);
    procedure EllipseSpeedButtonClick(Sender: TObject);
    procedure RoundSpeedButtonClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    DrawingTool: TDrawingTool;  这里已经定义了怎么会出错,是不是要加载控件,哪里缺了什么//
    Origin,MovePt : TPoint;
    Drawing: Boolean;     CurrentFile: string;
     procedure DrawShape(TopLeft, BottomRight: TPoint; AMode: TPenMode);
  end;var
  Form1: TForm1;implementation
 uses Clipbrd,Jpeg;
{$R *.dfm}procedure TForm1.DrawShape(TopLeft, BottomRight: TPoint; AMode: TPenMode);
{绘图过程}
begin
  with Image.Canvas do
  begin
    Pen.Mode := AMode;
    case DrawingTool of
      dtLine:
        begin
          Image.Canvas.MoveTo(TopLeft.X, TopLeft.Y);
          Image.Canvas.LineTo(BottomRight.X, BottomRight.Y);
        end;
      dtRectangle: Image.Canvas.Rectangle(TopLeft.X, TopLeft.Y, BottomRight.X,
        BottomRight.Y);
      dtEllipse: Image.Canvas.Ellipse(Topleft.X, TopLeft.Y, BottomRight.X,
        BottomRight.Y);
      dtRoundRect: Image.Canvas.RoundRect(TopLeft.X, TopLeft.Y, BottomRight.X,
        BottomRight.Y, (TopLeft.X - BottomRight.X) div 2,
        (TopLeft.Y - BottomRight.Y) div 2);
    end;
  end;
end;procedure TForm1.FormCreate(Sender: TObject);
var
  Bitmap: TBitmap;
begin
  Bitmap := nil;
  try
    Bitmap := TBitmap.Create;
    Bitmap.Width := 700;
    Bitmap.Height :=400;
    Image.Picture.Graphic:= Bitmap;
  finally
    Bitmap.Free;
  end;
end;procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Drawing := True;
  Image.Canvas.MoveTo(X, Y);
  Origin := Point(X, Y);
  MovePt := Origin;
  StatusBar1.Panels[0].Text := Format('Origin: (%d, %d)', [X, Y]);
end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if Drawing then
  begin
    DrawShape(Origin, MovePt, pmNotXor);
    MovePt := Point(X, Y);
    DrawShape(Origin, MovePt, pmNotXor);
  end;
  StatusBar1.Panels[1].Text := Format('当前位置: (%d, %d)', [X, Y]);
end;procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Drawing then
  begin
    DrawShape(Origin, Point(X, Y), pmCopy);
    Drawing := False;
  end;
end;procedure TForm1.LineSpeedButtonClick(Sender: TObject);
begin
 DrawingTool := dtLine;
end;procedure TForm1.RectangleSpeedButtonClick(Sender: TObject);
begin
DrawingTool := dtRectangle;
end;procedure TForm1.EllipseSpeedButtonClick(Sender: TObject);
begin
DrawingTool := dtEllipse;
end;procedure TForm1.RoundSpeedButtonClick(Sender: TObject);
begin
DrawingTool := dtRoundRect;
end;end.