[Back to OOP SWAG index] [Back to Main SWAG index] [Original]
{********************************************************************}
{ }
{ Author: Donn Ault }
{ Date: 12/18/91 }
{ Purpose: Extend clock view to show am/pm }
{ Extend heap view to include commas (more readable) }
{ Copyright: Donated to the public domain }
{ }
{ Notes: }
{ + In your main program you will need more space for the expanded }
{ views. The old clock uses 9 characters while the new }
{ clock uses 12. The old heap viewer uses 9 while the new one }
{ uses 13. Change the R.B.X occordingly. }
{ }
{********************************************************************}
unit xgadgets;
{$F+,O+,S-,D-}
interface
uses Dos, Objects, Views, App, gadgets;
type
PXHeapView = ^TXHeapView;
TXHeapView = object (THeapView)
Procedure Draw; Virtual;
Function Comma ( N : LongInt ) : String;
End;
PXClockView = ^TXClockView;
TXClockView = Object (TClockView)
am : Char;
Function FormatTimeStr (h,m,s : word) : String; Virtual;
Procedure Draw; Virtual;
End;
implementation
uses Drivers;
Function TXHeapView.Comma ( n : LongInt) : String;
Var num, loc : Byte;
s : String;
t : String;
Begin
Str (n,s);
Str (n:Size.X,t);
num := length(s) div 3;
if (length(s) mod 3) = 0 then dec (num);
delete (t,1,num);
loc := length(t)-2;
while num > 0 do
Begin
Insert (',',t,loc);
dec (num);
dec (loc,3);
End;
Comma := t;
End;
procedure TXHeapView.Draw;
var
S: String;
B: TDrawBuffer;
C: Byte;
begin
OldMem := MemAvail;
S := Comma (OldMem);
C := GetColor(2);
MoveChar(B, ' ', C, Size.X);
MoveStr(B, S, C);
WriteLine(0, 0, Size.X, 1, B);
end;
procedure TXClockView.Draw;
var
B: TDrawBuffer;
C: Byte;
begin
C := GetColor(2);
MoveChar(B, ' ', C, Size.X);
MoveStr(B, TimeStr + ' '+am+'m', C); { Modified line }
WriteLine(0, 0, Size.X, 1, B);
end;
Function TXClockView.FormatTimeStr (h,m,s: Word) : String;
Begin
if h = 0 then
Begin
h := 12;
am := 'a';
End
Else if h > 12 then
Begin
dec (h,12);
am := 'p';
End
Else am := 'a';
FormatTimeStr := TClockView.FormatTimeStr (h,m,s);
End;
End.
[Back to OOP SWAG index] [Back to Main SWAG index] [Original]