为啥设计时加载图片(Picture属性)会出错

为什么设计时加载图片(Picture属性)会出错?
unit Button1;

interface

uses
  SysUtils, Classes, Controls, StdCtrls, Messages, Windows, Graphics;

type
  TBorderStyle = (bsNone, bsSolid);
  TButton1 = class(TButton)
  private
    { Private declarations }
    FBorderStyle : TBorderStyle;
    FIsFocused : Boolean;
    FPicture : TPicture;
    FUsePictureSize : Boolean;

    procedure SetBorderStyle(const Value: TBorderStyle);
    procedure PictureChange(Sender : TObject);
    procedure SetUsePictureSize(const Value: Boolean);
  protected
    { Protected declarations }
    procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
    procedure WMLButtonUp(var Message: TWMLButtonUp); message WM_LBUTTONUP;
    procedure WMRButtonDown(var Message: TWMRButtonDown); message WM_RBUTTONDOWN;
    procedure WMRButtonUp(var Message: TWMRButtonUp); message WM_RBUTTONUP;
    procedure DrawItem(DrawItemStruct: TDrawItemStruct);
    procedure CreateParams(var Params: TCreateParams); override;
    procedure CNMeasueItem(var message : TWMMeasureItem); message CN_MEASUREITEM;
    procedure CNDrawItem(var message : TWMDrawItem); message CN_DRAWITEM;
    procedure SetButtonStyle(ADefault: Boolean); override;
  public
    { Public declarations }
    constructor Create(AOwner : TComponent); override;
    destructor Destroy; override;
  published
    { Published declarations }

    property BorderStyle : TBorderStyle read FBorderStyle write SetBorderStyle;
    property Picture : TPicture read FPicture;
    property UsePictureSize : Boolean read FUsePictureSize write SetUsePictureSize;
  end;

procedure Register;

implementation

uses Dialogs;

procedure Register;
begin
  RegisterComponents('Lot LC', [TButton1]);
end;

{ TButton1 }

procedure TButton1.CNDrawItem(var message: TWMDrawItem);
begin
  if not(csDestroying in ComponentState) then
    DrawItem(Message.DrawItemStruct^);
end;

procedure TButton1.CNMeasueItem(var message: TWMMeasureItem);
var
  temp : TMeasureItemStruct;
begin
  temp := message.MeasureItemStruct^;
  temp.itemWidth := Width;
  temp.itemHeight := Height;
  message.MeasureItemStruct^ := temp;
end;

constructor TButton1.Create(AOwner: TComponent);
begin
  inherited;
  FIsFocused := False;
  FBorderStyle := bsSolid;
  FPicture := TPicture.Create;
  //FPicture.OnChange := PictureChange;
end;

procedure TButton1.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.Style := Params.Style or BS_OWNERDRAW;
end;

destructor TButton1.Destroy;
begin
  FPicture.Free;
  inherited;
end;

procedure TButton1.DrawItem(DrawItemStruct: TDrawItemStruct);
var
  hDC : THandle;
  Canvas : TCanvas;
  Rect : TRect;
begin
  hDC := DrawItemStruct.hDC;
  Canvas := TCanvas.Create;
  try
    Canvas.Handle := hDC;

    Rect := ClientRect;
    if FBorderStyle = bsSolid then Canvas.Rectangle(Rect);

    if Assigned(FPicture.Graphic) and not FPicture.Graphic.Empty then
    begin

      if FIsFocused then Canvas.Draw(2, 2 , FPicture.Graphic)
      else Canvas.Draw(0, 0, FPicture.Graphic);

      //BitBlt(hDC, 2, 2, Width - 2, Height - 2, FPicture.Graphic, 0, 0 , SRCCOPY);
    end;



    if FIsFocused then
    begin
      InflateRect(Rect, -3 , -3);
      Canvas.DrawFocusRect(Rect);
    end;