home *** CD-ROM | disk | FTP | other *** search
/ Best of German Only 1 / romside_best_of_german_only_1.iso / wissen / dos / wgraph / entpack.exe / WGBSP!.EXE / GCLOCK.PAS < prev    next >
Pascal/Delphi Source File  |  1992-12-12  |  2KB  |  102 lines

  1. {$A+,B-,D-,E-,F+,I-,L-,N-,O+,R-,S-,V-}
  2. UNIT GClock;
  3.  
  4. INTERFACE
  5.  
  6. USES GDecl,
  7.      GViews,
  8.      GDlg,
  9.      GDrivers,
  10.      Dos,
  11.      Graph;
  12.  
  13.  
  14. type PDigitalUhr=^TDigitalUhr;
  15.      TDigitalUhr=object(TWindow)
  16.        procedure SetPalette; virtual;
  17.        procedure InitBackground; virtual;
  18.        procedure HandleEvent; virtual;
  19.      end;
  20.  
  21.      PUhrBgrd=^TUhrBgrd;
  22.      TUhrBgrd=object(TBackground)
  23.        Stunde  : word;
  24.        Minute  : word;
  25.        Sekunde : word;
  26.        procedure Draw;virtual;
  27.      end;
  28.  
  29.  
  30. IMPLEMENTATION
  31.  
  32. {Implementation TDigitalUhr}
  33.  
  34. procedure TDigitalUhr.SetPalette;
  35. begin
  36.   Palette:=Pal[palRed];
  37. end;
  38.  
  39. procedure TDigitalUhr.InitBackground;
  40. var R:TRect;
  41. begin
  42.   R:=Frame^.Area;
  43.   Bgrd:=new(PUhrBgrd, Init(R));
  44.   List^.InsertItem(Bgrd);
  45. end;
  46.  
  47. procedure TDigitalUhr.HandleEvent;
  48. var Std,Min,Sek,HSek,
  49.     StdOld,MinOld,SekOld : word;
  50.     LfdPtr:PGroup;
  51.  
  52. procedure WriteTime(Nr,x,y:integer;Zeit1,Zeit2:word);
  53. var zz:string[2];
  54. begin
  55.   Mouse.HideMouse;
  56.   str(Zeit1:2,zz);
  57.   SetColor(Blue);
  58.   OutTextXY(x,y,zz);
  59.   str(Zeit2:2,zz);
  60.   SetColor(LightCyan);
  61.   OutTextXY(x,y,zz);
  62.   if Nr<3 then OutTextXY(x+38,y,':');
  63.   Mouse.ShowMouse;
  64. end;
  65.  
  66. begin
  67.   TWindow.HandleEvent;
  68.   SetTextStyle(TriplexFont,HorizDir,4);
  69.   GetTime(Std,Min,Sek,HSek);
  70.   LfdPtr:=List^.GetItems(3);
  71.   with PUhrBgrd(LfdPtr)^ do
  72.    begin
  73.      StdOld:=Stunde;
  74.      MinOld:=Minute;
  75.      SekOld:=Sekunde;
  76.    end;
  77.   if StdOld<>Std then WriteTime(1,Origin.x+30,Origin.y+40,StdOld,Std);
  78.   if MinOld<>Min then WriteTime(2,Origin.x+80,Origin.y+40,MinOld,Min);
  79.   if SekOld<>Sek then WriteTime(3,Origin.x+130,Origin.y+40,SekOld,Sek);
  80.   with PUhrBgrd(LfdPtr)^ do
  81.    begin
  82.      Stunde:=Std;
  83.      Minute:=Min;
  84.      Sekunde:=Sek;
  85.    end;
  86.   SetTextStyle(DefaultFont,HorizDir,0);
  87. end;
  88.  
  89. {Implementation TUhrBgrd}
  90.  
  91. procedure TUhrBgrd.Draw;
  92. begin
  93.   Stunde:=0; Minute:=0; Sekunde:=0;
  94.   with Border do
  95.    begin
  96.      SetFillStyle(SolidFill,Blue);
  97.      Bar(A.x,A.y,B.x,B.y);
  98.    end;
  99. end;
  100.  
  101.  
  102. END.