unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Controls, Forms, Dialogs, Graphics,
StdCtrls, ExtCtrls;type
THidePosition = (hpLeft, hpTop, hpRight); TForm1 = class(TForm)
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormDestroy(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
FHided : Boolean; //窗体是否已经隐藏
FHidePosition : THidePosition; //窗体隐藏的位置
procedure CMMouseEnter(var Message: TMessage); message CM_MouseEnter;
protected public
{ Public declarations } end;var
Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.CMMouseEnter(var Message: TMessage);
begin
if FHided then
begin
case FHidePosition of
hpLeft : Left := 0;
hpTop : Top := 0;
hpRight : Left := Screen.Width - Width;
end;
FHided := false;
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
Constraints.MaxHeight := Screen.Height;
end;procedure TForm1.FormShow(Sender: TObject);
begin
//
end;procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
//
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
//
end;procedure TForm1.Timer1Timer(Sender: TObject);
var
p: TPoint;
bInForm: Boolean;
begin
if (not FHided) then
begin
GetCursorPos(p);
p := ScreenToClient(p);
bInForm := (p.X >-5 ) and (p.X <= Width)
and (p.Y > -27) and (p.Y <= Height);
if not bInForm then
begin
if ((Left < 10) and (Top < 10))
or ((Screen.Width - (Left + Width) < 10) and (Top < 10)) then
begin
Top := 0 - Height + 2;
FHidePosition := hpTop;
FHided := true;
end
else if Top < 10 then
begin
Top := 0 - Height + 2;
FHidePosition := hpTop;
FHided := true;
end
else if Left < 10 then
begin
Left := 0 - Width + 2;
FHidePosition := hpLeft;
FHided := true;
end
else if Screen.Width - (Left + Width) < 10 then
begin
Left := Screen.Width - 1;
FHidePosition := hpRight;
FHided := true;
end;
end;
end;
end;end.
Windows, Messages, SysUtils, Classes, Controls, Forms, Dialogs, Graphics,
StdCtrls, ExtCtrls;type
THidePosition = (hpLeft, hpTop, hpRight); TForm1 = class(TForm)
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormDestroy(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
FHided : Boolean; //窗体是否已经隐藏
FHidePosition : THidePosition; //窗体隐藏的位置
procedure CMMouseEnter(var Message: TMessage); message CM_MouseEnter;
protected public
{ Public declarations } end;var
Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.CMMouseEnter(var Message: TMessage);
begin
if FHided then
begin
case FHidePosition of
hpLeft : Left := 0;
hpTop : Top := 0;
hpRight : Left := Screen.Width - Width;
end;
FHided := false;
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
Constraints.MaxHeight := Screen.Height;
end;procedure TForm1.FormShow(Sender: TObject);
begin
//
end;procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
//
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
//
end;procedure TForm1.Timer1Timer(Sender: TObject);
var
p: TPoint;
bInForm: Boolean;
begin
if (not FHided) then
begin
GetCursorPos(p);
p := ScreenToClient(p);
bInForm := (p.X >-5 ) and (p.X <= Width)
and (p.Y > -27) and (p.Y <= Height);
if not bInForm then
begin
if ((Left < 10) and (Top < 10))
or ((Screen.Width - (Left + Width) < 10) and (Top < 10)) then
begin
Top := 0 - Height + 2;
FHidePosition := hpTop;
FHided := true;
end
else if Top < 10 then
begin
Top := 0 - Height + 2;
FHidePosition := hpTop;
FHided := true;
end
else if Left < 10 then
begin
Left := 0 - Width + 2;
FHidePosition := hpLeft;
FHided := true;
end
else if Screen.Width - (Left + Width) < 10 then
begin
Left := Screen.Width - 1;
FHidePosition := hpRight;
FHided := true;
end;
end;
end;
end;end.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货