delphi写的时钟
来源:互联网 发布:数据分析有什么证书 编辑:程序博客网 时间:2024/04/28 04:34
很久以前写的程序了,要整理机器,只好放到这了
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
Timer2: TTimer;
procedure windowsposchange(var Msg:TWMWINDOWPOSCHANGING);
message WM_WINDOWPOSCHANGING;
procedure Timer2Timer(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormResize(Sender: TObject);
private
{ Private declarations }
Hour, Minute, Second: Word; {当前时间}
OldMinute, OldSecond: Word; {旧时间}
XCenter, YCenter, Radius: Integer; {当前窗体大小}
public
{ Public declarations }
procedure DrawHand (XCenter, YCenter, Radius,
BackRadius: Integer; Angle: Real);
procedure DrawSecond;
end;
var
Form1: TForm1;
oleft:Integer;
otop:Integer;
owidth:Integer;
oheight:Integer;
implementation
{$R *.dfm}
procedure TForm1.Timer2Timer(Sender: TObject);
begin
self.Caption := '桌面时钟 '+datetimetostr(now);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
hesc:word;
begin
oldminute := minute;
oldsecond := second;
SysUtils.DecodeTime(time,hour,minute,second,hesc);
if oldminute = minute then
drawsecond
else
refresh;
end;
procedure tform1.DrawSecond;
var
Angle,OldAngle :real;
begin
oldangle := 2*pi*(oldsecond+45)/60;
drawhand(XCenter, YCenter, Radius,
Radius * 30 div 100, OldAngle);
angle := 2*pi*(second+45)/60;
drawhand(XCenter, YCenter, Radius,
Radius * 30 div 100, angle);
end;
procedure tform1.DrawHand(XCenter, YCenter, Radius,
BackRadius: Integer; Angle: Real);
begin
form1.Canvas.MoveTo(XCenter - Round (BackRadius * Cos (Angle)),
YCenter - Round (BackRadius * Sin (Angle)));
form1.Canvas.LineTo (
XCenter + Round (Radius * Cos (Angle)),
YCenter + Round (Radius * Sin (Angle)));
end;
procedure TForm1.FormPaint(Sender: TObject);
var
Angle: Real;
I, X, Y, Size: Integer;
begin
xcenter := clientwidth div 2;
ycenter := clientheight div 2;
if xcenter > ycenter then
radius := ycenter-10
else
radius := xcenter-10;
self.Canvas.Pen.Color := clblue;
self.Canvas.Pen.Mode := Graphics.pmCopy ;
self.Canvas.Brush.Color := clwhite;
size := radius div 50 +1;
for I := 0 to 11 do
begin
Angle := 2 * Pi * (I + 9)/12;
X := XCenter - Round(Radius*Cos(Angle));
Y := YCenter - Round(Radius*Sin(Angle));
Canvas.Ellipse (X - Size, Y - Size, X + Size, Y + Size);
end;
//画分针
self.Canvas.Pen.Width := 2;
self.Canvas.Pen.Color := clblue;
angle := 2*pi*(minute+45)/60;
DrawHand (XCenter, YCenter,
Radius * 90 div 100, 0, Angle);
Angle := 2 * Pi * (Hour + 9 + Minute / 60) / 12;//画时针
DrawHand (XCenter, YCenter,
Radius * 70 div 100, 0, Angle);
Canvas.Pen.Width := 1; //画秒针
Canvas.Pen.Color := clRed;
Canvas.Pen.Mode := pmNotXor;
Angle := 2 * Pi * (Second+45) / 60;
DrawHand (XCenter, YCenter, Radius,
Radius * 30 div 100, Angle);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
SELF.Timer1Timer(SELF);
OLEFT := LEFT;
OTOP := top;
owidth := width;
oheight := height;
self.Caption := '桌面时钟 '+ datetimetostr(now);
end;
procedure tform1.windowsposchange(var Msg:TWMWINDOWPOSCHANGING);
begin
Msg.WindowPos.x:=oleft;
Msg.WindowPos.y:=otop;
Msg.WindowPos.cx:=owidth;
Msg.WindowPos.cy:=oheight;
inherited;
end;
procedure TForm1.FormResize(Sender: TObject);
begin
Refresh;
end;
end.
- delphi写的时钟
- H5写的时钟
- 使用JavaScript写的时钟
- 以前写的时钟程序
- C#写的电子时钟
- 自己写的代码:时钟
- js写基本的时钟
- range 写的小时钟
- C++写的时钟程序
- delphi写的九九乘法表
- 怎么写一个时钟闹铃的源程序?
- 我写的一个时钟程序
- 一个VC写的模拟时钟
- 用powerbasic语言写的时钟程序代码
- javacript写的一个数字时钟
- 利用Acllib写的一个桌面时钟
- js定时器,原生js写的时钟
- 写一个不会动的时钟
- 开发J2EE两年多的一点想法
- 格式精度控制
- 获取本机IP并在任务栏显示图标
- 获取局域网内机器名
- c++ primer 的学习心得
- delphi写的时钟
- 读写文件
- 穆斯林为什么不吃猪肉?
- 我国礼拜朝向及其确定方法
- 我们还需要信仰吗?
- Peercast的http.h源文件分析
- 面向对象分布式开发系统理论
- Microsoft® 脚本编写技术 - Microsoft® 脚本编码器:screnc.exe (编码示例)
- TomCat在xp下的配置