⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 一个运用 TTimer 制作指针类型时钟的范例
💻 PAS
字号:
unit Unit1;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Image1: TImage;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
    FirstTime     : Boolean;
    vho, vmo, vso : Real;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
var
  i : Integer;
begin
  with Form1.Image1.Canvas do begin
    Pen.Color := clWhite;
    Pen.Style := psSolid;
    Brush.Color := clWhite;
    Brush.Style := bsSolid;
    Rectangle(0,0,Width,Height);

    Pen.Color := clBlack;
    for i:=1 to 12 do
      Pixels[17+Round(17*Sin(i/12.0*2*Pi)),17-Round(17*Cos(i/12.0*2*Pi))] := clBlack;
  end;

  FirstTime := True;

  Form1.Panel1.Left := 0;
  Form1.Panel1.Top := 0;
  Form1.Width := Form1.Panel1.Width;
  Form1.Height := Form1.Panel1.Height;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  MyNow      : TDateTime;
  Hour, Min,
  Sec, mSec  : Word;
  vh, vm, vs : Real;
begin
  MyNow := Now;
  DecodeTime(MyNow,Hour,Min,Sec,mSec);

  vh := Hour/12.0*2*Pi;
  vm := Min/60.0*2*Pi;
  vs := Sec/60.0*2*Pi;

  with Form1.Image1.Canvas do begin
    if not FirstTime then begin
      Pen.Color := clWhite;
      MoveTo(17,17);
      LineTo(17+Round(12*Sin(vho)),17-Round(12*Cos(vho)));
      MoveTo(17,17);
      LineTo(17+Round(15*Sin(vmo)),17-Round(15*Cos(vmo)));
      MoveTo(17,17);
      LineTo(17+Round(15*Sin(vso)),17-Round(15*Cos(vso)));
    end
    else
      FirstTime := False;
    Pen.Color := clBlack;
    MoveTo(17,17);
    LineTo(17+Round(12*Sin(vh)),17-Round(12*Cos(vh)));
    Pen.Color := clBlack;
    MoveTo(17,17);
    LineTo(17+Round(15*Sin(vm)),17-Round(15*Cos(vm)));
    Pen.Color := clRed;
    MoveTo(17,17);
    LineTo(17+Round(15*Sin(vs)),17-Round(15*Cos(vs)));
  end;

  vho := vh;
  vmo := vm;
  vso := vs;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -