我想实现这样的功能:
在form1中放置image1控件,其caption为“员工培训”
在form2中放置具体的员工培训的流程图(该流程图由多个image控件组成)
当鼠标移到image1时,显示form2(也就是显示员工培训的具体流程,以便用户选择)
当鼠标离开image1时,form2又自动消失求教
在form1中放置image1控件,其caption为“员工培训”
在form2中放置具体的员工培训的流程图(该流程图由多个image控件组成)
当鼠标移到image1时,显示form2(也就是显示员工培训的具体流程,以便用户选择)
当鼠标离开image1时,form2又自动消失求教
把image1的cursor的属性设置为crHandPoint
然后你再在mousermove事件中判断
Cursor的形状 根据形状来触发你想要实现的事件
呵呵
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls ,unit2;type
TForm1 = class(TForm)
Panel1: TPanel;
Image1: TImage;
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
procedure MouseLeave(var Msg:TMessage); message WM_MOUSELEAVE;
procedure mousehover(var Msg:TMessage); message WM_MOUSEHOVER;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
xh: TTrackMouseEvent;
begin
xh.cbSize := sizeof(xh);
xh.dwFlags := TME_LEAVE or TME_HOVER;
xh.hwndTrack := Handle;
xh.dwHoverTime := 0;
TrackMouseEvent(xh);
end;procedure TForm1.mousehover(var Msg: TMessage);
begin
form2.hide;
msg.Result:=0;
end;procedure TForm1.MouseLeave(var Msg: TMessage);
begin
form2.show;
Msg.Result:=0;
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;type
TForm1 = class(TForm)
Panel1: TPanel;
Image1: TImage;
procedure Panel1MouseMove(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;implementation
uses Unit2;
{$R *.dfm}
var i:integer;
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if i<>1 then
begin
Application.CreateForm(TForm2, Form2);
Form2.Dock(Panel1,Panel1.ClientRect);
Form2.Show;
i:=1;
end;
end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
try
if i=1 then
Form2.Close;
i:=0;
except
end;
end;end.
Form2就放你的那些流程图
其实就是做个没标题栏的漂亮小窗口
然后
hintwindowsclass := 你的窗口;这样MOuse指上去时原来的Hint就是你的PL小窗口了, 你在这个窗口绘制代码中根据Hint对象变化下就OK了。