home *** CD-ROM | disk | FTP | other *** search
- {$A+,B-,D-,E-,F+,I-,L-,N-,O+,R-,S-,V-}
- UNIT GClock;
-
- INTERFACE
-
- USES GDecl,
- GViews,
- GDlg,
- GDrivers,
- Dos,
- Graph;
-
-
- type PDigitalUhr=^TDigitalUhr;
- TDigitalUhr=object(TWindow)
- procedure SetPalette; virtual;
- procedure InitBackground; virtual;
- procedure HandleEvent; virtual;
- end;
-
- PUhrBgrd=^TUhrBgrd;
- TUhrBgrd=object(TBackground)
- Stunde : word;
- Minute : word;
- Sekunde : word;
- procedure Draw;virtual;
- end;
-
-
- IMPLEMENTATION
-
- {Implementation TDigitalUhr}
-
- procedure TDigitalUhr.SetPalette;
- begin
- Palette:=Pal[palRed];
- end;
-
- procedure TDigitalUhr.InitBackground;
- var R:TRect;
- begin
- R:=Frame^.Area;
- Bgrd:=new(PUhrBgrd, Init(R));
- List^.InsertItem(Bgrd);
- end;
-
- procedure TDigitalUhr.HandleEvent;
- var Std,Min,Sek,HSek,
- StdOld,MinOld,SekOld : word;
- LfdPtr:PGroup;
-
- procedure WriteTime(Nr,x,y:integer;Zeit1,Zeit2:word);
- var zz:string[2];
- begin
- Mouse.HideMouse;
- str(Zeit1:2,zz);
- SetColor(Blue);
- OutTextXY(x,y,zz);
- str(Zeit2:2,zz);
- SetColor(LightCyan);
- OutTextXY(x,y,zz);
- if Nr<3 then OutTextXY(x+38,y,':');
- Mouse.ShowMouse;
- end;
-
- begin
- TWindow.HandleEvent;
- SetTextStyle(TriplexFont,HorizDir,4);
- GetTime(Std,Min,Sek,HSek);
- LfdPtr:=List^.GetItems(3);
- with PUhrBgrd(LfdPtr)^ do
- begin
- StdOld:=Stunde;
- MinOld:=Minute;
- SekOld:=Sekunde;
- end;
- if StdOld<>Std then WriteTime(1,Origin.x+30,Origin.y+40,StdOld,Std);
- if MinOld<>Min then WriteTime(2,Origin.x+80,Origin.y+40,MinOld,Min);
- if SekOld<>Sek then WriteTime(3,Origin.x+130,Origin.y+40,SekOld,Sek);
- with PUhrBgrd(LfdPtr)^ do
- begin
- Stunde:=Std;
- Minute:=Min;
- Sekunde:=Sek;
- end;
- SetTextStyle(DefaultFont,HorizDir,0);
- end;
-
- {Implementation TUhrBgrd}
-
- procedure TUhrBgrd.Draw;
- begin
- Stunde:=0; Minute:=0; Sekunde:=0;
- with Border do
- begin
- SetFillStyle(SolidFill,Blue);
- Bar(A.x,A.y,B.x,B.y);
- end;
- end;
-
-
- END.