在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值進行判斷也能達到同樣的功能。
以上是我對Delphi編程的一點經驗,希望對大家有用。上述代碼在Delphi 4.0+Win 98中運行通過。