当鼠标悬停在 Delphi 中的 Timage 组件上时显示表单
Display a form while mouse hovers over a Timage component in Delphi
我只想在光标像提示一样悬停在 TImage 组件上时显示表单。我可以使用“OnMouseMove”事件来显示表单,但是我不确定鼠标离开图像后如何隐藏表单。我该怎么做?
提前致谢
在您的表单中添加一个名为 Timer1 的 TTimer 控件(可能来自系统选项卡控件)。
将 Timer1 Inteval 属性 设置为 100,这意味着它将每 100 毫秒检查一次光标位置,(一秒钟 10 次)。
将 Timer1 Enabled 属性 设置为 True。
在Timer1的OnTimer事件中添加如下代码:
procedure TForm1.Timer1Timer(Sender: TObject);
var
oCursorPos: TPoint;
oImagePos: TPoint;
bInside: boolean;
begin
//Get position of Cursor in Screen Coordinates
GetCursorPos(oCursorPos);
//Convert coordinates of Image1 from Client to Screen Coordinates
oImagePos := Self.ClientToScreen(Point(Image1.Left, Image1.Top));
bInside := (oCursorPos.x >= oImagePos.x) and (oCursorPos.x <= oImagePos.x + Image1.Width) and
(oCursorPos.y >= oImagePos.y) and (oCursorPos.y <= oImagePos.y + Image1.Height);
if bInside then
begin
//Cursor is over Image1 -> insert code to show the secondary form
end
else
begin
//Cursor is not over Image1 -> insert code to hide the secondary form
end;
end;
就这些了。
我只想在光标像提示一样悬停在 TImage 组件上时显示表单。我可以使用“OnMouseMove”事件来显示表单,但是我不确定鼠标离开图像后如何隐藏表单。我该怎么做?
提前致谢
在您的表单中添加一个名为 Timer1 的 TTimer 控件(可能来自系统选项卡控件)。
将 Timer1 Inteval 属性 设置为 100,这意味着它将每 100 毫秒检查一次光标位置,(一秒钟 10 次)。
将 Timer1 Enabled 属性 设置为 True。
在Timer1的OnTimer事件中添加如下代码:
procedure TForm1.Timer1Timer(Sender: TObject);
var
oCursorPos: TPoint;
oImagePos: TPoint;
bInside: boolean;
begin
//Get position of Cursor in Screen Coordinates
GetCursorPos(oCursorPos);
//Convert coordinates of Image1 from Client to Screen Coordinates
oImagePos := Self.ClientToScreen(Point(Image1.Left, Image1.Top));
bInside := (oCursorPos.x >= oImagePos.x) and (oCursorPos.x <= oImagePos.x + Image1.Width) and
(oCursorPos.y >= oImagePos.y) and (oCursorPos.y <= oImagePos.y + Image1.Height);
if bInside then
begin
//Cursor is over Image1 -> insert code to show the secondary form
end
else
begin
//Cursor is not over Image1 -> insert code to hide the secondary form
end;
end;
就这些了。