[DUG] Mouse over form
John Bird
johnkbird at paradise.net.nz
Tue Jul 4 15:43:04 NZST 2006
In case you are interested, I got a working example of how to have a form
change transparency when mouse over is done. I had to use a mixture of
Form1.ClientOrigin and Form1.Left and Form1.Width to get it working
correctly.
Why? Because evidently when the mouseleave event fires the mouse position
does not have the consistent postions in all 4 directions. Exiting to the
top and the left use different measures than exiting to the right and
bottom. Note this may be because I used a form with
BorderStyle:=bsToolWindow
If anyone has a simpler and more general solution I would be grateful...
procedure TForm1.FormMouseEnter(Sender: TObject);
begin
Form1.AlphaBlendValue:=TransparencyActive;
end;
procedure TForm1.FormMouseLeave(Sender: TObject);
const
borderSize:integer=4; //allow 4 pixels for border of form...
var
formpt,mousept:Tpoint;
begin
formpt:=Form1.ClientOrigin;
mousept:=mouse.CursorPos;
with Form1 do
begin
if (mousept.x > formpt.X) and
(mousept.y > formpt.Y) and
(mousept.X < Left+Width-BorderSize) and
(mousept.Y < Top + Height-BorderSize)
then
//still in form
AlphaBlendValue:=TransparencyActive
else
AlphaBlendValue:=TransparencyIdle;
end;
end;
John
More information about the Delphi
mailing list