delphi怎样实现鼠标移上图片1显示窗体1移出窗体1消失?
3个回答
展开全部
我觉得没那么复杂呀,我专门看了下QQ,你的鼠标放在头像上的时候显示另一个窗体,一旦移出图像就关闭显示的窗体,因此我的考虑是定义头像周围的对像的ONMOUSEMOVE事件来取消显示。我就在窗体上放了一个IMAGE控件,然后就是FORM了,我觉得可以分别在图像周围的窗体控件分别关联一下ONMOUSEMOVE事件就可以解决这个问题了。
unit ImageForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, dxGDIPlusClasses, ExtCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
bShowing:Boolean;//这个变量用来表示Form2是否显示出来了
implementation
uses ImageFormShowAnotherForm;
{$R *.dfm}
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
begin
if bShowing=False then
begin
Application.CreateForm(TForm2,form2);
Form2.Show;
end;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if bShowing =True then
Form2.Close;
end;
end
//下面是要显示出来的窗体
unit ImageFormShowAnotherForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm2 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses ImageForm;
{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
begin
bShowing :=True;
//Do Something;
end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
bShowing :=False;
end;
end
当然你还可以在FORM1上放个TIMER来决定鼠标停在图像上多长时间才显示FORM2.
unit ImageForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, dxGDIPlusClasses, ExtCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
bShowing:Boolean;//这个变量用来表示Form2是否显示出来了
implementation
uses ImageFormShowAnotherForm;
{$R *.dfm}
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
begin
if bShowing=False then
begin
Application.CreateForm(TForm2,form2);
Form2.Show;
end;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if bShowing =True then
Form2.Close;
end;
end
//下面是要显示出来的窗体
unit ImageFormShowAnotherForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm2 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses ImageForm;
{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
begin
bShowing :=True;
//Do Something;
end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
bShowing :=False;
end;
end
当然你还可以在FORM1上放个TIMER来决定鼠标停在图像上多长时间才显示FORM2.
展开全部
rsorPos.X);Mouse.CursorPos.X);
你可以放置TIMER计时器设定它的Interval为你希望的间断时间,放置一个IMAGE;如果在这期间你点了某个点然后取它的坐标,在此处将IMAGE的LEFT,TOP设置成你的当前点,然后再用IMAGE的LOAGFROMFILE函数将你的图片放进去就应该可以了.不过我感觉你的意思好象不是任意一点就能放该图片吧?你怎么还希望某个区域的点放图片?可某个区域的点是不固定的啊?区域也不固定,除非你初始化的时候设置
你可以放置TIMER计时器设定它的Interval为你希望的间断时间,放置一个IMAGE;如果在这期间你点了某个点然后取它的坐标,在此处将IMAGE的LEFT,TOP设置成你的当前点,然后再用IMAGE的LOAGFROMFILE函数将你的图片放进去就应该可以了.不过我感觉你的意思好象不是任意一点就能放该图片吧?你怎么还希望某个区域的点放图片?可某个区域的点是不固定的啊?区域也不固定,除非你初始化的时候设置
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
改写一下TImage控件,加入OnMouseEnter和OnMouseLeave事件。
具体实现方法可以参看delphi 中 TCustomLabel 中的
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
这两个内容
具体实现方法可以参看delphi 中 TCustomLabel 中的
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
这两个内容
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询