想用delphi编一个闹钟程序?

我是刚开始学DELPHI的以前也没有学习过其他的编程语言,能不能帮我提供一些编写的步骤思想,有现成的代码就更好了,由于我是菜鸟,希望高手们可以尽量详细点...小弟先谢过... 我是刚开始学DELPHI的 以前也没有学习过其他的编程语言,能
不能帮我提供一些编写的步骤思想,有现成的代码就更好了,由于我是
菜鸟,希望高手们可以尽量详细点...小弟先谢过
展开
 我来答
jxsbb
2007-07-18 · TA获得超过383个赞
知道小有建树答主
回答量:314
采纳率:100%
帮助的人:393万
展开全部
新建一个程序,并在窗体中加入以下元件:
Timer1: TTimer;
Image1: TImage;//时钟的表盘
Edit1: TEdit; //日期框
Label1: TLabel;
PopupMenu1: TPopupMenu;
而后在 {$R *.DFM} 下面加入这么一句 {$R CLOCKSOU.RES} <--时钟的声音文件,
(注:CLOCKSOU.RES 是先用windows的记事本新建一个文件,并加入以下几行
CLICKBEL WAVE "CLICKBEL.WAV"
TIMEBELL WAVE "TIMEBELL.WAV"
并存为文件 CLOCKSOU.RC 然后在 DOS解面下用BRCC32.exe 将 CLOCKSOU.RC 编译
为 DELPHI 格式的资源文件 CLOCOSOU.RES,当然,您如果嫌步骤太烦,那吗最简单的,
到我的主页 http://www.suye.8u8.com 下载完整的程序代码)
OK,在完成上面的步骤后我们就可以在窗体的代码筐中输入以下代码。

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls,unit2, StdCtrls,inifiles,MMSystem, Menus;
type
TForm1 = class(TForm)
Timer1: TTimer;
Image1: TImage;
Edit1: TEdit;
Label1: TLabel;
PopupMenu1: TPopupMenu;
pop1: TMenuItem;
pop2: TMenuItem;
pop4: TMenuItem;
pop3: TMenuItem;
pop5: TMenuItem;
N1: TMenuItem;
procedure Timer1Timer(Sender: TObject);
procedure timdrow(tim:real;long,col:integer);
procedure FormCreate(Sender: TObject);
procedure Image1Click(Sender: TObject);
procedure pop1Click(Sender: TObject);
procedure pop2Click(Sender: TObject);
procedure pop4Click(Sender: TObject);
procedure pop5Click(Sender: TObject);
procedure pop3Click(Sender: TObject);
procedure tiniwr();
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure N1Click(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
CLOCKBELL,wid,pofse:integer;
tim1,tim2,tim3,tim4:real;
dtme: TDateTime;
timini:tinifile;
dtim,textdef,tmfilename:string;
implementation

{$R *.DFM}
{$R LL1.RES} //时钟的发声文件
procedure tform1.tiniwr();
begin
timini:=TIniFile.Create(tmfilename);
with timini do
begin
WriteString('内容','文字',textdef);
Writestring('参数','时间',dtim);
WriteBool('参数','报时允许',pop1.checked);
WriteBool('参数','秒响允许',pop2.checked);
WriteBool('参数','定时允许',pop3.checked);
end;
timini.free;
end;

procedure tform1.timdrow(tim:real;long,col:integer); //指针的过程函数。
var
xx,yy:integer;
vtt,vt:real;
begin
IF (TIM2=59) AND (TIM3=0) THEN TIM:=TIM-1;
IF (COL=3)or (col=6) THEN
if col=3 then VT:=TIM1*5+(TIM2/720)
else begin
VT:=TIM1*5+((TIM2-1)/720);
col:=5;
end
ELSE vt:=tim;
vt:=Pi-pi*vt/30-2*pi*(vt-15); //得出指针末端的 Y 坐标
vtt:=int(long*sin(vt))+45; //得出指针末端的 X 坐标
xx:=strtoint(floattostr(vtt));
vtt:=int(long*cos(vt))+45;
yy:=strtoint(floattostr(vtt));
case col of //判断所要画的指针是 分针、秒针或时针
0:begin
image1.Canvas.pen.Color:=clgray;
image1.Canvas.pen.Width:=1;
END;
1:BEGIN
image1.Canvas.pen.Color:=clRed;
image1.Canvas.pen.Width:=1;
END;
2:BEGIN
image1.Canvas.pen.color:=clblue;
image1.Canvas.pen.Width:=2;
END;
3:BEGIN
image1.canvas.pen.color:=clgreen;
image1.Canvas.pen.Width:=2;
END;
4:begin
image1.canvas.pen.color:=clblack;
image1.Canvas.pen.Width:=1;
END;
5:begin
image1.canvas.pen.color:=clgray;
image1.Canvas.pen.Width:=3;
END;
end;
IMAGE1.Canvas.Ellipse(43,43,47,47);
image1.Canvas.MoveTo(45,45);
image1.Canvas.Lineto(xx,yy);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
str1,str2:string;
begin
str1:=timetostr(time());
STR2:=COPY(STR1,2,1);
if str2=':' then pofse:=0 else pofse:=1;
EDIT1.TEXT:=' '+DATETOSTR(DATE()); //日期盘上的日期数据
str2:=copy(str1,pofse+6,2);
tim4:=strtofloat(str2);
if tim4<>tim3 then //判断是否到了移动指针的时间
begin
if (tim3=0) or (tim3=15) or (tim3=30)
or (tim3=45) then timdrow(tim3,39,4) else timdrow(tim3,39,0);
tim3:=tim4;
if pop2.checked then PlaySound(PChar('CLICKBEL'),
hInstance, snd_ASync or snd_Resource); //秒针的“滴答”发声
str2:=copy(str1,1,pofse+1);

IF(TIM3=0)AND(TIM2=59)THEN //判断是否到了发出整点报时“钟声”的时间
BEGIN
CLOCKBELL:=STRTOINT(STR2);
IF CLOCKBELL=0 THEN CLOCKBELL:=12;
END;
IF CLOCKBELL>12 THEN CLOCKBELL:=CLOCKBELL-12;
timdrow(tim1,26,6);
tim1:=strtofloat(str2);
timdrow(tim2,33,5);
str2:=copy(str1,pofse+3,2);
tim2:=strtofloat(str2);
timdrow(tim2,33,2);
IF (TIM2<>59) AND (TIM4<>0) THEN timdrow(tim1-1,26,3) ELSE TIMDROW(TIM1,26,3);
tim2:=strtofloat(str2);
str2:=copy(str1,pofse+3,2);
timdrow(tim3,39,1);
IF CLOCKBELL>=1 THEN
BEGIN
IF (CLOCKBELL<>0)and(pop2.checked) THEN
PlaySound(PChar('TIMEBELL'), hInstance,
snd_ASync or snd_Resource);//时钟的整点“钟声”发声
DEC(CLOCKBELL);
END;
if (pop3.checked)and(strtotime(dtim)<=time()) then//判断是否到了定时的时间
begin
form2.Button2.Caption:='取消';
clockbell:=120;
form2.Show; //显示给自己的提示。
end;
END;
end;

procedure TForm1.FormCreate(Sender: TObject); //读入程序开始的初始化设定
var
str1,str2:string;
begin
tmfilename:=ExtractFilePath(Application.EXEName)+'clock1.ini';
timini:=TIniFile.Create(tmfilename);
with timini do
begin
Textdef:=readString('内容','文字','在这里输入您给自己的提醒');
dtim:=readstring('参数','时间','23:59:59');
pop1.checked:=readBool('参数','报时允许',true);
pop2.checked:=readBool('参数','秒响允许',true);
pop3.checked:=readBool('参数','定时允许',false);
form1.Left:=readinteger('位置','X坐标',566);
form1.top:=readinteger('位置','Y坐标',8);
end;
timini.free;
dtme:=time();
pop2.checked:=true;
pop1.Checked:=true;
str1:=timetostr(time());
STR2:=COPY(STR1,2,1);
If str2=':' then pofse:=0 else pofse:=1;
image1.Canvas.BRUSH.COLOR:=CLBLACK;;
str2:=copy(str1,pofse+6,2);
tim3:=strtofloat(str2);
str2:=copy(str1,pofse+3,2);
tim2:=strtofloat(str2);
str2:=copy(str1,1,pofse+1);
tim1:=strtofloat(str2);
CLOCKBELL:=-1;
end;

procedure TForm1.Image1Click(Sender: TObject);//表盘鼠标点击时的的处理
begin
PopupMenu1.Popup(FORM1.LEFT+40,FORM1.TOP+150);
end;

procedure TForm1.pop1Click(Sender: TObject);
begin
if pop1.checked then pop1.checked:=false else pop1.checked:=true;
form1.tiniwr();
end;

procedure TForm1.pop2Click(Sender: TObject);
begin
if pop2.checked then pop2.checked:=false else pop2.checked:=true;
form1.tiniwr();
end;

procedure TForm1.pop4Click(Sender: TObject);
begin
form2.show;
form1.tiniwr();
end;

procedure TForm1.pop5Click(Sender: TObject);
begin
close;
end;

procedure TForm1.pop3Click(Sender: TObject);
begin
if pop3.Checked then
begin
pop3.Checked:=false;
form2.Button2.Caption:='取消';
end
else
begin
pop3.Checked:=true;
form2.Button2.Caption:='关闭';
end;
form1.tiniwr();
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
timini:=TIniFile.Create('tmfilename');
with timini do
begin
Writeinteger('位置','X坐标',form1.Left);//保存时钟窗口的初始 X 坐标
Writeinteger('位置','Y坐标',form1.top);//保存时钟窗口的初始 Y 坐标
end;
timini.free;

end;

procedure TForm1.N1Click(Sender: TObject);
begin
showmessage('模拟闹钟 0.1,'+#13+' Copy(R)ight by Suye.2001');
end;

end.
索菲亚黑洞
2007-07-18 · TA获得超过1.7万个赞
知道大有可为答主
回答量:1.3万
采纳率:0%
帮助的人:9860万
展开全部
1. 开心小闹钟 2.7 Build 0107 SP1

日常生活中常常会遇到由于事务繁忙或要处理的事太多,健忘,无序的事务管理,对个人和单
www.onlinedown.net/soft/9070.htm

2. 极光多能闹钟 5.0

支持电脑自带喇叭响铃和电脑音乐,并可自谱喇叭音乐,享受DIY的乐趣。可以按具体日期
www.onlinedown.net/soft/4451.htm

3. 精致闹钟 2004 V1.40 Build 20040116

修订版V1.40统一界面风格,界面更为清新,添加密码保护
www.skycn.com/soft/9451.html

4. 音乐闹钟 2.00

定时闹响(播放音乐)、定时关机。可播放的音乐文件*.mp3、*.mid、*.midi、*.rmi、*.w
www.onlinedown.net/soft/730.htm

5. 极光多能闹钟 V5.0

支持电脑自带喇叭响铃和电脑音乐,并可自谱喇叭音乐,
www.skycn.com/soft/10136.html

6. 小桂闹钟 V1.93

《小桂闹钟》是一个小巧的桌面闹钟程序,它吸取了众多
www.skycn.com/soft/18402.html

7. 精致闹钟2003 1.40 Build 20040116

精致漂亮、界面超酷的闹钟程序,支持换肤。具有定延时关机、重启、注销,重要事件提醒
www.onlinedown.net/soft/21832.htm

8. 流氓兔子闹钟

流氓兔子闹钟,可爱啊,西西
download.pchome.net/home/calendar/11629.html

9. 小闹钟 1.0

一个界面非常漂亮的小闹钟,可以为您整点报时、定时关机(限win95/98/me)、定时响闹
www.onlinedown.net/soft/8091.htm

10. 开心小闹钟 V2.7 Build 0107 SP1

日常生活中常常会遇到由于事务繁忙或要处理的事太多,健
www.skycn.com/soft/10621.html

11. 小桂闹钟 1.92

《小桂闹钟》是一个小巧的桌面闹钟程序,它除了可以显示当天的时间和日期之外,还可以
www.onlinedown.net/soft/33220.htm

12. 迷你小闹钟 1.0

小巧而且绿色的小闹钟软件
download.pchome.net/home/remind/7178.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式