1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150:
| unit UhrUnit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, math, StdCtrls;
type TUhrForm = class(TForm) pbx_uhr: TPaintBox; tim_sekpos: TTimer; lbl_zeit: TLabel; procedure pbx_uhrClick(Sender: TObject); procedure pbx_uhrPaint(Sender: TObject); procedure tim_sekposTimer(Sender: TObject); private procedure zeigezeit(sekpos: integer); public end;
var UhrForm: TUhrForm; sek,min,std : array [0..3] of TPoint; implementation
{$R *.dfm}
procedure TUhrForm.pbx_uhrClick(Sender: TObject); begin if (tim_sekpos.enabled = false) then tim_sekpos.enabled := true else tim_sekpos.enabled := false; end;
procedure TUhrForm.zeigezeit(sekpos: integer); var y_pt, x_pt, x, y :integer; winkel :double; begin with pbx_uhr.canvas do begin pen.Color := clblack; brush.color := clblack; ellipse(20,20,480,480); font.Color := claqua; font.Size := 23; textout(233,-8,'12'); textout(480,230,'3'); textout(240,468,'6'); textout(1,230,'9'); tim_sekpos.tag := tim_sekpos.tag *1; pbx_uhr.Canvas.pen.Width := 1; pbx_uhr.Canvas.pen.Color := claqua; pbx_uhr.Canvas.brush.Color := clblack; sek[0].X :=250; sek[0].Y :=250; sek[1].X :=250+round(160*sin((-4.0+tim_sekpos.tag*6) *pi/-180)); sek[1].Y :=250-round(160*cos((-4.0+tim_sekpos.tag*6) *pi/-180)); sek[2].X :=250+round(220*sin(( tim_sekpos.tag*6) *pi/-180)); sek[2].Y :=250-round(220*cos(( tim_sekpos.tag*6) *pi/-180)); sek[3].X :=250+round(160*sin(( 4.0+tim_sekpos.tag*6) *pi/-180)); sek[3].Y :=250-round(160*cos(( 4.0+tim_sekpos.tag*6) *pi/-180)); pbx_uhr.Canvas.polygon(sek);
pen.Width := 2; pen.color := clwhite; x_pt := 250 + round (200*cos((sekpos*0.1+90)*pi/180.0)); y_pt := 250 - round (200*sin((sekpos*0.1+90)*pi/180.0)); moveto(250,250); lineto(x_pt,y_pt); brush.Color := clblack; winkel := tim_sekpos.tag *0.1/-180*pi; x := round(sin(winkel)*150); y := -round(cos(winkel)*150); pbx_uhr.Canvas.Rectangle(x+240,y+240,x+260,y+260); pen.Width := 3; pen.color := clblue; x_pt := 250 + round (180*cos((sekpos*0.0083+90)*pi/180.0)); y_pt := 250 - round (180*sin((sekpos*0.0083+90)*pi/180.0)); moveto(250,250); lineto(x_pt,y_pt); brush.Color := clblack; winkel := tim_sekpos.tag *0.0083/-180*pi; x := round(sin(winkel)*120); y := -round(cos(winkel)*120); ellipse(x+240,y+240,x+260,y+260); end; end;
procedure TUhrForm.pbx_uhrPaint(Sender: TObject); var wg, wb, rd, x_gr, y_gr : extended; i, x_pt, y_pt, x, y : integer; winkel : double; begin with pbx_uhr.canvas do begin brush.color := clblack; ellipse(0,0,499,499); wg := 0.0; wb := 0.0; rd := 240.0; x_gr := 0; y_gr := 0; x_pt := 0; y_pt := 0; pen.Width := 3; pen.color := cllime; brush.color := cllime; for i := 0 to 59 do begin wg := i*6.0; wb := wg*pi/180.0; x_gr := rd*cos(wb); y_gr := rd*sin(wb); x_pt := 250 + round(x_gr); y_pt := 250 - round(y_gr); if (i mod 5 = 0) then ellipse (x_pt-5,y_pt-5,x_pt+5,y_pt+5) else ellipse (x_pt-1,y_pt-1,x_pt+1,y_pt+1); end; zeigezeit(0); end; end; procedure TUhrForm.tim_sekposTimer(Sender: TObject); begin lbl_zeit.Caption := FormatDateTime('hh:nn:ss dd.mm.yyyy',+now); tim_sekpos.tag := tim_sekpos.tag -1; if (tim_sekpos.tag = 60) then tim_sekpos.tag := 0; zeigezeit(tim_sekpos.tag); end; end. |