在Windows 9x操作系统中,都有选单自动隐藏功能,不仅可以扩大应用软件的可视范围,而且又不耽误开始选单的操作,特别是同时打开多个应用程序时,能进行方便地切换,不让别人知道你后台运行的程序。在这里,我为大家介绍一下用Delphi实现该项功能的方法。
首先,建立一个新的Project。然后,在form1中添加一个Panel控件,它的Align属性为alBottom,Visible属性为true,并记下top属性的值,这里为307。在form1中添加一个Image控件,它的Align属性为alClient。在Panel控件中添加三个Button控件。Button1的Caption属性为“开启自动隐藏”,Enabled属性为true;Button2的Caption属性为“关闭自动隐藏”,Enabled属性为false;Button3的Caption属性为“退出”,Enabled属性为false。
最后,要对各个控件的操作进行编程。在这里要设置一个Boolean类型的全局变量flag,初值为false。
完整程序如下:
unit test;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TForm1 = class TForm)
Image1: TImage;
Panel1: TPanel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click Sender: TObject);
procedure Image1MouseMove Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Button2Click Sender: TObject);
procedure Button3Click Sender: TObject);
procedure FormShow Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
flag:boolean=false;
{对开启/关闭自动隐藏选单进行标志}
implementation
{$R *.DFM}
procedure TForm1.FormShow Sender: TObject);
begin
image1.Picture.LoadFromFile ′c:\pwin98\安装程序.bmp′);
{在Image控件中装载图片}
end;
procedure TForm1.Image1MouseMove Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if flag then
if y〉307 then panel1.Visible:=true
{这里的307就是先前Panel中Top属性的值}
else panel1.Visible:=false;
end;
procedure TForm1.Button1Click Sender: TObject);
begin
flag:=true; {开启自动隐藏选单}
button1.Enabled:=false;
button2.Enabled:=true;
end;
procedure TForm1.Button2Click Sender: TObject);
begin
flag:=false;{关闭自动隐藏选单}
button1.Enabled:=true;
button2.Enabled:=false;
end;
procedure TForm1.Button3Click Sender: TObject);
begin
close;{关闭程序}
end;
end.
运行程序,看一下该功能的表现。
单击“开启自动隐藏”按钮,则窗口下部的控制选单被隐藏。移动鼠标,当鼠标接近窗口的底部时,控制选单出现,鼠标移出某个范围后选单又自动消失。效果如图所示:
单击“关闭自动隐藏”按钮,程序又恢复初始状态,鼠标的移动对选单没有任何影响。
该程序主要是对Image1MouseMove过程中鼠标x值的判断,实现选单的隐藏。同样的,如果应用程序的控制选单位于窗口的左边或右边时,对该过程的y值进行判断也能达到同样的功能。
|