Class TMainForm (unit LogoMain)

Inherits from

TForm

Program to show disk usage as a pie-chart Revision history: V1.0 1993 Feb 08 First version for Borland's Turbo Pascal for Windows V2.0.0 1996 Apr 14 Version for Borland's Delphi 2.0 V2.0.2 1996 Apr 16 Pre-load Open dialog with '*.*' file name Add number of files and folders display V2.0.4 1996 May 26 Add E-mail address to About box V2.1.0 1996 Jul 20 Add auto-registration as Folder Shell Extension Collect size, allocated and slack simultaneously Add option for displaying in bytes, kilobytes or megabytes Save current displayed folder across option selection V2.1.2 1996 Oct 20 Don't count folders as files (they are, but...) V2.1.4 1996 Dec 08 Change to "standard" main form (was ToolWin) Revise logo to mimic PieChart colours better V2.1.6 1997 Feb 08 Add right-click on pie-chart file properties V2.1.8 1997 Feb 16 Update PieChart to use Begin/EndUpdate for list box output Use inherited, rather than copied, About box V2.2.0 1997 Mar 01 Handle NTFS compressed files by recording the actual disk space occupied rather than the nominal file size V2.2.2 1997 Mar 15 Recompile for updated Pie Chart component V2.3.0 1997 May 10 Version for Delphi 3.0 V2.3.2 1997 May 18 Updates following H J Harvey suggestions - bitmap Up button - split Status bar display Allow user choice of fonts, saved in registry Make Timer initially enabled, not in Create Make PieChart derivative of MultiColourControl Save PieChart colours in registry Remove small hint status bar panel Update more items on status bar while scanning Make form resizable Make ListBox hint reflect the file name clicked Correct incorrect sequential display of compressed properties V2.3.4 1997 May 23 Add updated glyph for Folder Back (from HH) and Open buttons Disable Open button while scanning Make status-bar updates more timely Make right-click menu addition optional Make About box read version info from the .EXE file - with Brad Stowers VersInfo unit V2.3.6 1997 Sep 13 Version for Delphi 3.01 Handle "large fonts" more elegantly V2.3.8 1997 Oct 06 Add maximum filename length display (for CD-ROM writing) V2.4.0 1997 Nov 15 Add option to display free disk space (from Peter Jaspers-Fayer) Prevent display of properties for non-existant files Update FileInfo for Delphi bug in FindClose Add "count of files" display Build for use with VCL30.DPL V2.4.2 1997 Dec 05 Version for Delphi 3.02 Handle disks > 2GB Use ShellBrowseForFolder (from Brad Stowers BrowseDr unit) V2.4.4 1997 Dec 12 Add simple print capability Only display NTFS "Compressed" label on NTFS volumes Don't display free bytes if there aren't any, e.g. CD-ROMs Remove Exit speed button, not used in most standard apps V2.4.6 1998 Jan 11 Only force "compressed" display when showing free space Provide Title for printed output V2.4.8 1998 Feb 16 Correct registry entry to allow spaces in folder names

Constructors



Functions

procedure About(Sender: TObject);


procedure BitBtnUpClick(Sender: TObject);


procedure btnStopClick(Sender: TObject);

we got a parent folder

procedure cbxDisplayChange(Sender: TObject);

If the units change, simply re-display the current folder.

procedure cbxUnitsChange(Sender: TObject);


procedure FileExit(Sender: TObject);


procedure FileOpen(Sender: TObject);


procedure FilePrint(Sender: TObject);

allow the updates to show

procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);


procedure FormCreate(Sender: TObject);

use returned TRegistry object

procedure FormDestroy(Sender: TObject);

and to display it in kilobytes

procedure FormResize(Sender: TObject);

build the complete file name

procedure ListBox1Click(Sender: TObject);


procedure ListBox1DblClick(Sender: TObject);


procedure Options1Click(Sender: TObject);

Go up a folder level if there is one

procedure PieChart1DblClick(Sender: TObject);

set a title for any print-out only enable the "Up" button if there's somewhere to go.

procedure PieChart1RightClick(Sender: TObject);

If the items to display change, simply re-display the current folder.

procedure Refresh1Click(Sender: TObject);

settings have changed, save the new settings and re-display

procedure Timer1Timer(Sender: TObject);

allow printing

procedure Timer2Timer(Sender: TObject);

size the PieChart accordingly

procedure GetMinMaxInfo (var info: TWMGetMinMaxInfo);


procedure display_list (const list: TFolderList);

one-shot code at program start time, scan something to show the user what sort of display to expect

procedure handle_double_click (entry: TFolderData);

determine what item was clicked

procedure scan_tree;

blank filename for version resource means use Application.

Properties

Events

Variables

AboutItem : TMenuItem;


BitBtnCancel : TBitBtn;


