不会吧,我的怎么没有错呢?是不是你定义的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]
//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]
我的Handle定义为Cardinal,Handle不管是IMAGE中有位图还是没有都不出错,但是在用Image.picture.bitmap.loadfromresourceid时,先前有位图就报错,没有就OK。Loadfromresourceid的第一个参数的类型就是Cardinal的嘛,不知道为什么会出错。
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;