delphi怎样实现鼠标移上图片1显示窗体1移出窗体1消失?

如题,想实现类似于QQ天气预报那种鼠标移动到天气图标显示出窗体form1移出则消失。... 如题,想实现类似于QQ天气预报那种鼠标移动到天气图标显示出窗体form1移出则消失。 展开
 我来答
Cybor2010
2011-04-14 · 超过21用户采纳过TA的回答
知道答主
回答量:93
采纳率:0%
帮助的人:46.8万
展开全部
我觉得没那么复杂呀,我专门看了下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.
02p2uvkpb
2011-04-09 · TA获得超过1247个赞
知道小有建树答主
回答量:1433
采纳率:0%
帮助的人:889万
展开全部
rsorPos.X);Mouse.CursorPos.X);
你可以放置TIMER计时器设定它的Interval为你希望的间断时间,放置一个IMAGE;如果在这期间你点了某个点然后取它的坐标,在此处将IMAGE的LEFT,TOP设置成你的当前点,然后再用IMAGE的LOAGFROMFILE函数将你的图片放进去就应该可以了.不过我感觉你的意思好象不是任意一点就能放该图片吧?你怎么还希望某个区域的点放图片?可某个区域的点是不固定的啊?区域也不固定,除非你初始化的时候设置
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
量无海大
2011-04-08 · 超过56用户采纳过TA的回答
知道小有建树答主
回答量:90
采纳率:0%
帮助的人:144万
展开全部
改写一下TImage控件,加入OnMouseEnter和OnMouseLeave事件。
具体实现方法可以参看delphi 中 TCustomLabel 中的
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
这两个内容
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式