不会吧,我的怎么没有错呢?是不是你定义的Handle类型不对?应定义为HBitmap。下面这段程序我在Delphi5.0中试过了,没有问题;
//Image1中有位图时
procedure TForm1.Button1Click(Sender: TObject);
var
  Handle: HBitmap;
begin
  if OpenPictureDialog1.Execute then
  begin
    Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
    Handle:=Image1.Picture.Bitmap.Handle;
  end;end;
//Image1中没有位图时
procedure TForm1.Button2Click(Sender: TObject);
var
  Handle: HBitmap;
begin
    Handle:=Image1.Picture.Bitmap.Handle;
end;
//你可以先单击Button2,再单击Button1试试,有问题再与我联系,[email protected]

解决方案 »

  1.   

    抱歉,是我没说清楚。
    我的Handle定义为Cardinal,Handle不管是IMAGE中有位图还是没有都不出错,但是在用Image.picture.bitmap.loadfromresourceid时,先前有位图就报错,没有就OK。Loadfromresourceid的第一个参数的类型就是Cardinal的嘛,不知道为什么会出错。
      

  2.   

    源代码如下:
    procedure TfrmMain.imgMaxMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
    {
        if Self.WindowState = wsMaximized then
            imgmax.Hint := '恢复窗口'
        else
            imgmax.Hint := '最大化';
    }
    end;procedure TfrmMain.imgCloseClick(Sender: TObject);
    begin
        close;
    end;procedure TfrmMain.imgMinClick(Sender: TObject);
    begin
        Self.WindowState := wsMinimized;
    end;procedure TfrmMain.imgMaxClick(Sender: TObject);
    begin
        imgmax.Visible := false;
        imgmaxed.Visible := true;
        Self.WindowState := wsMaximized;
    end;procedure TfrmMain.imgMaxedClick(Sender: TObject);
    begin
        imgmaxed.Visible := false;
        imgmax.Visible := true;
        Self.WindowState := wsNormal;
    end;procedure TfrmMain.imgTitleMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
        ReleaseCapture;    SendMessage(Self.handle,WM_SYSCOMMAND,SC_MOVE+HTCAPTION,0);
    end;procedure TfrmMain.imgTitleDblClick(Sender: TObject);
    begin
    {
        if Self.WindowState = wsMaximized then
            Self.WindowState := wsNormal
        else
            Self.WindowState := wsMaximized;
    }
    end;procedure TfrmMain.FormCreate(Sender: TObject);
    begin
        Application.OnActivate := MyActivate;
        Application.OnDeactivate := MyDeactivate;//此时,imgTitleLeft,imgTitle,imgTitleRight中不能有位图,否则会出错。
        iHandle1 := imgTitleLeft.Picture.bitmap.handle;
        iHandle2 := imgTitle.Picture.bitmap.handle;
        iHandle3 := imgTitleRight.Picture.bitmap.handle;
    end;procedure TfrmMain.MyActivate(Sender:TObject);
    begin
        imgTitleLeft.Picture.bitmap.loadfromresourceid(ihandle1,101);
        imgTitle.Picture.bitmap.loadfromresourceid(ihandle2,103);
        imgTitleRight.Picture.bitmap.loadfromresourceid(ihandle3,105);
    end;procedure TfrmMain.MyDeactivate(Sender:TObject);
    begin
        imgTitleLeft.Picture.bitmap.loadfromresourceid(ihandle1,102);
        imgTitle.Picture.bitmap.loadfromresourceid(ihandle2,104);
        imgTitleRight.Picture.bitmap.loadfromresourceid(ihandle3,106);
    end;
      

  3.   

    补充一下:iHandle1,iHandle2,iHandl3均为Cardinal。