home *** CD-ROM | disk | FTP | other *** search
/ BURKS 2 / BURKS_AUG97.ISO / BURKS / SOFTWARE / LIBS / DCLOCK.ZIP / CLKUNIT.PAS (.txt) < prev    next >
Pascal/Delphi Source File  |  1995-10-08  |  5KB  |  205 lines

  1. unit Clkunit;
  2.  
  3. interface
  4.  
  5. uses
  6.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  7.   Forms, Dialogs, CClock, StdCtrls, ExtCtrls, Spin, Tabs, ColorGrd;
  8.  
  9. type
  10.   TColorArray = array[ 0..6] of TColor;
  11.  
  12. const
  13.   BallColors : TColorArray =
  14.       ( clBlack, clMaroon, clGreen, clOlive, clNavy, clPurple, clTeal);
  15.   BkgColors : TColorArray =
  16.       ( clSilver, clRed, clLime, clBlue, clFuchsia, clAqua, clWhite);
  17.  
  18. type
  19.   TClkForm = class(TForm)
  20.     SysPanel: TPanel;
  21.     SysLabel: TLabel;
  22.     Panel2: TPanel;
  23.     LDay: TLabel;
  24.     LMonth: TLabel;
  25.     LYear: TLabel;
  26.     Panel1: TPanel;
  27.     SysClock: TClock;
  28.     NBPannel: TPanel;
  29.     ClkNotebook: TNotebook;
  30.     ClkTabSet: TTabSet;
  31.     Panel4: TPanel;
  32.     PWClock: TClock;
  33.     PWLabel2: TLabel;
  34.     PWLabel1: TLabel;
  35.     Panel3: TPanel;
  36.     TDClock: TClock;
  37.     Panel6: TPanel;
  38.     TDMLabel: TLabel;
  39.     TDMSpin: TSpinButton;
  40.     Panel5: TPanel;
  41.     TDHLabel: TLabel;
  42.     TDHSpin: TSpinButton;
  43.     Label1: TLabel;
  44.     Label4: TLabel;
  45.     Label5: TLabel;
  46.     Panel7: TPanel;
  47.     ACCClock: TClock;
  48.     Label6: TLabel;
  49.     Label7: TLabel;
  50.     Label8: TLabel;
  51.     Label9: TLabel;
  52.     Label10: TLabel;
  53.     Label11: TLabel;
  54.     Panel8: TPanel;
  55.     Image1: TImage;
  56.     Label3: TLabel;
  57.     ColorGrid1: TColorGrid;
  58.     CheckBox1: TCheckBox;
  59.     Label2: TLabel;
  60.     Panel9: TPanel;
  61.     Panel10: TPanel;
  62.     EvClock: TClock;
  63.     Panel11: TPanel;
  64.     Shape1: TShape;
  65.     Shape2: TShape;
  66.     Label12: TLabel;
  67.     Label13: TLabel;
  68.     procedure SysClockHour(Sender: TObject);
  69.     procedure FormCreate(Sender: TObject);
  70.     procedure PWClockMinute(Sender: TObject);
  71.     procedure TDHSpinDownClick(Sender: TObject);
  72.     procedure TDHSpinUpClick(Sender: TObject);
  73.     procedure TDMSpinDownClick(Sender: TObject);
  74.     procedure TDMSpinUpClick(Sender: TObject);
  75.     procedure ClkTabSetClick(Sender: TObject);
  76.     procedure ColorGrid1Change(Sender: TObject);
  77.     procedure EvClockSecond(Sender: TObject);
  78.     procedure EvClockMinute(Sender: TObject);
  79.     procedure CheckBox1Click(Sender: TObject);
  80.   private
  81.     { Private declarations }
  82.     ColorCounter : word;
  83.  
  84.     procedure UpdateDate;
  85.   public
  86.     { Public declarations }
  87.   end;
  88.  
  89. var
  90.   ClkForm: TClkForm;
  91.  
  92. implementation
  93.  
  94. {$R *.DFM}
  95.  
  96. { Update system date on the system clock}
  97. procedure TClkForm.UpdateDate;
  98. var
  99.   CurDate : TDateTime;
  100.   Y, M, D, DoW : word;
  101. begin
  102.   CurDate := Date;
  103.   DecodeDate( CurDate, Y, M, D);
  104.   DoW := DayOfWeek( CurDate);
  105.  
  106.   {LDayOfWeek.Caption := LongDayNames[ DoW];}
  107.   LDay.Caption := IntToStr( D);
  108.   LMonth.Caption := LongMonthNames[ M];
  109.   LYear.Caption := IntToStr( Y);
  110.  
  111. end;
  112.  
  113. { Update dates every hour}
  114. procedure TClkForm.SysClockHour(Sender: TObject);
  115. begin
  116.   UpdateDate;
  117. end;
  118.  
  119. procedure TClkForm.FormCreate(Sender: TObject);
  120. begin
  121.  
  122.   ClkTabSet.Tabs := ClkNotebook.Pages;
  123.  
  124.   UpdateDate; { update system date}
  125.   PWClock.SetClkTime( EncodeTime( 0, 0, 0, 0)); { Reset "Program work" clock}
  126.   { Draw time difference labels}
  127.   TDHLabel.Caption := IntToStr( TDClock.DifHour);
  128.   TDMLabel.Caption := IntToStr( TDClock.DifMinute);
  129.  
  130.   { Load main icon into image}
  131.   Image1.Picture.Icon.Handle := LoadIcon( HInstance, 'MAINICON');
  132.  
  133.   ACCClock.SecArrow := CheckBox1.Checked;
  134.  
  135.   ColorCounter := 0;
  136. end;
  137.  
  138. procedure TClkForm.PWClockMinute(Sender: TObject);
  139. var H, M, S : word; St : string;
  140. begin
  141.   PWClock.ClkTime( H, M, S);
  142.   St := IntToStr( M);
  143.   if length( St) < 2 then St := '0' + St;
  144.   PWLabel2.Caption := IntToStr( H {MOD 12}) + ' : ' + St;
  145. end;
  146.  
  147. { Set time difference on the "Time difference" clock}
  148. procedure TClkForm.TDHSpinDownClick(Sender: TObject);
  149. begin
  150.   with TDClock do if DifHour > -11 then DifHour := DifHour - 1;
  151.   TDHLabel.Caption := IntToStr( TDClock.DifHour);
  152. end;
  153.  
  154. procedure TClkForm.TDHSpinUpClick(Sender: TObject);
  155. begin
  156.   with TDClock do if DifHour < 11 then DifHour := DifHour + 1;
  157.   TDHLabel.Caption := IntToStr( TDClock.DifHour);
  158. end;
  159.  
  160. procedure TClkForm.TDMSpinDownClick(Sender: TObject);
  161. begin
  162.   with TDClock do if DifMinute > -59 then DifMinute := DifMinute - 1;
  163.   TDMLabel.Caption := IntToStr( TDClock.DifMinute);
  164. end;
  165.  
  166. procedure TClkForm.TDMSpinUpClick(Sender: TObject);
  167. begin
  168.   with TDClock do if DifMinute < 59 then DifMinute := DifMinute + 1;
  169.   TDMLabel.Caption := IntToStr( TDClock.DifMinute);
  170. end;
  171.  
  172. procedure TClkForm.ClkTabSetClick(Sender: TObject);
  173. begin
  174.   ClkNotebook.PageIndex := ClkTabSet.TabIndex;
  175. end;
  176.  
  177. procedure TClkForm.ColorGrid1Change(Sender: TObject);
  178. begin
  179.   with ACCClock, ColorGrid1 do begin
  180.     ClkArrowColor := ForegroundColor;
  181.     ClkFaceColor  := BackgroundColor;
  182.     end;
  183. end;
  184.  
  185. procedure TClkForm.EvClockSecond(Sender: TObject);
  186. begin
  187.   Shape1.Visible := NOT Shape1.Visible;
  188.   Shape2.Visible := NOT Shape2.Visible;
  189. end;
  190.  
  191. procedure TClkForm.EvClockMinute(Sender: TObject);
  192. begin
  193.   inc( ColorCounter);
  194.   if ColorCounter >6 then ColorCounter := 0;
  195.   Shape1.Brush.Color := BallColors[ ColorCounter];
  196.   Shape2.Brush.Color := BallColors[ ColorCounter];
  197. end;
  198.  
  199. procedure TClkForm.CheckBox1Click(Sender: TObject);
  200. begin
  201.   ACCClock.SecArrow := CheckBox1.Checked;
  202. end;
  203.  
  204. end.
  205.