dos_compilers/Borland Turbo Pascal v7/EXAMPLES/TVFM/INFOVIEW.PAS
2024-07-02 08:21:37 -07:00

126 lines
2.6 KiB
Plaintext

{************************************************}
{ }
{ Turbo Vision File Manager Demo }
{ Copyright (c) 1992 by Borland International }
{ }
{************************************************}
unit InfoView;
interface
uses Objects, Drivers, Views;
type
PCntView = ^TCntView;
TCntView = object(TView)
Bytes: LongInt;
Count: LongInt;
constructor Init(var Bounds: TRect);
procedure Draw; virtual;
procedure HandleEvent(var Event: TEvent); virtual;
private
function GetText: String; virtual;
end;
PTagView = ^TTagView;
TTagView = object(TCntView)
procedure HandleEvent(var Event: TEvent); virtual;
private
function GetText: String; virtual;
end;
implementation
uses Equ, FileView, Globals;
constructor TCntView.Init(var Bounds: TRect);
begin
inherited Init(Bounds);
Count := 0;
Bytes := 0;
GrowMode := gfGrowHiY + gfGrowLoY + gfGrowHiX;
EventMask := evBroadcast;
end;
procedure TCntView.Draw;
var
B: TDrawBuffer;
Color: Byte;
begin
Color := GetColor(6);
MoveChar(B, ' ', Color, Size.X);
MoveStr(B, GetText, Color);
WriteLine(0, 0, Size.X, Size.Y, B);
end;
function TCntView.GetText: String;
var
Str: String;
begin
FormatStr(Str, '%d bytes in %d files', Bytes);
GetText := Str;
end;
procedure TCntView.HandleEvent(var Event: TEvent);
begin
inherited HandleEvent(Event);
if (Event.What = evBroadcast) and (Event.Command = cmScanComplete) then
begin
with PScanInfo(Event.InfoPtr)^ do
begin
Bytes := ScanBytes;
Count := ScanCount;
DrawView;
end;
end;
end;
{ TTagView }
function TTagView.GetText: String;
var
Str: String;
begin
FormatStr(Str, '%d bytes in %d tagged files', Bytes);
GetText := Str;
end;
procedure TTagView.HandleEvent(var Event: TEvent);
var
F: PFileRec;
begin
{ don't execute the directly inherited HandleEvent }
TView.HandleEvent(Event);
if Event.What = evBroadcast then
begin
case Event.Command of
cmNewDir,
cmRescan :
begin
Bytes := 0;
Count := 0;
DrawView;
end;
cmTagChanged :
begin
F := Event.InfoPtr;
if F^.Tagged then
begin
Inc(Count);
Inc(Bytes, F^.Size);
end
else
begin
Dec(Count);
Dec(Bytes, F^.Size);
end;
DrawView;
ClearEvent(Event);
end;
end;
end;
end;
end.