用Delphi制作桌面小精灵
软件世界
我们在网上冲浪时,经常会看到弹出的桌面小窗体,有时做广告,有时向你致以节日的问候,人们称它为桌面小精灵。有的桌面小精灵自动移动,有的固定在屏幕的某一角落,动画闪烁,煞是迷人。本人用Delphi制作了一款桌面小精灵,愿与大家共享。
本桌面小精灵的实现功能:当运行它时,在屏幕的左下角显示一无边框、无标题栏的小窗体,并自动向屏幕的右上角移动。窗体上的小精灵──可爱的马先生,一会跃起、张嘴高呼“马到成功!”,一会含情脉脉的向你招手做“再见”。同时,还不断向你闪烁显示当前时间,时刻提醒你抓紧时间!当你嫌它碍事时,你可以按下鼠标左键,将它拖到任意位置,当你厌烦它不停移动,你可以双击鼠标左键,它会老老实实呆在原地不动,只要你用鼠标轻轻一单击,它又会高高兴兴的上路。当你单击“再见”时,桌面小精灵就会消失,你不想一试身手吗?请跟我来!
1.启动Delphi (5.0,6.0 均可) ,系统会自动生成一窗体,设置窗体属性如下:Name属性为 Form1, BorderStyle属性为bsNone,FormStyle属性为 StyOnTop,Height属性值240,Width属性值209(窗体的Height、Width值据你想要设计的桌面精灵的大小来决定)。点击Save All按钮,保存单元文件Unit1.pas,工程文件 Project1.dpr在同一文件夹中((图1))。

2.在窗体上分别添加组件,设置属性如下:
(1)在窗体上分别添加两个Image组件,Name属性分别设为 Image1、Image2,Align属性均设为alClient(以使Image组件充满整个窗体),Image1的Enabled为False,Image2的Enabled为True,然后通过Picture属性为Image1、Image2添加图片(适合的图片格式:bmp,jpg),添加的两幅图片,应是同一动物,又有动作上的差别。
(2)在Image上再添加两个Timer 组件,Name属性分别为Timer1、Timer2,Enabled属性均为True,Interval属性均为1000毫秒 。
(3)在Image上再添加一个Label组件,Name:=Label1,Caption:=“马到成功!”,Enabled:=True,Font属性为“华文行楷 ,粗斜体,三号字,红色”(根据你的图片设置适当的字体、字号、字体颜色)。
(4)在Image上再添加一个Panel 组件,设置属性:Name:=Panel1;
Caption:=时间;Color:=clBlue;Font设为:华文彩云、三号、黄色。
3.添加源代码如下:
unit Unit1;
interface
uses Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,ExtCtrls,jpeg, StdCtrls;
type
TForm1=class(TForm)
Image1:TImage;
Image2:TImage;
Timer1:TTimer;
Timer2:TTimer;
Label1:TLabel;
Panel1:TPanel;
procedure Timer1Timer(Sender:TObject);
procedure Timer2Timer(Sender:TObject);
procedure Panel1Click(Sender:TObject);
procedure FormMouseDown(Sender:TObject;Button:TMouseButton;shift:TShiftState; X,Y:Integer);
procedure FormCreate(Sender:TObject);
procedure Image1Click(Sender:TObject);
procedure Image2Click(Sender:TObject);
procedure Image1DblClick(Sender:TObject);
procedure Image2DblClick(Sender:TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1:TForm1;
implementation
{$R *.DFM}
//用Timer1控制两图片、标签及时间的显示
procedure TForm1.Timer1Timer(Sender:TObject);
begin
if (form1.Image1.Visible=true) then
begin
Image1.Visible:=false;
Image2.Visible:=true;
Label1.Visible:=false;
panel1.Caption:='再见!';
end
else
begin
Image1.Visible:=true;
Image2.Visible:=false;
Label1.visible:=true;
panel1.caption:=timetostr(time());
end;
end;
//用Timer2控制窗体的移动
procedure TForm1.Timer2Timer(Sender:TObject);
begin
if form1.Left>=750 then
begin
form1.Top:=350;
form1.Left:=0;
end
else
form1.Left:=form1.Left+5;
form1.Top:=form1.Top-3;
end;
procedure TForm1.Panel1Click(Sender:TObject);
begin
close;
end;
//实现用鼠标点住窗体的任意位置,拖动窗体
procedure TForm1.FormMouseDown(Sender:TObject;Button:TMouseButton);
Shift:TShiftState; X,Y: Integer);
begin
ReleaseCapture;
Perform(WM_SYSCOMMAND,$f012,0)
end;
//设置窗体的初始化位置
procedure TForm1.FormCreate(Sender:TObject);
begin
left:=0;
top:=350;
end;
//单击Image1、Image2时,Timer2重新开始工作,实现窗体的再移动
procedure TForm1.Image1Click(Sender:TObject);
begin
timer2.Enabled:=true;
end;
procedure TForm1.Image2Click(Sender:TObject);
begin
timer2.Enabled:=true;
end;
//双击Image1、Image2时,Timer2停止工作,实现窗体的固定不动效果
procedure TForm1.Image1DblClick(Sender:TObject);
begin
timer2.Enabled:=false;
end;
procedure TForm1.Image2DblClick(Sender:TObject);
begin
timer2.Enabled:=false;
end;
end;
4.将该工程的 Project1.exe文件发送到桌面,以便随时运行自己的桌面小精灵。
5.运行前效果如(图2):