BitBtnExit : TBitBtn;


BitBtnUp : TBitBtn;


BrowseDirectoryDlg1 : TBrowseDirectoryDlg;


cbxDisplay : TComboBox;


cbxUnits : TComboBox;


FileExitItem : TMenuItem;


FileMenu : TMenuItem;


FileOpenItem : TMenuItem;


Help1 : TMenuItem;


Label1 : TLabel;


Label2 : TLabel;


lblCompressed : TLabel;


lblMaxFileNameLength : TLabel;


ListBox1 : TListBox;


MainMenu : TMainMenu;


N2 : TMenuItem;


OpenBtn : TSpeedButton;


Options1 : TMenuItem;


PieChart1 : TPieChart;


Print1 : TMenuItem;


PrintBtn : TSpeedButton;


Refresh1 : TMenuItem;


SpeedPanel : TPanel;


StatusBar : TStatusBar;


Timer1 : TTimer;


Timer2 : TTimer;


VersionInfoResource1 : TVersionInfoResource;


View1 : TMenuItem;


current_folder : TFolderList;


display_compressed : Tdisplay_compressed;


display_free_disk : boolean;


display_mode : Tdisplay_mode;


display_units : Tdisplay_units;


folder_being_scanned : string;


folder_list : TFolderList;


folder_menu_right_click : boolean;


root : string;


scanning : boolean;


stop_requested : boolean;


suggested_min_x : integer;


suggested_min_y : integer;



Constructors


Functions


procedure About(Sender: TObject);


procedure BitBtnUpClick(Sender: TObject);


procedure btnStopClick(Sender: TObject);

we got a parent folder


procedure cbxDisplayChange(Sender: TObject);

If the units change, simply re-display the current folder. No re-scan is required


procedure cbxUnitsChange(Sender: TObject);


procedure FileExit(Sender: TObject);


procedure FileOpen(Sender: TObject);


procedure FilePrint(Sender: TObject);

allow the updates to show


procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);


procedure FormCreate(Sender: TObject);

use returned TRegistry object


procedure FormDestroy(Sender: TObject);

and to display it in kilobytes


procedure FormResize(Sender: TObject);

build the complete file name


procedure ListBox1Click(Sender: TObject);


procedure ListBox1DblClick(Sender: TObject);


procedure Options1Click(Sender: TObject);

Go up a folder level if there is one


procedure PieChart1DblClick(Sender: TObject);

set a title for any print-out only enable the "Up" button if there's somewhere to go....


procedure PieChart1RightClick(Sender: TObject);

If the items to display change, simply re-display the current folder. No re-scan is required


procedure Refresh1Click(Sender: TObject);

settings have changed, save the new settings and re-display


procedure Timer1Timer(Sender: TObject);

allow printing


procedure Timer2Timer(Sender: TObject);

size the PieChart accordingly


procedure GetMinMaxInfo (var info: TWMGetMinMaxInfo);


procedure display_list (const list: TFolderList);

one-shot code at program start time, scan something to show the user what sort of display to expect


procedure handle_double_click (entry: TFolderData);

determine what item was clicked


procedure scan_tree;

blank filename for version resource means use Application.EXEname build up the About Box from the version info in the .EXE file


Properties


Events


Variables


AboutItem : TMenuItem;


BitBtnCancel : TBitBtn;


BitBtnExit : TBitBtn;


BitBtnUp : TBitBtn;


BrowseDirectoryDlg1 : TBrowseDirectoryDlg;


cbxDisplay : TComboBox;


cbxUnits : TComboBox;


FileExitItem : TMenuItem;


FileMenu : TMenuItem;


FileOpenItem : TMenuItem;


Help1 : TMenuItem;


Label1 : TLabel;


Label2 : TLabel;


lblCompressed : TLabel;


lblMaxFileNameLength : TLabel;


ListBox1 : TListBox;


MainMenu : TMainMenu;


N2 : TMenuItem;


OpenBtn : TSpeedButton;


Options1 : TMenuItem;


PieChart1 : TPieChart;


Print1 : TMenuItem;


PrintBtn : TSpeedButton;


Refresh1 : TMenuItem;


SpeedPanel : TPanel;


StatusBar : TStatusBar;


Timer1 : TTimer;


Timer2 : TTimer;


VersionInfoResource1 : TVersionInfoResource;


View1 : TMenuItem;


current_folder : TFolderList;


display_compressed : Tdisplay_compressed;


display_free_disk : boolean;


display_mode : Tdisplay_mode;


display_units : Tdisplay_units;


folder_being_scanned : string;


folder_list : TFolderList;


folder_menu_right_click : boolean;


root : string;


scanning : boolean;


stop_requested : boolean;


suggested_min_x : integer;


suggested_min_y : integer;