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
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.
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;
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
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;