├── .gitignore
├── CBuilder
├── Alexandria
│ ├── CBuilder.groupproj
│ ├── VirtualShellToolsC.cbproj
│ ├── VirtualShellToolsC.cpp
│ ├── VirtualShellToolsC.ico
│ ├── VirtualShellToolsCD.cbproj
│ ├── VirtualShellToolsCD.cpp
│ └── VirtualShellToolsCD.ico
├── Rio
│ ├── CBuilder.groupproj
│ ├── VirtualShellToolsC.cbproj
│ ├── VirtualShellToolsC.cpp
│ ├── VirtualShellToolsC.ico
│ ├── VirtualShellToolsCD.cbproj
│ ├── VirtualShellToolsCD.cpp
│ └── VirtualShellToolsCD.ico
└── Sydney
│ ├── CBuilder.groupproj
│ ├── VirtualShellToolsC.cbproj
│ ├── VirtualShellToolsC.cpp
│ ├── VirtualShellToolsC.ico
│ ├── VirtualShellToolsCD.cbproj
│ ├── VirtualShellToolsCD.cpp
│ └── VirtualShellToolsCD.ico
├── Delphi
├── Rio
│ ├── Delphi.groupproj
│ ├── VirtualShellToolsD.dpk
│ ├── VirtualShellToolsD.dproj
│ ├── VirtualShellToolsDD.dpk
│ └── VirtualShellToolsDD.dproj
└── Syndey+
│ ├── VirtualShellToolsD.dpk
│ ├── VirtualShellToolsDD.dpk
│ └── readme.md
├── Demos
├── Adding Custom Columns Using ShellDetails
│ ├── ShellDetailsCustomColumns.dpr
│ ├── ShellDetailsCustomColumns.res
│ ├── Unit1.dfm
│ └── Unit1.pas
├── Applet and Wizard Launcher
│ ├── AppletWizardLauncher.dpr
│ ├── AppletWizardLauncher.res
│ ├── Unit1.dfm
│ └── Unit1.pas
├── AutoComplete Component
│ ├── AutoCompleteComponentProject.dpr
│ ├── AutoCompleteComponentProject.res
│ ├── Unit1.dfm
│ └── Unit1.pas
├── AutoCompleteObject
│ ├── AutoCompleteObject.dpr
│ ├── AutoCompleteObject.res
│ ├── Unit1.dfm
│ └── Unit1.pas
├── Backgnd Menu
│ ├── BkGndMenuProject.dpr
│ ├── Unit1.dfm
│ └── Unit1.pas
├── CheckBoxes
│ ├── CheckBoxes.dpr
│ ├── CheckBoxes.res
│ ├── TEST.TXT
│ ├── Unit1.dfm
│ └── Unit1.pas
├── Custom Columns
│ ├── CustomColumnProject.dpr
│ ├── CustomColumnProject.res
│ ├── Unit1.dfm
│ └── Unit1.pas
├── Custom Sorting
│ ├── CustomSortProject.dpr
│ ├── Unit1.dfm
│ └── Unit1.pas
├── DOS Shell CommandLine
│ ├── DOSCommandLineProject.dpr
│ ├── DOSCommandLineProject.res
│ ├── Unit1.dfm
│ └── Unit1.pas
├── Explorer CheckBoxes
│ ├── ExplorerCheckboxes.dpr
│ ├── ExplorerCheckboxes.res
│ ├── InfoForm.dfm
│ ├── InfoForm.pas
│ ├── Tree.dat
│ ├── Unit1.dfm
│ ├── Unit1.pas
│ └── VirtualCheckboxesSynchronizer.pas
├── File Search
│ ├── FileSearch.dpr
│ ├── FindFile.pas
│ ├── ReadMe.txt
│ ├── uWndSearchFiles.dfm
│ └── uWndSearchFiles.pas
├── FileSearch
│ ├── FileSearchProject.dpr
│ ├── Unit1.dfm
│ └── Unit1.pas
├── FolderSize
│ ├── FolderSizeDemo.dpr
│ ├── FolderSizeDemo.res
│ ├── Unit1.dfm
│ └── Unit1.pas
├── KnownFolders
│ ├── KnwonwFoldersProject.dpr
│ ├── Unit1.dfm
│ └── Unit1.pas
├── Namespace Browser
│ ├── NamespaceBrowserProject.dpr
│ ├── NamespaceBrowserProject.res
│ ├── Unit1.dfm
│ └── Unit1.pas
├── Overview
│ ├── InfoForm.dfm
│ ├── InfoForm.pas
│ ├── Unit1.dfm
│ ├── Unit1.pas
│ ├── VET.dpr
│ ├── VET.dproj
│ ├── VET.res
│ └── VETBkgnd.bmp
├── PrevDirNode EasyListview
│ ├── EasyListviewPrevFolderProject.dpr
│ ├── Unit1.dfm
│ └── Unit1.pas
├── PrevDirNode
│ ├── Project1.dpr
│ ├── Project1.res
│ ├── Unit1.dfm
│ └── Unit1.pas
├── Readme.txt
├── SendTo Menu
│ ├── Back.bmp
│ ├── Fwd.bmp
│ ├── SendToMenuProject.dpr
│ ├── SendToMenuProject.res
│ ├── Unit1.dfm
│ ├── Unit1.pas
│ └── folder.bmp
├── Shell History
│ ├── ShellHistory.dpr
│ ├── ShellHistory.res
│ ├── Unit1.dfm
│ └── Unit1.pas
├── Shell Link Shortcuts
│ ├── ShellLinkShortcuts.dpr
│ ├── ShellLinkShortcuts.res
│ ├── Unit1.dfm
│ └── Unit1.pas
├── Shell Notify
│ ├── ShellNotify.dpr
│ ├── ShellNotify.res
│ ├── Unit1.dfm
│ ├── Unit1.pas
│ ├── Unit2.dfm
│ └── Unit2.pas
├── ShellColumn State Storing
│ ├── ShellColumnStateStoring.dpr
│ ├── ShellColumnStateStoring.res
│ ├── Unit1.dfm
│ └── Unit1.pas
├── ShellNew (New File) Menu
│ ├── ShellNew_NewFileMenu.dpr
│ ├── ShellNew_NewFileMenu.res
│ ├── Unit1.dfm
│ └── Unit1.pas
├── ShellToolbars
│ ├── ShellToolbars.dpr
│ ├── Unit1.dfm
│ └── Unit1.pas
├── User Data
│ ├── Unit1.dfm
│ ├── Unit1.pas
│ ├── UserDataProject.dpr
│ ├── UserDataProject.dsk
│ └── UserDataProject.res
├── Vertical Icons Custom Draw
│ ├── ProjectVerticalIcons.dpr
│ ├── ProjectVerticalIcons.res
│ ├── Unit1.dfm
│ └── Unit1.pas
├── Virtual Explorer
│ ├── About.dfm
│ ├── About.pas
│ ├── Unit1.dfm
│ ├── Unit1.pas
│ ├── VST Logo 1.bmp
│ └── VirtualExplorer.dpr
├── VirtualDropStack
│ ├── DropStackProject.dpr
│ ├── DropStackProject.res
│ ├── Unit1.dfm
│ └── Unit1.pas
├── VirtualEasyListModeView
│ ├── EasyListModeViewProjectGroup.bpg
│ ├── Unit1.dfm
│ ├── Unit1.pas
│ ├── VirtualExplorerListModeViewProject.dpr
│ └── VirtualExplorerListModeViewProject.res
├── VirtualEasyListviewCustomContextMenu
│ ├── Unit1.dfm
│ ├── Unit1.pas
│ └── VirtaulExplorerEasyListviewMEnuProject.dpr
├── VirtualExplorerEasyListview
│ ├── Unit1.dfm
│ ├── Unit1.pas
│ ├── VEasyListviewProject.dpr
│ └── VEasyListviewProject.res
├── VirtualShellToolsDemos.bpg
└── Wow64 File Redirection
│ ├── Unit1.dfm
│ ├── Unit1.pas
│ ├── Wow64FileRedirection.dpr
│ └── Wow64FileRedirection.res
├── Design
├── VirtualShellToolsReg.dcr
└── VirtualShellToolsReg.pas
├── Docs
├── CBuilder 6 Issues.txt
├── Unicode Compatibilty.txt
├── VirtualShellTools History.txt
└── Whats New.txt
├── Include
├── Addins.inc
└── uxtheme.h
├── LICENCE
├── Resources
└── Images
│ ├── Bkgnd.bmp
│ ├── Folder Funnel 24x24.bmp
│ ├── Setup Gear 24x24.bmp
│ ├── Setup Gear 32x32.bmp
│ ├── VET_Logo.png
│ ├── ViewButton.bmp
│ ├── XDisk.bmp
│ ├── XPBackArrow 24x24.bmp
│ ├── XPBackArrow.bmp
│ ├── XPFolders 16x16.bmp
│ ├── XPFolders 24x24.bmp
│ ├── XPFolders.bmp
│ ├── XPHistory 16x16.bmp
│ ├── XPHistory 24x24.bmp
│ ├── XPListviewStyle.bmp
│ ├── XPNextArrow 24x24.bmp
│ ├── XPNextArrow.bmp
│ ├── XPSearch 24x24.bmp
│ ├── XPSearch.bmp
│ ├── XPSearch2.bmp
│ ├── XPSearch2Small.bmp
│ └── XPUpFolder.bmp
├── Source
├── AppletsAndWizards.pas
├── ColumnForm.dfm
├── ColumnForm.pas
├── ColumnFormSpTBX.pas
├── ColumnFormTBX.dfm
├── VirtualBreadCrumbBar.pas
├── VirtualCommandLine.pas
├── VirtualExplorerEasyListModeview.pas
├── VirtualExplorerEasyListview.pas
├── VirtualExplorerTree.pas
├── VirtualExplorerTreeExt.res
├── VirtualFileSearch.pas
├── VirtualRedirector.pas
├── VirtualResources.pas
├── VirtualScrollbars.pas
├── VirtualSendToMenu.pas
├── VirtualShellAutoComplete.pas
├── VirtualShellHistory.pas
├── VirtualShellNewMenu.pas
├── VirtualShellNotifier.pas
├── VirtualShellToolBar.pas
└── VirtualThumbnails.pas
└── readme.md
/.gitignore:
--------------------------------------------------------------------------------
1 | # Compiled source #
2 | ###################
3 | *.dcu
4 | *.obj
5 | *.exe
6 | *.bpl
7 | *.bpi
8 | *.dcp
9 | *.rsm
10 | *.stat
11 | *.map
12 | *.lib
13 |
14 | # Generated source #
15 | ###################
16 | *.hpp
17 |
18 | # Backup files #
19 | ###################
20 | *.~*
21 | *.bak
22 | *.#00
23 | *.pch
24 | *.Patch
25 | /__history
26 |
27 | # IDE Files #
28 | ###################
29 | *.dproj.local
30 | *.groupproj.local
31 | *.identcache
32 | *.dsk
33 | *.tvsconfig
34 | *.otares
35 | *.drc
36 | *.rc
37 | *.res
38 | *.local
39 |
40 | # Output Folders #
41 | ###################
42 | /Win32
43 | /Win64
44 | /OSX32
45 |
46 | # C++ Files #
47 | ###################
48 | *.prjmgc
49 |
50 |
--------------------------------------------------------------------------------
/CBuilder/Alexandria/CBuilder.groupproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | {08E512AA-B6C7-4392-B232-FE72BB50BC69}
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | Default.Personality.12
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/CBuilder/Alexandria/VirtualShellToolsC.cpp:
--------------------------------------------------------------------------------
1 | //---------------------------------------------------------------------------
2 |
3 | #include
4 | #pragma hdrstop
5 | USEFORMNS("..\..\Source\ColumnForm.pas", Columnform, FormColumnSettings);
6 | //---------------------------------------------------------------------------
7 | #pragma package(smart_init)
8 | //---------------------------------------------------------------------------
9 |
10 | // Package source.
11 | //---------------------------------------------------------------------------
12 |
13 | #pragma argsused
14 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
15 | {
16 | return 1;
17 | }
18 | //---------------------------------------------------------------------------
19 |
--------------------------------------------------------------------------------
/CBuilder/Alexandria/VirtualShellToolsC.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/CBuilder/Alexandria/VirtualShellToolsC.ico
--------------------------------------------------------------------------------
/CBuilder/Alexandria/VirtualShellToolsCD.cpp:
--------------------------------------------------------------------------------
1 | //---------------------------------------------------------------------------
2 |
3 | #include
4 | #pragma hdrstop
5 | #pragma package(smart_init)
6 | //---------------------------------------------------------------------------
7 |
8 | // Package source.
9 | //---------------------------------------------------------------------------
10 |
11 | #pragma argsused
12 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
13 | {
14 | return 1;
15 | }
16 | //---------------------------------------------------------------------------
17 |
--------------------------------------------------------------------------------
/CBuilder/Alexandria/VirtualShellToolsCD.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/CBuilder/Alexandria/VirtualShellToolsCD.ico
--------------------------------------------------------------------------------
/CBuilder/Rio/CBuilder.groupproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | {08E512AA-B6C7-4392-B232-FE72BB50BC69}
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | Default.Personality.12
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/CBuilder/Rio/VirtualShellToolsC.cpp:
--------------------------------------------------------------------------------
1 | //---------------------------------------------------------------------------
2 |
3 | #include
4 | #pragma hdrstop
5 | USEFORMNS("..\..\Source\ColumnForm.pas", Columnform, FormColumnSettings);
6 | //---------------------------------------------------------------------------
7 | #pragma package(smart_init)
8 | //---------------------------------------------------------------------------
9 |
10 | // Package source.
11 | //---------------------------------------------------------------------------
12 |
13 | #pragma argsused
14 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
15 | {
16 | return 1;
17 | }
18 | //---------------------------------------------------------------------------
19 |
--------------------------------------------------------------------------------
/CBuilder/Rio/VirtualShellToolsC.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/CBuilder/Rio/VirtualShellToolsC.ico
--------------------------------------------------------------------------------
/CBuilder/Rio/VirtualShellToolsCD.cpp:
--------------------------------------------------------------------------------
1 | //---------------------------------------------------------------------------
2 |
3 | #include
4 | #pragma hdrstop
5 | #pragma package(smart_init)
6 | //---------------------------------------------------------------------------
7 |
8 | // Package source.
9 | //---------------------------------------------------------------------------
10 |
11 | #pragma argsused
12 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
13 | {
14 | return 1;
15 | }
16 | //---------------------------------------------------------------------------
17 |
--------------------------------------------------------------------------------
/CBuilder/Rio/VirtualShellToolsCD.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/CBuilder/Rio/VirtualShellToolsCD.ico
--------------------------------------------------------------------------------
/CBuilder/Sydney/CBuilder.groupproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | {08E512AA-B6C7-4392-B232-FE72BB50BC69}
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | Default.Personality.12
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/CBuilder/Sydney/VirtualShellToolsC.cpp:
--------------------------------------------------------------------------------
1 | //---------------------------------------------------------------------------
2 |
3 | #include
4 | #pragma hdrstop
5 | USEFORMNS("..\..\Source\ColumnForm.pas", Columnform, FormColumnSettings);
6 | //---------------------------------------------------------------------------
7 | #pragma package(smart_init)
8 | //---------------------------------------------------------------------------
9 |
10 | // Package source.
11 | //---------------------------------------------------------------------------
12 |
13 | #pragma argsused
14 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
15 | {
16 | return 1;
17 | }
18 | //---------------------------------------------------------------------------
19 |
--------------------------------------------------------------------------------
/CBuilder/Sydney/VirtualShellToolsC.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/CBuilder/Sydney/VirtualShellToolsC.ico
--------------------------------------------------------------------------------
/CBuilder/Sydney/VirtualShellToolsCD.cpp:
--------------------------------------------------------------------------------
1 | //---------------------------------------------------------------------------
2 |
3 | #include
4 | #pragma hdrstop
5 | #pragma package(smart_init)
6 | //---------------------------------------------------------------------------
7 |
8 | // Package source.
9 | //---------------------------------------------------------------------------
10 |
11 | #pragma argsused
12 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
13 | {
14 | return 1;
15 | }
16 | //---------------------------------------------------------------------------
17 |
--------------------------------------------------------------------------------
/CBuilder/Sydney/VirtualShellToolsCD.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/CBuilder/Sydney/VirtualShellToolsCD.ico
--------------------------------------------------------------------------------
/Delphi/Rio/Delphi.groupproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | {89D072DB-A12D-432C-B37E-6B8989CE4962}
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | Default.Personality.12
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/Delphi/Rio/VirtualShellToolsD.dpk:
--------------------------------------------------------------------------------
1 | package VirtualShellToolsD;
2 |
3 | {$R *.res}
4 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
5 | {$ALIGN 8}
6 | {$ASSERTIONS ON}
7 | {$BOOLEVAL OFF}
8 | {$DEBUGINFO OFF}
9 | {$EXTENDEDSYNTAX ON}
10 | {$IMPORTEDDATA ON}
11 | {$IOCHECKS ON}
12 | {$LOCALSYMBOLS OFF}
13 | {$LONGSTRINGS ON}
14 | {$OPENSTRINGS ON}
15 | {$OPTIMIZATION ON}
16 | {$OVERFLOWCHECKS OFF}
17 | {$RANGECHECKS OFF}
18 | {$REFERENCEINFO OFF}
19 | {$SAFEDIVIDE OFF}
20 | {$STACKFRAMES OFF}
21 | {$TYPEDADDRESS OFF}
22 | {$VARSTRINGCHECKS ON}
23 | {$WRITEABLECONST OFF}
24 | {$MINENUMSIZE 1}
25 | {$IMAGEBASE $400000}
26 | {$DEFINE RELEASE}
27 | {$ENDIF IMPLICITBUILDING}
28 | {$DESCRIPTION 'VirtualShellTools Delphi Runtime Package'}
29 | {$LIBSUFFIX '260'}
30 | {$RUNONLY}
31 | {$IMPLICITBUILD OFF}
32 |
33 | requires
34 | rtl,
35 | vcl,
36 | vclimg,
37 | EasyListviewD,
38 | MPCommonLibD,
39 | VirtualTreesR;
40 |
41 | contains
42 | AppletsAndWizards in '..\..\Source\AppletsAndWizards.pas',
43 | VirtualCommandLine in '..\..\Source\VirtualCommandLine.pas',
44 | VirtualExplorerTree in '..\..\Source\VirtualExplorerTree.pas',
45 | VirtualRedirector in '..\..\Source\VirtualRedirector.pas',
46 | VirtualResources in '..\..\Source\VirtualResources.pas',
47 | VirtualScrollbars in '..\..\Source\VirtualScrollbars.pas',
48 | VirtualSendToMenu in '..\..\Source\VirtualSendToMenu.pas',
49 | VirtualShellAutoComplete in '..\..\Source\VirtualShellAutoComplete.pas',
50 | VirtualShellHistory in '..\..\Source\VirtualShellHistory.pas',
51 | VirtualShellNewMenu in '..\..\Source\VirtualShellNewMenu.pas',
52 | VirtualShellNotifier in '..\..\Source\VirtualShellNotifier.pas',
53 | VirtualShellToolBar in '..\..\Source\VirtualShellToolBar.pas',
54 | VirtualThumbnails in '..\..\Source\VirtualThumbnails.pas',
55 | VirtualExplorerEasyListview in '..\..\Source\VirtualExplorerEasyListview.pas',
56 | VirtualExplorerEasyListModeview in '..\..\Source\VirtualExplorerEasyListModeview.pas',
57 | VirtualFileSearch in '..\..\Source\VirtualFileSearch.pas',
58 | ColumnForm in '..\..\Source\ColumnForm.pas' {FormColumnSettings};
59 |
60 | end.
61 |
--------------------------------------------------------------------------------
/Delphi/Rio/VirtualShellToolsDD.dpk:
--------------------------------------------------------------------------------
1 | package VirtualShellToolsDD;
2 |
3 | {$R *.res}
4 | {$R '..\..\Design\VirtualShellToolsReg.dcr'}
5 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
6 | {$ALIGN 8}
7 | {$ASSERTIONS ON}
8 | {$BOOLEVAL OFF}
9 | {$DEBUGINFO OFF}
10 | {$EXTENDEDSYNTAX ON}
11 | {$IMPORTEDDATA ON}
12 | {$IOCHECKS ON}
13 | {$LOCALSYMBOLS OFF}
14 | {$LONGSTRINGS ON}
15 | {$OPENSTRINGS ON}
16 | {$OPTIMIZATION ON}
17 | {$OVERFLOWCHECKS OFF}
18 | {$RANGECHECKS OFF}
19 | {$REFERENCEINFO OFF}
20 | {$SAFEDIVIDE OFF}
21 | {$STACKFRAMES OFF}
22 | {$TYPEDADDRESS OFF}
23 | {$VARSTRINGCHECKS ON}
24 | {$WRITEABLECONST OFF}
25 | {$MINENUMSIZE 1}
26 | {$IMAGEBASE $400000}
27 | {$DEFINE RELEASE}
28 | {$ENDIF IMPLICITBUILDING}
29 | {$DESCRIPTION 'Virtual Shell Tools Delphi Designtime Package'}
30 | {$LIBSUFFIX '260'}
31 | {$DESIGNONLY}
32 | {$IMPLICITBUILD OFF}
33 |
34 | requires
35 | vcl,
36 | rtl,
37 | designide,
38 | vclactnband,
39 | vclx,
40 | EasyListviewD,
41 | VirtualShellToolsD;
42 |
43 | contains
44 | VirtualShellToolsReg in '..\..\Design\VirtualShellToolsReg.pas';
45 |
46 | end.
47 |
--------------------------------------------------------------------------------
/Delphi/Syndey+/VirtualShellToolsD.dpk:
--------------------------------------------------------------------------------
1 | package VirtualShellToolsD;
2 |
3 | {$R *.res}
4 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
5 | {$ALIGN 8}
6 | {$ASSERTIONS ON}
7 | {$BOOLEVAL OFF}
8 | {$DEBUGINFO OFF}
9 | {$EXTENDEDSYNTAX ON}
10 | {$IMPORTEDDATA ON}
11 | {$IOCHECKS ON}
12 | {$LOCALSYMBOLS OFF}
13 | {$LONGSTRINGS ON}
14 | {$OPENSTRINGS ON}
15 | {$OPTIMIZATION ON}
16 | {$OVERFLOWCHECKS OFF}
17 | {$RANGECHECKS OFF}
18 | {$REFERENCEINFO OFF}
19 | {$SAFEDIVIDE OFF}
20 | {$STACKFRAMES OFF}
21 | {$TYPEDADDRESS OFF}
22 | {$VARSTRINGCHECKS ON}
23 | {$WRITEABLECONST OFF}
24 | {$MINENUMSIZE 1}
25 | {$IMAGEBASE $400000}
26 | {$DEFINE RELEASE}
27 | {$ENDIF IMPLICITBUILDING}
28 | {$DESCRIPTION 'VirtualShellTools Delphi Runtime Package'}
29 | {$RUNONLY}
30 | {$IMPLICITBUILD OFF}
31 | {$LIBSUFFIX AUTO}
32 |
33 | requires
34 | rtl,
35 | vcl,
36 | vclimg,
37 | EasyListviewD,
38 | MPCommonLibD,
39 | VirtualTreesR;
40 |
41 | contains
42 | AppletsAndWizards in '..\..\Source\AppletsAndWizards.pas',
43 | VirtualCommandLine in '..\..\Source\VirtualCommandLine.pas',
44 | VirtualExplorerTree in '..\..\Source\VirtualExplorerTree.pas',
45 | VirtualRedirector in '..\..\Source\VirtualRedirector.pas',
46 | VirtualResources in '..\..\Source\VirtualResources.pas',
47 | VirtualScrollbars in '..\..\Source\VirtualScrollbars.pas',
48 | VirtualSendToMenu in '..\..\Source\VirtualSendToMenu.pas',
49 | VirtualShellAutoComplete in '..\..\Source\VirtualShellAutoComplete.pas',
50 | VirtualShellHistory in '..\..\Source\VirtualShellHistory.pas',
51 | VirtualShellNewMenu in '..\..\Source\VirtualShellNewMenu.pas',
52 | VirtualShellNotifier in '..\..\Source\VirtualShellNotifier.pas',
53 | VirtualShellToolBar in '..\..\Source\VirtualShellToolBar.pas',
54 | VirtualThumbnails in '..\..\Source\VirtualThumbnails.pas',
55 | VirtualExplorerEasyListview in '..\..\Source\VirtualExplorerEasyListview.pas',
56 | VirtualExplorerEasyListModeview in '..\..\Source\VirtualExplorerEasyListModeview.pas',
57 | VirtualFileSearch in '..\..\Source\VirtualFileSearch.pas',
58 | ColumnForm in '..\..\Source\ColumnForm.pas' {FormColumnSettings};
59 |
60 | end.
61 |
--------------------------------------------------------------------------------
/Delphi/Syndey+/VirtualShellToolsDD.dpk:
--------------------------------------------------------------------------------
1 | package VirtualShellToolsDD;
2 |
3 | {$R *.res}
4 | {$R '..\..\Design\VirtualShellToolsReg.dcr'}
5 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
6 | {$ALIGN 8}
7 | {$ASSERTIONS ON}
8 | {$BOOLEVAL OFF}
9 | {$DEBUGINFO OFF}
10 | {$EXTENDEDSYNTAX ON}
11 | {$IMPORTEDDATA ON}
12 | {$IOCHECKS ON}
13 | {$LOCALSYMBOLS OFF}
14 | {$LONGSTRINGS ON}
15 | {$OPENSTRINGS ON}
16 | {$OPTIMIZATION ON}
17 | {$OVERFLOWCHECKS OFF}
18 | {$RANGECHECKS OFF}
19 | {$REFERENCEINFO OFF}
20 | {$SAFEDIVIDE OFF}
21 | {$STACKFRAMES OFF}
22 | {$TYPEDADDRESS OFF}
23 | {$VARSTRINGCHECKS ON}
24 | {$WRITEABLECONST OFF}
25 | {$MINENUMSIZE 1}
26 | {$IMAGEBASE $400000}
27 | {$DEFINE RELEASE}
28 | {$ENDIF IMPLICITBUILDING}
29 | {$DESCRIPTION 'Virtual Shell Tools Delphi Designtime Package'}
30 | {$LIBSUFFIX AUTO}
31 | {$DESIGNONLY}
32 | {$IMPLICITBUILD OFF}
33 |
34 | requires
35 | vcl,
36 | rtl,
37 | designide,
38 | vclactnband,
39 | vclx,
40 | EasyListviewD,
41 | VirtualShellToolsD;
42 |
43 | contains
44 | VirtualShellToolsReg in '..\..\Design\VirtualShellToolsReg.pas';
45 |
46 | end.
47 |
--------------------------------------------------------------------------------
/Delphi/Syndey+/readme.md:
--------------------------------------------------------------------------------
1 | This directory contains alternative Delphi packages that allow VirtualShellTools to be used with the
2 | [Jam-Software version of Virtual-Treeview](https://github.com/JAM-Software/Virtual-TreeView)
--------------------------------------------------------------------------------
/Demos/Adding Custom Columns Using ShellDetails/ShellDetailsCustomColumns.dpr:
--------------------------------------------------------------------------------
1 | program ShellDetailsCustomColumns;
2 |
3 | uses
4 | Forms,
5 | Unit1 in 'Unit1.pas' {Form1};
6 |
7 | {$R *.RES}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.CreateForm(TForm1, Form1);
12 | Application.Run;
13 | end.
14 |
--------------------------------------------------------------------------------
/Demos/Adding Custom Columns Using ShellDetails/ShellDetailsCustomColumns.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/Adding Custom Columns Using ShellDetails/ShellDetailsCustomColumns.res
--------------------------------------------------------------------------------
/Demos/Adding Custom Columns Using ShellDetails/Unit1.dfm:
--------------------------------------------------------------------------------
1 | object Form1: TForm1
2 | Left = 534
3 | Top = 326
4 | Caption = 'Form1'
5 | ClientHeight = 463
6 | ClientWidth = 844
7 | Color = clBtnFace
8 | Font.Charset = DEFAULT_CHARSET
9 | Font.Color = clWindowText
10 | Font.Height = -11
11 | Font.Name = 'MS Sans Serif'
12 | Font.Style = []
13 | OldCreateOrder = False
14 | PixelsPerInch = 96
15 | TextHeight = 13
16 | object VirtualExplorerListview1: TVirtualExplorerListview
17 | Left = 0
18 | Top = 0
19 | Width = 844
20 | Height = 463
21 | Active = True
22 | Align = alClient
23 | ColumnDetails = cdShellColumns
24 | DefaultNodeHeight = 17
25 | DragHeight = 250
26 | DragWidth = 150
27 | FileObjects = [foFolders, foNonFolders, foHidden, foEnableAsync]
28 | FileSizeFormat = fsfExplorer
29 | FileSort = fsFileType
30 | Header.AutoSizeIndex = -1
31 | Header.Options = [hoColumnResize, hoDblClickResize, hoDrag, hoShowSortGlyphs, hoVisible]
32 | Header.ParentFont = True
33 | Header.SortColumn = 0
34 | Header.Style = hsFlatButtons
35 | HintMode = hmHint
36 | Indent = 0
37 | ParentColor = False
38 | RootFolder = rfDesktop
39 | TabOrder = 0
40 | TabStop = True
41 | TreeOptions.AutoOptions = [toAutoScroll]
42 | TreeOptions.MiscOptions = [toAcceptOLEDrop, toEditable, toReportMode, toToggleOnDblClick]
43 | TreeOptions.PaintOptions = [toShowTreeLines, toUseBlendedImages, toGhostedIfUnfocused]
44 | TreeOptions.SelectionOptions = [toMultiSelect, toRightClickSelect, toSiblingSelectConstraint]
45 | TreeOptions.VETFolderOptions = [toHideRootFolder, toThreadedExpandMark]
46 | TreeOptions.VETShellOptions = [toRightAlignSizeColumn, toContextMenus, toShellColumnMenu]
47 | TreeOptions.VETSyncOptions = [toCollapseTargetFirst, toExpandTarget, toSelectTarget]
48 | TreeOptions.VETMiscOptions = [toBrowseExecuteFolder, toBrowseExecuteFolderShortcut, toBrowseExecuteZipFolder, toChangeNotifierThread, toExecuteOnDblClk]
49 | TreeOptions.VETImageOptions = [toImages, toThreadedImages, toMarkCutAndCopy]
50 | OnCustomColumnCompare = ExplorerListview1CustomColumnCompare
51 | OnGetVETText = ExplorerListview1GetVETText
52 | ColumnMenuItemCount = 8
53 | OnHeaderRebuild = ExplorerListview1HeaderRebuild
54 | end
55 | end
56 |
--------------------------------------------------------------------------------
/Demos/Adding Custom Columns Using ShellDetails/Unit1.pas:
--------------------------------------------------------------------------------
1 | unit Unit1;
2 |
3 | interface
4 |
5 | uses
6 | Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
7 | ExtCtrls, VirtualExplorerTree, VirtualTrees, MPShellUtilities,
8 | StdCtrls;
9 |
10 | type
11 | TForm1 = class(TForm)
12 | VirtualExplorerListview1: TVirtualExplorerListview;
13 | procedure ExplorerListview1GetVETText(
14 | Sender: TCustomVirtualExplorerTree; Column: TColumnIndex;
15 | Node: PVirtualNode; Namespace: TNamespace; var Text: string);
16 | procedure ExplorerListview1HeaderRebuild(Sender: TCustomVirtualExplorerTree;
17 | Header: TVTHeader);
18 | procedure ExplorerListview1CustomColumnCompare(
19 | Sender: TCustomVirtualExplorerTree; Column: TColumnIndex; Node1,
20 | Node2: PVirtualNode; var Result: Integer);
21 | private
22 | { Private declarations }
23 | public
24 | { Public declarations }
25 | CustomIndex: integer;
26 | end;
27 |
28 | var
29 | Form1: TForm1;
30 |
31 | implementation
32 |
33 | {$R *.DFM}
34 |
35 | procedure TForm1.ExplorerListview1GetVETText(
36 | Sender: TCustomVirtualExplorerTree; Column: TColumnIndex; Node: PVirtualNode;
37 | Namespace: TNamespace; var Text: string);
38 | var
39 | NS: TNamespace;
40 | begin
41 | if Sender.ValidateNamespace(Node, NS) then
42 | begin
43 | if Column = CustomIndex then
44 | Text := ExtractFileExt(NS.NameParseAddress);
45 | if Column = CustomIndex + 1 then
46 | Text := 'CustomColumn 2'
47 | end;
48 | end;
49 |
50 | procedure TForm1.ExplorerListview1HeaderRebuild(
51 | Sender: TCustomVirtualExplorerTree; Header: TVTHeader);
52 | var
53 | NewColumn: TVETColumn;
54 | begin
55 | CustomIndex := Header.Columns.Count;
56 | NewColumn := TVETColumn(Header.Columns.Add);
57 | NewColumn.ColumnDetails := cdCustom;
58 | NewColumn.Text := 'Extension';
59 | NewColumn.Width := 60;
60 |
61 | NewColumn := TVETColumn( Header.Columns.Add);
62 | NewColumn.ColumnDetails := cdCustom;
63 | NewColumn.Text := 'Second Custom';
64 | end;
65 |
66 | procedure TForm1.ExplorerListview1CustomColumnCompare(
67 | Sender: TCustomVirtualExplorerTree; Column: TColumnIndex; Node1,
68 | Node2: PVirtualNode; var Result: Integer);
69 | var
70 | NS1, NS2: TNamespace;
71 | s1, s2: string;
72 | begin
73 | if Sender.ValidateNamespace(Node1, NS1) and Sender.ValidateNamespace(Node2, NS2) then
74 | begin
75 | if Column = CustomIndex then
76 | begin
77 | { Win9x compatible }
78 | s1 := ExtractFileExt(NS1.NameParseAddress);
79 | s2 := ExtractFileExt(NS2.NameParseAddress);
80 | Result := lstrcmp(PChar(s1), PChar(s2));
81 | { If equal use the name ordering as a secondary sort }
82 | if Result = 0 then
83 | begin
84 | s1 := NS1.NameNormal;
85 | s2 := NS2.NameNormal;
86 | Result := lstrcmp(PChar(s1), PChar(s2));
87 | end;
88 | end
89 | end;
90 | end;
91 |
92 | end.
93 |
--------------------------------------------------------------------------------
/Demos/Applet and Wizard Launcher/AppletWizardLauncher.dpr:
--------------------------------------------------------------------------------
1 | program AppletWizardLauncher;
2 |
3 | uses
4 | Forms,
5 | Unit1 in 'Unit1.pas' {Form1};
6 |
7 | {$R *.RES}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.CreateForm(TForm1, Form1);
12 | Application.Run;
13 | end.
14 |
--------------------------------------------------------------------------------
/Demos/Applet and Wizard Launcher/AppletWizardLauncher.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/Applet and Wizard Launcher/AppletWizardLauncher.res
--------------------------------------------------------------------------------
/Demos/AutoComplete Component/AutoCompleteComponentProject.dpr:
--------------------------------------------------------------------------------
1 | program AutoCompleteComponentProject;
2 |
3 | uses
4 | Forms,
5 | Unit1 in 'Unit1.pas' {Form1};
6 |
7 | {$R *.res}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.CreateForm(TForm1, Form1);
12 | Application.Run;
13 | end.
14 |
--------------------------------------------------------------------------------
/Demos/AutoComplete Component/AutoCompleteComponentProject.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/AutoComplete Component/AutoCompleteComponentProject.res
--------------------------------------------------------------------------------
/Demos/AutoComplete Component/Unit1.dfm:
--------------------------------------------------------------------------------
1 | object Form1: TForm1
2 | Left = 243
3 | Top = 192
4 | Width = 765
5 | Height = 480
6 | Caption = 'Form1'
7 | Color = clBtnFace
8 | Font.Charset = DEFAULT_CHARSET
9 | Font.Color = clWindowText
10 | Font.Height = -11
11 | Font.Name = 'MS Shell Dlg 2'
12 | Font.Style = []
13 | OldCreateOrder = False
14 | DesignSize = (
15 | 749
16 | 442)
17 | PixelsPerInch = 96
18 | TextHeight = 13
19 | object Label1: TLabel
20 | Left = 272
21 | Top = 184
22 | Width = 446
23 | Height = 13
24 | Caption =
25 | 'Select a folder in the treeview to see what the shell suggests f' +
26 | 'or autocomplete on the folder '
27 | end
28 | object CheckBox1: TCheckBox
29 | Left = 264
30 | Top = 8
31 | Width = 201
32 | Height = 17
33 | Caption = 'Include Current Directory'
34 | Checked = True
35 | State = cbChecked
36 | TabOrder = 0
37 | OnClick = CheckBox1Click
38 | end
39 | object CheckBox2: TCheckBox
40 | Left = 264
41 | Top = 24
42 | Width = 201
43 | Height = 17
44 | Caption = 'Include My Computer'
45 | Checked = True
46 | State = cbChecked
47 | TabOrder = 1
48 | OnClick = CheckBox2Click
49 | end
50 | object CheckBox3: TCheckBox
51 | Left = 264
52 | Top = 40
53 | Width = 201
54 | Height = 17
55 | Caption = 'Include Desktop'
56 | Checked = True
57 | State = cbChecked
58 | TabOrder = 2
59 | OnClick = CheckBox3Click
60 | end
61 | object VirtualExplorerTreeview1: TVirtualExplorerTreeview
62 | Left = 0
63 | Top = 0
64 | Width = 257
65 | Height = 442
66 | Active = True
67 | Align = alLeft
68 | ColumnDetails = cdUser
69 | DefaultNodeHeight = 17
70 | DragHeight = 250
71 | DragWidth = 150
72 | FileSizeFormat = fsfExplorer
73 | FileSort = fsFileType
74 | Header.AutoSizeIndex = 0
75 | Header.DefaultHeight = 17
76 | Header.Font.Charset = DEFAULT_CHARSET
77 | Header.Font.Color = clWindowText
78 | Header.Font.Height = -11
79 | Header.Font.Name = 'MS Shell Dlg 2'
80 | Header.Font.Style = []
81 | Header.MainColumn = -1
82 | Header.Options = [hoColumnResize, hoDrag]
83 | HintAnimation = hatNone
84 | HintMode = hmHint
85 | ParentColor = False
86 | RootFolder = rfDesktop
87 | TabOrder = 3
88 | TabStop = True
89 | TreeOptions.AutoOptions = [toAutoScroll]
90 | TreeOptions.MiscOptions = [toAcceptOLEDrop, toEditable, toToggleOnDblClick]
91 | TreeOptions.PaintOptions = [toShowButtons, toShowTreeLines, toUseBlendedImages]
92 | TreeOptions.SelectionOptions = [toMultiSelect, toRightClickSelect, toSiblingSelectConstraint]
93 | TreeOptions.VETShellOptions = [toContextMenus]
94 | TreeOptions.VETSyncOptions = [toCollapseTargetFirst, toExpandTarget, toSelectTarget]
95 | TreeOptions.VETMiscOptions = [toBrowseExecuteFolder, toBrowseExecuteFolderShortcut, toChangeNotifierThread]
96 | TreeOptions.VETImageOptions = [toImages, toThreadedImages]
97 | OnFocusChanged = VirtualExplorerTreeview1FocusChanged
98 | Columns = <>
99 | end
100 | object CheckBox4: TCheckBox
101 | Left = 264
102 | Top = 56
103 | Width = 201
104 | Height = 17
105 | Caption = 'Include Favorites'
106 | TabOrder = 4
107 | OnClick = CheckBox4Click
108 | end
109 | object CheckBox5: TCheckBox
110 | Left = 264
111 | Top = 72
112 | Width = 201
113 | Height = 17
114 | Caption = 'Include Only File System Objects'
115 | TabOrder = 5
116 | OnClick = CheckBox5Click
117 | end
118 | object CheckBox6: TCheckBox
119 | Left = 264
120 | Top = 88
121 | Width = 201
122 | Height = 17
123 | Caption = 'Include File Folders'
124 | Checked = True
125 | State = cbChecked
126 | TabOrder = 6
127 | OnClick = CheckBox6Click
128 | end
129 | object CheckBox7: TCheckBox
130 | Left = 264
131 | Top = 104
132 | Width = 201
133 | Height = 17
134 | Caption = 'Include Files'
135 | Checked = True
136 | State = cbChecked
137 | TabOrder = 7
138 | OnClick = CheckBox7Click
139 | end
140 | object CheckBox8: TCheckBox
141 | Left = 264
142 | Top = 120
143 | Width = 201
144 | Height = 17
145 | Caption = 'Include Hidden Objects'
146 | TabOrder = 8
147 | OnClick = CheckBox8Click
148 | end
149 | object CheckBox9: TCheckBox
150 | Left = 264
151 | Top = 136
152 | Width = 201
153 | Height = 17
154 | Caption = 'Recurse into Sub-Folders'
155 | TabOrder = 9
156 | OnClick = CheckBox9Click
157 | end
158 | object CheckBox10: TCheckBox
159 | Left = 264
160 | Top = 152
161 | Width = 201
162 | Height = 17
163 | Caption = 'Sort List'
164 | TabOrder = 10
165 | OnClick = CheckBox10Click
166 | end
167 | object ListBox1: TListBox
168 | Left = 264
169 | Top = 208
170 | Width = 478
171 | Height = 225
172 | Anchors = [akLeft, akTop, akRight, akBottom]
173 | ItemHeight = 13
174 | TabOrder = 11
175 | end
176 | object VirtualShellAutoComplete1: TVirtualShellAutoComplete
177 | CurrentDir = ''
178 | Left = 528
179 | Top = 136
180 | end
181 | end
182 |
--------------------------------------------------------------------------------
/Demos/AutoComplete Component/Unit1.pas:
--------------------------------------------------------------------------------
1 | unit Unit1;
2 |
3 | interface
4 |
5 | uses
6 | Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
7 | Dialogs, StdCtrls, VirtualShellAutoComplete, VirtualTrees,
8 | VirtualExplorerTree;
9 |
10 | type
11 | TForm1 = class(TForm)
12 | CheckBox1: TCheckBox;
13 | CheckBox2: TCheckBox;
14 | CheckBox3: TCheckBox;
15 | VirtualShellAutoComplete1: TVirtualShellAutoComplete;
16 | VirtualExplorerTreeview1: TVirtualExplorerTreeview;
17 | CheckBox4: TCheckBox;
18 | CheckBox5: TCheckBox;
19 | CheckBox6: TCheckBox;
20 | CheckBox7: TCheckBox;
21 | CheckBox8: TCheckBox;
22 | CheckBox9: TCheckBox;
23 | CheckBox10: TCheckBox;
24 | Label1: TLabel;
25 | ListBox1: TListBox;
26 | procedure CheckBox1Click(Sender: TObject);
27 | procedure CheckBox2Click(Sender: TObject);
28 | procedure CheckBox3Click(Sender: TObject);
29 | procedure CheckBox4Click(Sender: TObject);
30 | procedure CheckBox5Click(Sender: TObject);
31 | procedure CheckBox6Click(Sender: TObject);
32 | procedure CheckBox7Click(Sender: TObject);
33 | procedure CheckBox8Click(Sender: TObject);
34 | procedure CheckBox9Click(Sender: TObject);
35 | procedure CheckBox10Click(Sender: TObject);
36 | procedure VirtualExplorerTreeview1FocusChanged(
37 | Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex);
38 | private
39 | { Private declarations }
40 | public
41 | { Public declarations }
42 | end;
43 |
44 | var
45 | Form1: TForm1;
46 |
47 | implementation
48 |
49 | {$R *.dfm}
50 |
51 | procedure TForm1.CheckBox1Click(Sender: TObject);
52 | begin
53 | if CheckBox1.Checked then
54 | VirtualShellAutoComplete1.Contents := VirtualShellAutoComplete1.Contents + [accCurrentDir]
55 | else
56 | VirtualShellAutoComplete1.Contents := VirtualShellAutoComplete1.Contents - [accCurrentDir]
57 | end;
58 |
59 | procedure TForm1.CheckBox2Click(Sender: TObject);
60 | begin
61 | if CheckBox2.Checked then
62 | VirtualShellAutoComplete1.Contents := VirtualShellAutoComplete1.Contents + [accMyComputer]
63 | else
64 | VirtualShellAutoComplete1.Contents := VirtualShellAutoComplete1.Contents - [accMyComputer]
65 | end;
66 |
67 | procedure TForm1.CheckBox3Click(Sender: TObject);
68 | begin
69 | if CheckBox3.Checked then
70 | VirtualShellAutoComplete1.Contents := VirtualShellAutoComplete1.Contents + [accDesktop]
71 | else
72 | VirtualShellAutoComplete1.Contents := VirtualShellAutoComplete1.Contents - [accDesktop]
73 | end;
74 |
75 | procedure TForm1.CheckBox4Click(Sender: TObject);
76 | begin
77 | if CheckBox4.Checked then
78 | VirtualShellAutoComplete1.Contents := VirtualShellAutoComplete1.Contents + [accFavorites]
79 | else
80 | VirtualShellAutoComplete1.Contents := VirtualShellAutoComplete1.Contents - [accFavorites]
81 | end;
82 |
83 | procedure TForm1.CheckBox5Click(Sender: TObject);
84 | begin
85 | if CheckBox5.Checked then
86 | VirtualShellAutoComplete1.Contents := VirtualShellAutoComplete1.Contents + [accFileSysOnly]
87 | else
88 | VirtualShellAutoComplete1.Contents := VirtualShellAutoComplete1.Contents - [accFileSysOnly]
89 | end;
90 |
91 | procedure TForm1.CheckBox6Click(Sender: TObject);
92 | begin
93 | if CheckBox6.Checked then
94 | VirtualShellAutoComplete1.Contents := VirtualShellAutoComplete1.Contents + [accFileSysDirs]
95 | else
96 | VirtualShellAutoComplete1.Contents := VirtualShellAutoComplete1.Contents - [accFileSysDirs]
97 | end;
98 |
99 | procedure TForm1.CheckBox7Click(Sender: TObject);
100 | begin
101 | if CheckBox7.Checked then
102 | VirtualShellAutoComplete1.Contents := VirtualShellAutoComplete1.Contents + [accFileSysFiles]
103 | else
104 | VirtualShellAutoComplete1.Contents := VirtualShellAutoComplete1.Contents - [accFileSysFiles]
105 | end;
106 |
107 | procedure TForm1.CheckBox8Click(Sender: TObject);
108 | begin
109 | if CheckBox8.Checked then
110 | VirtualShellAutoComplete1.Contents := VirtualShellAutoComplete1.Contents + [accHidden]
111 | else
112 | VirtualShellAutoComplete1.Contents := VirtualShellAutoComplete1.Contents - [accHidden]
113 | end;
114 |
115 | procedure TForm1.CheckBox9Click(Sender: TObject);
116 | begin
117 | if CheckBox9.Checked then
118 | VirtualShellAutoComplete1.Contents := VirtualShellAutoComplete1.Contents + [accRecursive]
119 | else
120 | VirtualShellAutoComplete1.Contents := VirtualShellAutoComplete1.Contents - [accRecursive]
121 | end;
122 |
123 | procedure TForm1.CheckBox10Click(Sender: TObject);
124 | begin
125 | if CheckBox10.Checked then
126 | VirtualShellAutoComplete1.Contents := VirtualShellAutoComplete1.Contents + [accSortList]
127 | else
128 | VirtualShellAutoComplete1.Contents := VirtualShellAutoComplete1.Contents - [accSortList]
129 | end;
130 |
131 | procedure TForm1.VirtualExplorerTreeview1FocusChanged(
132 | Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex);
133 | var
134 | OldCursor: TCursor;
135 | begin
136 | OldCursor := Screen.Cursor;
137 | Screen.Cursor := crHourglass;
138 | try
139 | VirtualShellAutoComplete1.CurrentDir := VirtualExplorerTreeview1.SelectedPath;
140 | VirtualShellAutoComplete1.Refresh;
141 | ListBox1.Items := VirtualShellAutoComplete1.Strings;
142 | finally
143 | Screen.Cursor := OldCursor
144 | end
145 |
146 | end;
147 |
148 | end.
149 |
--------------------------------------------------------------------------------
/Demos/AutoCompleteObject/AutoCompleteObject.dpr:
--------------------------------------------------------------------------------
1 | program AutoCompleteObject;
2 |
3 | uses
4 | Forms,
5 | Unit1 in 'Unit1.pas' {Form1};
6 |
7 | {$R *.RES}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.CreateForm(TForm1, Form1);
12 | Application.Run;
13 | end.
14 |
--------------------------------------------------------------------------------
/Demos/AutoCompleteObject/AutoCompleteObject.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/AutoCompleteObject/AutoCompleteObject.res
--------------------------------------------------------------------------------
/Demos/AutoCompleteObject/Unit1.dfm:
--------------------------------------------------------------------------------
1 | object Form1: TForm1
2 | Left = 320
3 | Top = 329
4 | Caption = 'Form1'
5 | ClientHeight = 252
6 | ClientWidth = 520
7 | Color = clBtnFace
8 | Font.Charset = DEFAULT_CHARSET
9 | Font.Color = clWindowText
10 | Font.Height = -11
11 | Font.Name = 'MS Sans Serif'
12 | Font.Style = []
13 | OldCreateOrder = False
14 | DesignSize = (
15 | 520
16 | 252)
17 | PixelsPerInch = 96
18 | TextHeight = 13
19 | object Label1: TLabel
20 | Left = 8
21 | Top = 16
22 | Width = 211
23 | Height = 13
24 | Caption = 'Start to type a target path into the Combobox'
25 | end
26 | object ExplorerTreeview1: TVirtualExplorerTreeview
27 | Left = 8
28 | Top = 72
29 | Width = 200
30 | Height = 204
31 | Active = True
32 | Anchors = [akLeft, akTop, akBottom]
33 | ColumnDetails = cdUser
34 | DefaultNodeHeight = 17
35 | DragHeight = 250
36 | DragWidth = 150
37 | ExplorerComboBox = ExplorerComboBox1
38 | FileObjects = [foFolders, foHidden, foEnableAsync]
39 | FileSizeFormat = fsfExplorer
40 | FileSort = fsFileType
41 | Header.AutoSizeIndex = 0
42 | Header.Font.Charset = DEFAULT_CHARSET
43 | Header.Font.Color = clWindowText
44 | Header.Font.Height = -11
45 | Header.Font.Name = 'MS Sans Serif'
46 | Header.Font.Style = []
47 | Header.MainColumn = -1
48 | Header.Options = [hoColumnResize, hoDrag]
49 | HintAnimation = hatNone
50 | HintMode = hmHint
51 | ParentColor = False
52 | RootFolder = rfDesktop
53 | TabOrder = 0
54 | TabStop = True
55 | TreeOptions.AutoOptions = [toAutoScroll, toAutoScrollOnExpand]
56 | TreeOptions.MiscOptions = [toAcceptOLEDrop, toEditable, toToggleOnDblClick]
57 | TreeOptions.PaintOptions = [toShowButtons, toShowTreeLines, toUseBlendedImages]
58 | TreeOptions.SelectionOptions = [toMultiSelect, toRightClickSelect, toSiblingSelectConstraint]
59 | TreeOptions.VETShellOptions = [toContextMenus]
60 | TreeOptions.VETSyncOptions = [toCollapseTargetFirst, toExpandTarget, toSelectTarget]
61 | TreeOptions.VETMiscOptions = [toBrowseExecuteFolder, toBrowseExecuteFolderShortcut, toChangeNotifierThread]
62 | TreeOptions.VETImageOptions = [toImages, toThreadedImages]
63 | VirtualExplorerListview = ExplorerListview1
64 | Columns = <>
65 | end
66 | object ExplorerListview1: TVirtualExplorerListview
67 | Left = 214
68 | Top = 72
69 | Width = 297
70 | Height = 201
71 | Active = True
72 | Anchors = [akLeft, akTop, akRight, akBottom]
73 | ColumnDetails = cdShellColumns
74 | DefaultNodeHeight = 17
75 | DragHeight = 250
76 | DragWidth = 150
77 | FileObjects = [foFolders, foNonFolders, foHidden]
78 | FileSizeFormat = fsfExplorer
79 | FileSort = fsFileType
80 | Header.AutoSizeIndex = -1
81 | Header.Font.Charset = DEFAULT_CHARSET
82 | Header.Font.Color = clWindowText
83 | Header.Font.Height = -11
84 | Header.Font.Name = 'MS Sans Serif'
85 | Header.Font.Style = []
86 | Header.Options = [hoColumnResize, hoDrag, hoShowSortGlyphs, hoVisible]
87 | Header.SortColumn = 0
88 | HintAnimation = hatNone
89 | HintMode = hmHint
90 | Indent = 0
91 | ParentColor = False
92 | RootFolder = rfDesktop
93 | TabOrder = 1
94 | TabStop = True
95 | TreeOptions.AutoOptions = [toAutoScroll]
96 | TreeOptions.MiscOptions = [toAcceptOLEDrop, toEditable, toReportMode, toToggleOnDblClick]
97 | TreeOptions.PaintOptions = [toShowButtons, toShowTreeLines, toUseBlendedImages]
98 | TreeOptions.SelectionOptions = [toMultiSelect, toRightClickSelect, toSiblingSelectConstraint]
99 | TreeOptions.VETFolderOptions = [toHideRootFolder]
100 | TreeOptions.VETShellOptions = [toContextMenus, toShellColumnMenu]
101 | TreeOptions.VETSyncOptions = [toCollapseTargetFirst, toExpandTarget, toSelectTarget]
102 | TreeOptions.VETMiscOptions = [toBrowseExecuteFolder, toBrowseExecuteFolderShortcut, toChangeNotifierThread]
103 | TreeOptions.VETImageOptions = [toImages, toThreadedImages]
104 | ColumnMenuItemCount = 8
105 | VirtualExplorerTreeview = ExplorerTreeview1
106 | ThreadedEnum = True
107 | end
108 | object ExplorerComboBox1: TVirtualExplorerCombobox
109 | Left = 8
110 | Top = 40
111 | Width = 300
112 | Active = True
113 | Constraints.MinHeight = 23
114 | Options = [vcboThemeAware]
115 | TabOrder = 2
116 | TabStop = False
117 | Path = 'ExplorerComboBox1'
118 | PopupAutoCompleteOptions.Contents = [accCurrentDir, accMyComputer, accDesktop, accFileSysDirs, accFileSysFiles]
119 | PopupAutoCompleteOptions.OnAutoCompleteUpdateList = ExplorerComboBox1AutoCompleteUpdateList
120 | VirtualExplorerTree = ExplorerTreeview1
121 | OnAutoCompleteUpdateList = ExplorerComboBox1AutoCompleteUpdateList
122 | end
123 | object CheckBoxCustom: TCheckBox
124 | Left = 320
125 | Top = 40
126 | Width = 129
127 | Height = 17
128 | Caption = 'Fill with Custom Paths'
129 | TabOrder = 3
130 | end
131 | end
132 |
--------------------------------------------------------------------------------
/Demos/AutoCompleteObject/Unit1.pas:
--------------------------------------------------------------------------------
1 | unit Unit1;
2 |
3 | // Demo of how to custom popuplate the Autocomple drop down
4 |
5 | interface
6 |
7 | uses
8 | Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
9 | StdCtrls, VirtualExplorerTree, ExtCtrls, VirtualTrees;
10 |
11 | type
12 | TForm1 = class(TForm)
13 | ExplorerTreeview1: TVirtualExplorerTreeview;
14 | ExplorerListview1: TVirtualExplorerListview;
15 | ExplorerComboBox1: TVirtualExplorerCombobox;
16 | CheckBoxCustom: TCheckBox;
17 | Label1: TLabel;
18 | procedure ExplorerComboBox1AutoCompleteUpdateList(Sender: TObject;
19 | const CurrentEditContents: string; EnumList: TStringList;
20 | var Handled: Boolean);
21 | private
22 | { Private declarations }
23 | public
24 | { Public declarations }
25 | end;
26 |
27 | var
28 | Form1: TForm1;
29 |
30 | implementation
31 |
32 | {$R *.DFM}
33 |
34 | procedure TForm1.ExplorerComboBox1AutoCompleteUpdateList(Sender: TObject;
35 | const CurrentEditContents: string; EnumList: TStringList;
36 | var Handled: Boolean);
37 | begin
38 | if CheckBoxCustom.Checked then
39 | begin
40 | Handled := True; // We are handling the autocomplete list
41 | EnumList.Add('C:\');
42 | EnumList.Add('C:\Windows');
43 | EnumList.Add('C:\Windows\System');
44 | EnumList.Add('C:\WinNT');
45 | EnumList.Add('C:\WinNT\System32');
46 | EnumList.Add('D:\');
47 | EnumList.Add('Control Panel');
48 | EnumList.Add('Recycle Bin');
49 | end;
50 | end;
51 |
52 | end.
53 |
--------------------------------------------------------------------------------
/Demos/Backgnd Menu/BkGndMenuProject.dpr:
--------------------------------------------------------------------------------
1 | program BkGndMenuProject;
2 |
3 | uses
4 | Forms,
5 | Unit1 in 'Unit1.pas' {Form1};
6 |
7 | {$R *.res}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.CreateForm(TForm1, Form1);
12 | Application.Run;
13 | end.
14 |
--------------------------------------------------------------------------------
/Demos/CheckBoxes/CheckBoxes.dpr:
--------------------------------------------------------------------------------
1 | program CheckBoxes;
2 |
3 | uses
4 | Forms,
5 | Unit1 in 'Unit1.pas' {Form1};
6 |
7 | {$R *.res}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.CreateForm(TForm1, Form1);
12 | Application.Run;
13 | end.
14 |
15 |
--------------------------------------------------------------------------------
/Demos/CheckBoxes/CheckBoxes.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/CheckBoxes/CheckBoxes.res
--------------------------------------------------------------------------------
/Demos/CheckBoxes/TEST.TXT:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/CheckBoxes/TEST.TXT
--------------------------------------------------------------------------------
/Demos/Custom Columns/CustomColumnProject.dpr:
--------------------------------------------------------------------------------
1 | program CustomColumnProject;
2 |
3 | uses
4 | Forms,
5 | Unit1 in 'Unit1.pas' {Form1};
6 |
7 | {$R *.res}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.CreateForm(TForm1, Form1);
12 | Application.Run;
13 | end.
14 |
--------------------------------------------------------------------------------
/Demos/Custom Columns/CustomColumnProject.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/Custom Columns/CustomColumnProject.res
--------------------------------------------------------------------------------
/Demos/Custom Columns/Unit1.dfm:
--------------------------------------------------------------------------------
1 | object Form1: TForm1
2 | Left = 316
3 | Top = 110
4 | Width = 667
5 | Height = 480
6 | Caption = 'Form1'
7 | Color = clBtnFace
8 | Font.Charset = DEFAULT_CHARSET
9 | Font.Color = clWindowText
10 | Font.Height = -11
11 | Font.Name = 'MS Sans Serif'
12 | Font.Style = []
13 | OldCreateOrder = False
14 | PixelsPerInch = 96
15 | TextHeight = 13
16 | object VirtualExplorerEasyListview1: TVirtualExplorerEasyListview
17 | Left = 0
18 | Top = 0
19 | Width = 651
20 | Height = 444
21 | Active = True
22 | Align = alClient
23 | CompressedFile.Color = clBlue
24 | CompressedFile.Font.Charset = DEFAULT_CHARSET
25 | CompressedFile.Font.Color = clWindowText
26 | CompressedFile.Font.Height = -11
27 | CompressedFile.Font.Name = 'MS Shell Dlg 2'
28 | CompressedFile.Font.Style = []
29 | DefaultSortColumn = 0
30 | EditManager.Font.Charset = DEFAULT_CHARSET
31 | EditManager.Font.Color = clWindowText
32 | EditManager.Font.Height = -11
33 | EditManager.Font.Name = 'MS Shell Dlg 2'
34 | EditManager.Font.Style = []
35 | EncryptedFile.Color = clGreen
36 | EncryptedFile.Font.Charset = DEFAULT_CHARSET
37 | EncryptedFile.Font.Color = clWindowText
38 | EncryptedFile.Font.Height = -11
39 | EncryptedFile.Font.Name = 'MS Shell Dlg 2'
40 | EncryptedFile.Font.Style = []
41 | FileSizeFormat = vfsfDefault
42 | Font.Charset = DEFAULT_CHARSET
43 | Font.Color = clWindowText
44 | Font.Height = -11
45 | Font.Name = 'MS Shell Dlg 2'
46 | Font.Style = []
47 | Grouped = False
48 | GroupingColumn = 0
49 | GroupFont.Charset = DEFAULT_CHARSET
50 | GroupFont.Color = clWindowText
51 | GroupFont.Height = -11
52 | GroupFont.Name = 'MS Shell Dlg 2'
53 | GroupFont.Style = []
54 | Header.Font.Charset = DEFAULT_CHARSET
55 | Header.Font.Color = clWindowText
56 | Header.Font.Height = -11
57 | Header.Font.Name = 'MS Shell Dlg 2'
58 | Header.Font.Style = []
59 | Header.Visible = True
60 | Options = [eloBrowseExecuteFolder, eloBrowseExecuteFolderShortcut, eloBrowseExecuteZipFolder, eloExecuteOnDblClick, eloThreadedEnumeration, eloThreadedImages, eloThreadedDetails]
61 | PaintInfoGroup.MarginBottom.CaptionIndent = 4
62 | PaintInfoGroup.MarginTop.Visible = False
63 | ParentFont = False
64 | Sort.Algorithm = esaQuickSort
65 | Sort.AutoSort = True
66 | TabOrder = 0
67 | ThumbsManager.StorageFilename = 'Thumbnails.album'
68 | View = elsReport
69 | OnCustomColumnAdd = VirtualExplorerEasyListview1CustomColumnAdd
70 | OnCustomColumnCompare = VirtualExplorerEasyListview1CustomColumnCompare
71 | OnCustomColumnGetCaption = VirtualExplorerEasyListview1CustomColumnGetCaption
72 | end
73 | end
74 |
--------------------------------------------------------------------------------
/Demos/Custom Columns/Unit1.pas:
--------------------------------------------------------------------------------
1 | unit Unit1;
2 |
3 | interface
4 |
5 | uses
6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 | Dialogs, MPCommonObjects, EasyListview, VirtualExplorerEasyListview, Menus,
8 | MPShellUtilities;
9 |
10 | type
11 | TForm1 = class(TForm)
12 | VirtualExplorerEasyListview1: TVirtualExplorerEasyListview;
13 | procedure VirtualExplorerEasyListview1CustomColumnAdd(
14 | Sender: TCustomVirtualExplorerEasyListview;
15 | AddColumnProc: TELVAddColumnProc);
16 | procedure VirtualExplorerEasyListview1CustomColumnCompare(
17 | Sender: TCustomVirtualExplorerEasyListview; Column: TExplorerColumn;
18 | Group: TEasyGroup; Item1, Item2: TExplorerItem;
19 | var CompareResult: Integer);
20 | procedure VirtualExplorerEasyListview1CustomColumnGetCaption(
21 | Sender: TCustomVirtualExplorerEasyListview; Column: TExplorerColumn;
22 | Item: TExplorerItem; var Caption: string);
23 | private
24 | { Private declarations }
25 | public
26 | { Public declarations }
27 | end;
28 |
29 | var
30 | Form1: TForm1;
31 |
32 | implementation
33 |
34 | {$R *.dfm}
35 |
36 | procedure TForm1.VirtualExplorerEasyListview1CustomColumnAdd(
37 | Sender: TCustomVirtualExplorerEasyListview;
38 | AddColumnProc: TELVAddColumnProc);
39 | var
40 | Column: TExplorerColumn;
41 | begin
42 | Column := AddColumnProc;
43 | Column.Caption := 'Custom Column';
44 | Column.Width := 120;
45 | Column.Alignment := taRightJustify;
46 | Column.Visible := True;
47 | end;
48 |
49 | procedure TForm1.VirtualExplorerEasyListview1CustomColumnCompare(
50 | Sender: TCustomVirtualExplorerEasyListview; Column: TExplorerColumn;
51 | Group: TEasyGroup; Item1, Item2: TExplorerItem;
52 | var CompareResult: Integer);
53 | begin
54 | // sort on something silly like the item pointers
55 | CompareResult := Integer( Item1) - Integer( Item2);
56 | if Column.SortDirection = esdDescending then
57 | CompareResult := -CompareResult;
58 | end;
59 |
60 | procedure TForm1.VirtualExplorerEasyListview1CustomColumnGetCaption(
61 | Sender: TCustomVirtualExplorerEasyListview; Column: TExplorerColumn;
62 | Item: TExplorerItem; var Caption: string);
63 | begin
64 | // Something silly and unique
65 | Caption := IntToStr( Integer(Item))
66 | end;
67 |
68 | end.
69 |
--------------------------------------------------------------------------------
/Demos/Custom Sorting/CustomSortProject.dpr:
--------------------------------------------------------------------------------
1 | program CustomSortProject;
2 |
3 | uses
4 | Forms,
5 | Unit1 in 'Unit1.pas' {Form1};
6 |
7 | {$R *.res}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.CreateForm(TForm1, Form1);
12 | Application.Run;
13 | end.
14 |
--------------------------------------------------------------------------------
/Demos/Custom Sorting/Unit1.dfm:
--------------------------------------------------------------------------------
1 | object Form1: TForm1
2 | Left = 293
3 | Top = 197
4 | Width = 553
5 | Height = 409
6 | Caption = 'Form1'
7 | Color = clBtnFace
8 | Font.Charset = DEFAULT_CHARSET
9 | Font.Color = clWindowText
10 | Font.Height = -11
11 | Font.Name = 'MS Sans Serif'
12 | Font.Style = []
13 | OldCreateOrder = False
14 | PixelsPerInch = 96
15 | TextHeight = 13
16 | object Panel1: TPanel
17 | Left = 0
18 | Top = 41
19 | Width = 545
20 | Height = 334
21 | Align = alClient
22 | BevelOuter = bvNone
23 | TabOrder = 0
24 | object VirtualExplorerTreeview1: TVirtualExplorerTreeview
25 | Left = 0
26 | Top = 0
27 | Width = 200
28 | Height = 315
29 | Active = True
30 | Align = alLeft
31 | ColumnDetails = cdUser
32 | DefaultNodeHeight = 17
33 | DragHeight = 250
34 | DragWidth = 150
35 | FileSizeFormat = fsfExplorer
36 | FileSort = fsFileType
37 | Header.AutoSizeIndex = 0
38 | Header.Font.Charset = DEFAULT_CHARSET
39 | Header.Font.Color = clWindowText
40 | Header.Font.Height = -11
41 | Header.Font.Name = 'MS Sans Serif'
42 | Header.Font.Style = []
43 | Header.MainColumn = -1
44 | Header.Options = [hoColumnResize, hoDrag]
45 | HintMode = hmHint
46 | ParentColor = False
47 | RootFolder = rfDesktop
48 | TabOrder = 0
49 | TabStop = True
50 | TreeOptions.AutoOptions = [toAutoScroll]
51 | TreeOptions.MiscOptions = [toAcceptOLEDrop, toEditable, toToggleOnDblClick]
52 | TreeOptions.PaintOptions = [toShowButtons, toShowTreeLines, toUseBlendedImages, toGhostedIfUnfocused]
53 | TreeOptions.SelectionOptions = [toLevelSelectConstraint]
54 | TreeOptions.VETShellOptions = [toContextMenus]
55 | TreeOptions.VETSyncOptions = [toCollapseTargetFirst, toExpandTarget, toSelectTarget]
56 | TreeOptions.VETMiscOptions = [toBrowseExecuteFolder, toBrowseExecuteFolderShortcut, toBrowseExecuteZipFolder, toChangeNotifierThread, toRemoveContextMenuShortCut]
57 | TreeOptions.VETImageOptions = [toImages, toThreadedImages, toMarkCutAndCopy]
58 | OnFocusChanged = VirtualExplorerTreeview1FocusChanged
59 | Columns = <>
60 | end
61 | object VirtualExplorerEasyListview1: TVirtualExplorerEasyListview
62 | Left = 200
63 | Top = 0
64 | Width = 345
65 | Height = 315
66 | Align = alClient
67 | DefaultSortColumn = 0
68 | DefaultSortDir = esdNone
69 | Font.Charset = DEFAULT_CHARSET
70 | Font.Color = clWindowText
71 | Font.Height = -11
72 | Font.Name = 'MS Shell Dlg 2'
73 | Font.Style = []
74 | Grouped = False
75 | GroupingColumn = 0
76 | GroupFont.Charset = DEFAULT_CHARSET
77 | GroupFont.Color = clWindowText
78 | GroupFont.Height = -11
79 | GroupFont.Name = 'MS Shell Dlg 2'
80 | GroupFont.Style = []
81 | Header.Font.Charset = DEFAULT_CHARSET
82 | Header.Font.Color = clWindowText
83 | Header.Font.Height = -11
84 | Header.Font.Name = 'MS Shell Dlg 2'
85 | Header.Font.Style = []
86 | Header.Visible = True
87 | PaintInfoGroup.MarginBottom.CaptionIndent = 4
88 | ParentFont = False
89 | ShowInactive = False
90 | TabOrder = 1
91 | ThumbsManager.StorageFilename = 'Thumbnails.album'
92 | View = elsIcon
93 | OnEnumFolder = VirtualExplorerEasyListview1EnumFolder
94 | OnItemCompare = VirtualExplorerEasyListview1ItemCompare
95 | end
96 | object StatusBar1: TStatusBar
97 | Left = 0
98 | Top = 315
99 | Width = 545
100 | Height = 19
101 | Panels = <
102 | item
103 | Width = 50
104 | end>
105 | end
106 | end
107 | object Panel2: TPanel
108 | Left = 0
109 | Top = 0
110 | Width = 545
111 | Height = 41
112 | Align = alTop
113 | TabOrder = 1
114 | object CheckBox1: TCheckBox
115 | Left = 16
116 | Top = 8
117 | Width = 281
118 | Height = 17
119 | Caption = 'Assign OnItemCompare'
120 | TabOrder = 0
121 | OnClick = CheckBox1Click
122 | end
123 | object ComboBox1: TComboBox
124 | Left = 320
125 | Top = 8
126 | Width = 145
127 | Height = 21
128 | Style = csDropDownList
129 | ItemHeight = 13
130 | ItemIndex = 0
131 | TabOrder = 1
132 | Text = 'Icon'
133 | OnChange = ComboBox1Change
134 | Items.Strings = (
135 | 'Icon'
136 | 'SmallIcon'
137 | 'List'
138 | 'Details'
139 | 'Thumbnails'
140 | 'Tile')
141 | end
142 | end
143 | end
144 |
--------------------------------------------------------------------------------
/Demos/Custom Sorting/Unit1.pas:
--------------------------------------------------------------------------------
1 | unit Unit1;
2 |
3 | //
4 | // Note there is no linking between the Tree and the List. We
5 | // have to use the EnumFolder to make sure that the header is correct
6 | // in Details mode, just don't allow any of the items.
7 | //
8 | // The items are filled using FindFirst/FindNext enumeration and sorted
9 | // via the OnItemCompare method. Note the calls to Begin/EndUpdate. These
10 | // are critical to make sure that the OnItemCompare event is not called when
11 | // the new item is created and before the Namespace parameter is assigned.
12 | //
13 |
14 | interface
15 |
16 | uses
17 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
18 | Dialogs, MPCommonObjects, EasyListview, VirtualExplorerEasyListview,
19 | VirtualTrees, ShlObj, VirtualExplorerTree, MPShellUtilities,
20 | StdCtrls, ExtCtrls, ComCtrls;
21 |
22 | type
23 | TForm1 = class(TForm)
24 | Panel1: TPanel;
25 | VirtualExplorerTreeview1: TVirtualExplorerTreeview;
26 | VirtualExplorerEasyListview1: TVirtualExplorerEasyListview;
27 | Panel2: TPanel;
28 | CheckBox1: TCheckBox;
29 | ComboBox1: TComboBox;
30 | StatusBar1: TStatusBar;
31 | procedure VirtualExplorerTreeview1FocusChanged(
32 | Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex);
33 | function VirtualExplorerEasyListview1ItemCompare(
34 | Sender: TCustomEasyListview; Column: TEasyColumn; Group: TEasyGroup;
35 | Item1, Item2: TEasyItem; var DoDefault: Boolean): Integer;
36 | procedure CheckBox1Click(Sender: TObject);
37 | procedure ComboBox1Change(Sender: TObject);
38 | procedure VirtualExplorerEasyListview1EnumFolder(
39 | Sender: TCustomVirtualExplorerEasyListview; Namespace: TNamespace;
40 | var AllowAsChild: Boolean);
41 | private
42 | function GetCurrentDirectory: String;
43 | private
44 | { Private-Deklarationen }
45 | property CurrentDirectory: String read GetCurrentDirectory;
46 | function AddFiles(ADirectory: String): Integer;
47 | procedure AddFile(AFile: String);
48 | public
49 | { Public-Deklarationen }
50 | end;
51 |
52 | var
53 | Form1: TForm1;
54 |
55 | implementation
56 |
57 | {$R *.dfm}
58 |
59 | procedure TForm1.AddFile(AFile: String);
60 | var
61 | NS: TNamespace;
62 | PIDL: PItemIDList;
63 | oItem: TExplorerItem;
64 | begin
65 | PIDL := PathToPIDL(AFile);
66 | if Assigned(PIDL) then
67 | begin
68 | NS := TNamespace.Create(PIDL, nil);
69 | // This Crashes because oItem.Namespace is not already assigned
70 | oItem := VirtualExplorerEasyListview1.Groups[0].Items.AddCustom(TExplorerItem) as TExplorerItem;
71 | oItem.Namespace := NS;
72 | end;
73 | end;
74 |
75 | function TForm1.AddFiles(ADirectory: String): Integer;
76 | var
77 | SR: TSearchRec;
78 | begin
79 | Result := 0;
80 | ADirectory := IncludeTrailingPathDelimiter(ADirectory);
81 | VirtualExplorerEasyListview1.BeginUpdate;
82 | try
83 | if SysUtils.FindFirst(ADirectory + '*.*', faAnyFile, SR) = 0 then
84 | begin
85 | repeat
86 | if ((SR.Attr and (faDirectory or faVolumeID)) = 0) and (SR.Name<>'.') and (SR.Name<>'..') then
87 | begin
88 | AddFile(ADirectory + SR.Name);
89 | Inc(Result)
90 | end;
91 | until SysUtils.FindNext(SR)<>0;
92 | SysUtils.FindClose(SR);
93 | end;
94 | finally
95 | VirtualExplorerEasyListview1.EndUpdate;
96 | end
97 | end;
98 |
99 | procedure TForm1.VirtualExplorerTreeview1FocusChanged(
100 | Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex);
101 | begin
102 | VirtualExplorerEasyListview1.Clear;
103 | VirtualExplorerEasyListview1.Rebuild;
104 | StatusBar1.Panels[0].Text := 'File Objects Found = ' + IntToStr(AddFiles(CurrentDirectory))
105 | end;
106 |
107 | function TForm1.VirtualExplorerEasyListview1ItemCompare(
108 | Sender: TCustomEasyListview; Column: TEasyColumn; Group: TEasyGroup;
109 | Item1, Item2: TEasyItem; var DoDefault: Boolean): Integer;
110 | begin
111 | // Not sure if this is Unicode enabled
112 | Result := CompareText(Item1.Captions[Column.Index], Item2.Captions[Column.Index]);
113 | if Column.SortDirection = esdDescending then
114 | Result := -Result
115 | end;
116 |
117 | procedure TForm1.CheckBox1Click(Sender: TObject);
118 | begin
119 | if CheckBox1.Checked then
120 | VirtualExplorerEasyListview1.OnItemCompare := VirtualExplorerEasyListview1ItemCompare
121 | else
122 | VirtualExplorerEasyListview1.OnItemCompare := nil;
123 | VirtualExplorerEasyListview1.Clear;
124 | AddFiles(CurrentDirectory);
125 | end;
126 |
127 | function TForm1.GetCurrentDirectory: String;
128 | var
129 | NS: TNamespace;
130 | begin
131 | if VirtualExplorerTreeview1.ValidateNamespace(VirtualExplorerTreeview1.GetFirstSelected, NS) then
132 | Result := NS.NameParseAddress
133 | else
134 | Result := '';
135 | end;
136 |
137 | procedure TForm1.ComboBox1Change(Sender: TObject);
138 | begin
139 | VirtualExplorerEasyListview1.View := TEasyListStyle(ComboBox1.ItemIndex)
140 | end;
141 |
142 | procedure TForm1.VirtualExplorerEasyListview1EnumFolder(
143 | Sender: TCustomVirtualExplorerEasyListview; Namespace: TNamespace;
144 | var AllowAsChild: Boolean);
145 | begin
146 | AllowAsChild := False
147 | end;
148 |
149 | end.
150 |
--------------------------------------------------------------------------------
/Demos/DOS Shell CommandLine/DOSCommandLineProject.dpr:
--------------------------------------------------------------------------------
1 | program DOSCommandLineProject;
2 |
3 | uses
4 | Forms,
5 | Unit1 in 'Unit1.pas' {Form1};
6 |
7 | {$R *.res}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.CreateForm(TForm1, Form1);
12 | Application.Run;
13 | end.
14 |
--------------------------------------------------------------------------------
/Demos/DOS Shell CommandLine/DOSCommandLineProject.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/DOS Shell CommandLine/DOSCommandLineProject.res
--------------------------------------------------------------------------------
/Demos/DOS Shell CommandLine/Unit1.dfm:
--------------------------------------------------------------------------------
1 | object Form1: TForm1
2 | Left = 275
3 | Top = 125
4 | Caption = 'Form1'
5 | ClientHeight = 442
6 | ClientWidth = 680
7 | Color = clBtnFace
8 | Font.Charset = DEFAULT_CHARSET
9 | Font.Color = clWindowText
10 | Font.Height = -11
11 | Font.Name = 'MS Shell Dlg 2'
12 | Font.Style = []
13 | OldCreateOrder = False
14 | OnCloseQuery = FormCloseQuery
15 | OnDestroy = FormDestroy
16 | PixelsPerInch = 96
17 | TextHeight = 13
18 | object Panel1: TPanel
19 | Left = 0
20 | Top = 388
21 | Width = 680
22 | Height = 54
23 | Align = alBottom
24 | TabOrder = 0
25 | DesignSize = (
26 | 680
27 | 54)
28 | object Label1: TLabel
29 | Left = 128
30 | Top = 8
31 | Width = 427
32 | Height = 39
33 | Anchors = [akLeft, akTop, akRight, akBottom]
34 | Caption =
35 | 'The handing of the output of the command shell is not fully impl' +
36 | 'emented. This demo just shows how to use the TVirtualCommandLin' +
37 | 'eRedirector. To run other service applications use TVirtualRedi' +
38 | 'rector'
39 | WordWrap = True
40 | end
41 | object Button1: TButton
42 | Left = 8
43 | Top = 8
44 | Width = 105
45 | Height = 25
46 | Caption = 'Run DOS Service...'
47 | TabOrder = 0
48 | OnClick = Button1Click
49 | end
50 | end
51 | object Panel2: TPanel
52 | Left = 0
53 | Top = 0
54 | Width = 680
55 | Height = 388
56 | Align = alClient
57 | Caption = 'Panel2'
58 | TabOrder = 1
59 | object RichEdit1: TRichEdit
60 | Left = 1
61 | Top = 1
62 | Width = 678
63 | Height = 386
64 | Align = alClient
65 | Color = clBlack
66 | Font.Charset = ANSI_CHARSET
67 | Font.Color = clWhite
68 | Font.Height = -13
69 | Font.Name = 'Courier New'
70 | Font.Style = []
71 | ParentFont = False
72 | ScrollBars = ssBoth
73 | TabOrder = 0
74 | Zoom = 100
75 | OnKeyDown = RichEdit1KeyDown
76 | end
77 | end
78 | object VirtualCommandLineRedirector1: TVirtualCommandLineRedirector
79 | OnChildProcessEnd = VirtualCommandLineRedirector1ChildProcessEnd
80 | OnErrorInput = VirtualCommandLineRedirector1ErrorInput
81 | OnInput = VirtualCommandLineRedirector1Input
82 | Left = 40
83 | Top = 48
84 | end
85 | end
86 |
--------------------------------------------------------------------------------
/Demos/DOS Shell CommandLine/Unit1.pas:
--------------------------------------------------------------------------------
1 | unit Unit1;
2 |
3 | interface
4 |
5 | uses
6 | Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
7 | Dialogs, StdCtrls, VirtualRedirector, ComCtrls, RichEdit, ExtCtrls,
8 | MPCommonObjects;
9 |
10 | type
11 | TForm1 = class(TForm)
12 | Panel1: TPanel;
13 | Panel2: TPanel;
14 | RichEdit1: TRichEdit;
15 | Button1: TButton;
16 | Label1: TLabel;
17 | VirtualCommandLineRedirector1: TVirtualCommandLineRedirector;
18 | procedure Button1Click(Sender: TObject);
19 | procedure RichEdit1KeyDown(Sender: TObject; var Key: Word;
20 | Shift: TShiftState);
21 | procedure VirtualCommandLineRedirector1ChildProcessEnd(
22 | Sender: TObject);
23 | procedure VirtualCommandLineRedirector1ErrorInput(Sender: TObject;
24 | NewInput: AnsiString);
25 | procedure VirtualCommandLineRedirector1Input(Sender: TObject;
26 | NewInput: AnsiString);
27 | procedure FormDestroy(Sender: TObject);
28 | procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
29 | private
30 | { Private declarations }
31 | public
32 | { Public declarations }
33 | Data: string;
34 | NewCommand: Boolean;
35 | end;
36 |
37 | var
38 | Form1: TForm1;
39 |
40 | implementation
41 |
42 | {$R *.dfm}
43 |
44 | procedure TForm1.Button1Click(Sender: TObject);
45 | var
46 | Path: string;
47 | begin
48 | SetLength(Path, MAX_PATH);
49 | GetSystemDirectory(PChar(Path), MAX_PATH);
50 | SetLength(Path, StrLen(PChar(Path)));
51 | Path := ExcludeTrailingBackslash(Path);
52 | Path := Path + '\cmd.exe';
53 | VirtualCommandLineRedirector1.Run(Path, ExtractFileDrive(Path) + '\');
54 | end;
55 |
56 | procedure TForm1.RichEdit1KeyDown(Sender: TObject; var Key: Word;
57 | Shift: TShiftState);
58 | var
59 | Command: string;
60 | CharRange: TCharRange;
61 | Buffer: string;
62 | begin
63 | if Key = VK_RETURN then
64 | begin
65 | SendMessage(RichEdit1.Handle, WM_SETREDRAW, 0, 0);
66 | try
67 | // Select any new data past the Data string we have stored
68 | CharRange.cpMin := Length(Data);
69 | CharRange.cpMax := SendMessage(RichEdit1.Handle, WM_GETTEXTLENGTH, 0, 0);
70 | SendMessage(RichEdit1.Handle, EM_EXSETSEL, 0, LPARAM(@CharRange));
71 |
72 | // Copy the selected text to the bufffer
73 | SetLength(Buffer, CharRange.cpMax - CharRange.cpMin); // The null is automaticlly added
74 | FillChar(PChar(@Buffer[1])^, Length(Buffer), #0);
75 | SendMessage(RichEdit1.Handle, EM_GETSELTEXT, 0, LPARAM(@Buffer[1]));
76 |
77 | // Unselect the copied string
78 | CharRange.cpMin := SendMessage(RichEdit1.Handle, WM_GETTEXTLENGTH, 0, 0);
79 | CharRange.cpMax := CharRange.cpMin;
80 | SendMessage(RichEdit1.Handle, EM_EXSETSEL, 0, LPARAM(@CharRange));
81 |
82 | NewCommand := True;
83 | VirtualCommandLineRedirector1.Write(Buffer);
84 | finally
85 | SendMessage(RichEdit1.Handle, WM_SETREDRAW, 1, 0);
86 | end;
87 | Command := Buffer;
88 | Key := 0;
89 | end;
90 | end;
91 |
92 | procedure TForm1.VirtualCommandLineRedirector1ChildProcessEnd(
93 | Sender: TObject);
94 | begin
95 | beep;
96 | end;
97 |
98 | procedure TForm1.VirtualCommandLineRedirector1ErrorInput(Sender: TObject;
99 | NewInput: AnsiString);
100 | begin
101 | beep;
102 | end;
103 |
104 | procedure TForm1.VirtualCommandLineRedirector1Input(Sender: TObject;
105 | NewInput: AnsiString);
106 | var
107 | s: string;
108 | CharRange: TCharRange;
109 | OldScrollPos: Integer;
110 | Index: Integer;
111 | begin
112 | if NewInput <> '' then
113 | begin
114 | s := NewInput;
115 | // A new Command was issued
116 | if NewCommand then
117 | begin
118 | // The Command Shell sends a mystery #10 before the data for some reason
119 | // we need to strip it off
120 | Index := 1;
121 | while (Index < Length(s)) and ((s[Index] = #10) or (s[Index] = #13)) do
122 | begin
123 | s[Index] := ' ';
124 | Inc(Index);
125 | end;
126 | if Index > 1 then
127 | begin
128 | // If we found a line feed or carrage return then slide the rest of the
129 | // characters down and shorten the string. This should not cause a new
130 | // string to be allocated so it is very efficient
131 | MoveMemory(PChar(@s[1]), PChar(@s[Index]), Length(s) - (Index - 1));
132 | SetLength(s, Length(s) - (Index - 1))
133 | end
134 | end;
135 | Data := Data + VirtualCommandLineRedirector1.FormatData(PChar(s));
136 | RichEdit1.SetFocus;
137 | OldScrollPos := GetScrollPos(RichEdit1.Handle, SB_VERT);
138 | SendMessage(RichEdit1.Handle, WM_SETREDRAW, 0, 0);
139 | SendMessage(RichEdit1.Handle, WM_SETTEXT, 0, LPARAM(PChar(Data)));
140 | SendMessage(RichEdit1.Handle, WM_VSCROLL, WPARAM(MakeLong(SB_THUMBPOSITION, OldScrollPos)), 0);
141 | SendMessage(RichEdit1.Handle, WM_SETREDRAW, 1, 0);
142 | InvalidateRect(RichEdit1.Handle, nil, False);
143 | UpdateWindow(RichEdit1.Handle);
144 | CharRange.cpMin := Length(Data);
145 | CharRange.cpMax := Length(Data);
146 | SendMessage(RichEdit1.Handle, EM_EXSETSEL, 0, LPARAM(@CharRange));
147 | SendMessage(RichEdit1.Handle, EM_SCROLLCARET, 0, 0);
148 |
149 | // Scroll down until we stop scrolling
150 | // In XP and Win2k the EM_SCROLLCARET does not do anything!
151 | while LoWord(SendMessage(RichEdit1.Handle, EM_SCROLL, SB_LINEDOWN, 0)) > 0 do
152 | end;
153 | NewCommand := False;
154 | end;
155 |
156 | procedure TForm1.FormDestroy(Sender: TObject);
157 | begin
158 | // NOTE: Calling Kill forces the Process to die using TerminateProcess.
159 | // In Win9x this usually leaves the 16 bit wrapper "WinOldApp" running
160 | // in the task list. If this process is orphaned Win9x will not shut
161 | // down. It is best to use the correct input to the child process to
162 | // cause it to terminate itself
163 | //
164 | VirtualCommandLineRedirector1.Kill;
165 | end;
166 |
167 | procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
168 | begin
169 | CanClose := not VirtualCommandLineRedirector1.Running;
170 | if not CanClose then
171 | begin
172 | ShowMessage('Please type "Exit" at the command line to exit shell');
173 | end
174 | end;
175 |
176 | end.
177 |
--------------------------------------------------------------------------------
/Demos/Explorer CheckBoxes/ExplorerCheckboxes.dpr:
--------------------------------------------------------------------------------
1 | program ExplorerCheckboxes;
2 |
3 |
4 |
5 |
6 |
7 | uses
8 | Forms,
9 | Unit1 in 'Unit1.pas' {Form1},
10 | InfoForm in 'InfoForm.pas' {FormInfo},
11 | VirtualCheckboxesSynchronizer in 'VirtualCheckboxesSynchronizer.pas';
12 |
13 | {$R *.res}
14 |
15 | begin
16 | Application.Initialize;
17 | Application.CreateForm(TForm1, Form1);
18 | Application.Run;
19 | end.
20 |
21 |
--------------------------------------------------------------------------------
/Demos/Explorer CheckBoxes/ExplorerCheckboxes.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/Explorer CheckBoxes/ExplorerCheckboxes.res
--------------------------------------------------------------------------------
/Demos/Explorer CheckBoxes/Tree.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/Explorer CheckBoxes/Tree.dat
--------------------------------------------------------------------------------
/Demos/File Search/FileSearch.dpr:
--------------------------------------------------------------------------------
1 | program FileSearch;
2 |
3 | uses
4 | Forms,
5 | uWndSearchFiles in 'uWndSearchFiles.pas' {WndSearchFiles};
6 |
7 | {$R *.res}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.CreateForm(TWndSearchFiles, WndSearchFiles);
12 | Application.Run;
13 | end.
14 |
--------------------------------------------------------------------------------
/Demos/File Search/ReadMe.txt:
--------------------------------------------------------------------------------
1 | This simple file search demo demonstrates how files from
2 | different folders can be shown in a TVirtualExplorerListview
3 |
4 | The demo makes use of TFindFile, an excellent freeware component
5 | created by Kambiz R. Khojasteh. TFindFile can be found in FindFile.pas.
6 | See http://www.delphiarea.com for further information and updates.
7 |
8 | The TFindFile component is dynamically created and need no separate
9 | package installation.
10 |
11 | Known issues
12 | ------------
13 | - The context menu handling is in beta stage
14 | - Status in Statusbar is not affected when files are deleted/created by another app
15 |
--------------------------------------------------------------------------------
/Demos/FileSearch/FileSearchProject.dpr:
--------------------------------------------------------------------------------
1 | program FileSearchProject;
2 |
3 | uses
4 | Forms,
5 | Unit1 in 'Unit1.pas' {Form1};
6 |
7 | {$R *.res}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.CreateForm(TForm1, Form1);
12 | Application.Run;
13 | end.
14 |
--------------------------------------------------------------------------------
/Demos/FolderSize/FolderSizeDemo.dpr:
--------------------------------------------------------------------------------
1 | program FolderSizeDemo;
2 |
3 | uses
4 | Forms,
5 | Unit1 in 'Unit1.pas' {Form1};
6 |
7 | {$R *.RES}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.CreateForm(TForm1, Form1);
12 | Application.Run;
13 | end.
14 |
--------------------------------------------------------------------------------
/Demos/FolderSize/FolderSizeDemo.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/FolderSize/FolderSizeDemo.res
--------------------------------------------------------------------------------
/Demos/FolderSize/Unit1.dfm:
--------------------------------------------------------------------------------
1 | object Form1: TForm1
2 | Left = 281
3 | Top = 212
4 | Caption = 'Form1'
5 | ClientHeight = 425
6 | ClientWidth = 633
7 | Color = clBtnFace
8 | Font.Charset = DEFAULT_CHARSET
9 | Font.Color = clWindowText
10 | Font.Height = -11
11 | Font.Name = 'MS Sans Serif'
12 | Font.Style = []
13 | OldCreateOrder = False
14 | OnCreate = FormCreate
15 | PixelsPerInch = 96
16 | TextHeight = 13
17 | object VirtualExplorerTree1: TVirtualExplorerTree
18 | Left = 0
19 | Top = 129
20 | Width = 633
21 | Height = 296
22 | Active = True
23 | Align = alClient
24 | ButtonFillMode = fmShaded
25 | ColumnDetails = cdUser
26 | ColumnMenuItemCount = 8
27 | DefaultNodeHeight = 17
28 | DragHeight = 250
29 | DragWidth = 150
30 | DrawSelectionMode = smBlendedRectangle
31 | FileSizeFormat = fsfExplorer
32 | FileSort = fsFileType
33 | Header.AutoSizeIndex = -1
34 | Header.Font.Charset = DEFAULT_CHARSET
35 | Header.Font.Color = clWindowText
36 | Header.Font.Height = -11
37 | Header.Font.Name = 'MS Shell Dlg 2'
38 | Header.Font.Style = []
39 | Header.Options = [hoColumnResize, hoDrag, hoVisible]
40 | HintAnimation = hatNone
41 | HintMode = hmHint
42 | ParentColor = False
43 | RootFolder = rfDesktop
44 | TabOrder = 0
45 | TabStop = True
46 | TreeOptions.PaintOptions = [toShowButtons, toShowHorzGridLines, toShowRoot, toShowTreeLines, toThemeAware, toUseBlendedImages]
47 | TreeOptions.VETShellOptions = [toRightAlignSizeColumn, toContextMenus]
48 | TreeOptions.VETSyncOptions = [toCollapseTargetFirst, toExpandTarget, toSelectTarget]
49 | TreeOptions.VETMiscOptions = [toExecuteOnDblClk]
50 | TreeOptions.VETImageOptions = [toImages]
51 | OnBeforeCellPaint = VirtualExplorerTree1BeforeCellPaint
52 | OnExpanded = VirtualExplorerTree1Expanded
53 | OnGetVETText = VirtualExplorerTree1GetVETText
54 | Columns = <
55 | item
56 | Position = 0
57 | Width = 300
58 | ColumnDetails = cdFileName
59 | WideText = 'Folder'
60 | end
61 | item
62 | Position = 1
63 | Width = 200
64 | ColumnDetails = cdCustom
65 | WideText = 'Relative Size'
66 | end>
67 | end
68 | object Panel1: TPanel
69 | Left = 0
70 | Top = 0
71 | Width = 633
72 | Height = 33
73 | Align = alTop
74 | BevelInner = bvSpace
75 | BevelOuter = bvLowered
76 | TabOrder = 1
77 | object Label1: TLabel
78 | Left = 221
79 | Top = 9
80 | Width = 55
81 | Height = 13
82 | Caption = 'Size Format'
83 | end
84 | object Bevel1: TBevel
85 | Left = 368
86 | Top = 1
87 | Width = 9
88 | Height = 31
89 | Shape = bsLeftLine
90 | end
91 | object CheckBox1: TCheckBox
92 | Left = 8
93 | Top = 8
94 | Width = 113
95 | Height = 17
96 | Caption = 'Recurse Folders'
97 | TabOrder = 0
98 | OnClick = CheckBox1Click
99 | end
100 | object ComboBox1: TComboBox
101 | Left = 280
102 | Top = 6
103 | Width = 81
104 | Height = 21
105 | Style = csDropDownList
106 | TabOrder = 1
107 | OnClick = ComboBox1Click
108 | Items.Strings = (
109 | 'Byte'
110 | 'KB'
111 | 'MB'
112 | 'GB'
113 | 'Auto')
114 | end
115 | object CheckBox2: TCheckBox
116 | Left = 120
117 | Top = 8
118 | Width = 89
119 | Height = 17
120 | Caption = 'Gradient Bars'
121 | Checked = True
122 | State = cbChecked
123 | TabOrder = 2
124 | OnClick = CheckBox2Click
125 | end
126 | object CheckBox3: TCheckBox
127 | Left = 376
128 | Top = 8
129 | Width = 121
130 | Height = 17
131 | Caption = 'Read Floppy Drives'
132 | TabOrder = 3
133 | end
134 | object CheckBox4: TCheckBox
135 | Left = 496
136 | Top = 8
137 | Width = 137
138 | Height = 17
139 | Caption = 'Read Removable Drives'
140 | TabOrder = 4
141 | end
142 | end
143 | object Memo1: TMemo
144 | Left = 0
145 | Top = 33
146 | Width = 633
147 | Height = 96
148 | Align = alTop
149 | BorderStyle = bsNone
150 | Color = clInfoBk
151 | Lines.Strings = (
152 |
153 | 'The demo shows folder sizes and presents them in a separate colu' +
154 | 'mn as a bar chart.'
155 |
156 | 'The bar represents the corresponding percentage of the total amo' +
157 | 'unt of bytes in the tree branch.'
158 | 'If the size is 0 no bar is shown at all.'
159 |
160 | 'The caption format is controlled by the "Size Format" combobox, ' +
161 | 'the sizes can be shown as bytes, KB, MB, GB or it can '
162 | 'be automatically formated.'
163 |
164 | 'When "Recurse Folder" is checked the size will be the total of t' +
165 | 'he directory plus its subdirs; otherwise it will represent only '
166 | 'the immediate files in the directory.'
167 |
168 | 'When "Gradient Bars" are not used the bars are painted in red if' +
169 | ' they are 100% full.'
170 | ''
171 | 'This demo shows you how to:'
172 |
173 | ' - Create a custom column, setting its caption and custom drawin' +
174 | 'g it.'
175 | ' - Work with file sizes, and formating them to a string.'
176 | ' - Get the size of a particular directory.'
177 |
178 | ' - Get the total size of a tree branch, and set a percentage for' +
179 | ' each of the children.')
180 | ReadOnly = True
181 | ScrollBars = ssVertical
182 | TabOrder = 2
183 | end
184 | end
185 |
--------------------------------------------------------------------------------
/Demos/KnownFolders/KnwonwFoldersProject.dpr:
--------------------------------------------------------------------------------
1 | program KnwonwFoldersProject;
2 |
3 | uses
4 | Forms,
5 | Unit1 in 'Unit1.pas' {Form1};
6 |
7 | {$R *.res}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.CreateForm(TForm1, Form1);
12 | Application.Run;
13 | end.
14 |
--------------------------------------------------------------------------------
/Demos/KnownFolders/Unit1.dfm:
--------------------------------------------------------------------------------
1 | object Form1: TForm1
2 | Left = 417
3 | Top = 155
4 | Caption = 'Form1'
5 | ClientHeight = 531
6 | ClientWidth = 718
7 | Color = clBtnFace
8 | Font.Charset = DEFAULT_CHARSET
9 | Font.Color = clWindowText
10 | Font.Height = -11
11 | Font.Name = 'MS Sans Serif'
12 | Font.Style = []
13 | OldCreateOrder = False
14 | OnCreate = FormCreate
15 | DesignSize = (
16 | 718
17 | 531)
18 | PixelsPerInch = 96
19 | TextHeight = 13
20 | object Label1: TLabel
21 | Left = 296
22 | Top = 56
23 | Width = 85
24 | Height = 13
25 | Caption = 'Alias (Virtual) Path'
26 | end
27 | object Label2: TLabel
28 | Left = 296
29 | Top = 112
30 | Width = 41
31 | Height = 13
32 | Caption = 'File Path'
33 | end
34 | object Image1: TImage
35 | Left = 328
36 | Top = 176
37 | Width = 385
38 | Height = 345
39 | Transparent = True
40 | end
41 | object ListBox1: TListBox
42 | Left = 0
43 | Top = 0
44 | Width = 265
45 | Height = 531
46 | Align = alLeft
47 | ItemHeight = 13
48 | Items.Strings = (
49 | 'FOLDERID_AddNewPrograms'
50 | 'FOLDERID_AdminTools'
51 | 'FOLDERID_AppUpdates'
52 | 'FOLDERID_CDBurning'
53 | 'FOLDERID_ChangeRemovePrograms'
54 | 'FOLDERID_CommonAdminTools'
55 | 'FOLDERID_CommonOEMLinks'
56 | 'FOLDERID_CommonPrograms'
57 | 'FOLDERID_CommonStartMenu'
58 | 'FOLDERID_CommonStartup'
59 | 'FOLDERID_CommonTemplates'
60 | 'FOLDERID_ComputerFolder'
61 | 'FOLDERID_ConflictFolder'
62 | 'FOLDERID_ConnectionsFolder'
63 | 'FOLDERID_Contacts'
64 | 'FOLDERID_ControlPanelFolder'
65 | 'FOLDERID_Cookies'
66 | 'FOLDERID_Desktop'
67 | 'FOLDERID_DeviceMetadataStore'
68 | 'FOLDERID_DocumentsLibrary'
69 | 'FOLDERID_Downloads'
70 | 'FOLDERID_Favorites'
71 | 'FOLDERID_Fonts'
72 | 'FOLDERID_Games'
73 | 'FOLDERID_GameTasks'
74 | 'FOLDERID_History'
75 | 'FOLDERID_HomeGroup'
76 | 'FOLDERID_ImplicitAppShortcuts'
77 | 'FOLDERID_InternetCache'
78 | 'FOLDERID_InternetFolder'
79 | 'FOLDERID_Libraries'
80 | 'FOLDERID_Links'
81 | 'FOLDERID_LocalAppData'
82 | 'FOLDERID_LocalAppDataLow'
83 | 'FOLDERID_LocalizedResourcesDir'
84 | 'FOLDERID_Music'
85 | 'FOLDERID_MusicLibrary'
86 | 'FOLDERID_NetworkFolder'
87 | 'FOLDERID_OriginalImages'
88 | 'FOLDERID_PhotoAlbums'
89 | 'FOLDERID_PicturesLibrary'
90 | 'FOLDERID_Pictures'
91 | 'FOLDERID_Playlists'
92 | 'FOLDERID_PrintersFolder'
93 | 'FOLDERID_PrintHood'
94 | 'FOLDERID_Profile'
95 | 'FOLDERID_ProgramData'
96 | 'FOLDERID_ProgramFiles'
97 | 'FOLDERID_ProgramFilesX64'
98 | 'FOLDERID_ProgramFilesX86'
99 | 'FOLDERID_ProgramFilesCommon'
100 | 'FOLDERID_ProgramFilesCommonX64'
101 | 'FOLDERID_ProgramFilesCommonX86'
102 | 'FOLDERID_Programs'
103 | 'FOLDERID_Public'
104 | 'FOLDERID_PublicDesktop'
105 | 'FOLDERID_PublicDocuments'
106 | 'FOLDERID_PublicDownloads'
107 | 'FOLDERID_PublicGameTasks'
108 | 'FOLDERID_PublicLibraries'
109 | 'FOLDERID_PublicMusic'
110 | 'FOLDERID_PublicPictures'
111 | 'FOLDERID_PublicRingtones'
112 | 'FOLDERID_PublicVideos'
113 | 'FOLDERID_QuickLaunch'
114 | 'FOLDERID_Recent'
115 | 'FOLDERID_RecordedTV'
116 | 'FOLDERID_RecordedTVLibrary'
117 | 'FOLDERID_RecycleBinFolder'
118 | 'FOLDERID_ResourceDir'
119 | 'FOLDERID_Ringtones'
120 | 'FOLDERID_RoamingAppData'
121 | 'FOLDERID_SampleMusic'
122 | 'FOLDERID_SamplePictures'
123 | 'FOLDERID_SamplePlaylists'
124 | 'FOLDERID_SampleVideos'
125 | 'FOLDERID_SavedGames'
126 | 'FOLDERID_SavedSearches'
127 | 'FOLDERID_SEARCH_CSC'
128 | 'FOLDERID_SEARCH_MAPI'
129 | 'FOLDERID_SearchHome'
130 | 'FOLDERID_SendTo'
131 | 'FOLDERID_SidebarDefaultParts'
132 | 'FOLDERID_SidebarParts'
133 | 'FOLDERID_StartMenu'
134 | 'FOLDERID_Startup'
135 | 'FOLDERID_SyncManagerFolder'
136 | 'FOLDERID_SyncResultsFolder'
137 | 'FOLDERID_SyncSetupFolder'
138 | 'FOLDERID_System'
139 | 'FOLDERID_SystemX86'
140 | 'FOLDERID_Templates'
141 | 'FOLDERID_TreeProperties'
142 | 'FOLDERID_UserPinned'
143 | 'FOLDERID_UserProfiles'
144 | 'FOLDERID_UserProgramFiles'
145 | 'FOLDERID_UserProgramFilesCommon'
146 | 'FOLDERID_UsersFiles'
147 | 'FOLDERID_UsersLibraries'
148 | 'FOLDERID_Videos'
149 | 'FOLDERID_VideosLibrary'
150 | 'FOLDERID_Windows')
151 | TabOrder = 0
152 | OnClick = ListBox1Click
153 | end
154 | object CheckBoxExists: TCheckBox
155 | Left = 296
156 | Top = 24
157 | Width = 73
158 | Height = 17
159 | Caption = 'Exists'
160 | TabOrder = 1
161 | end
162 | object EditAliasPath: TEdit
163 | Left = 328
164 | Top = 80
165 | Width = 372
166 | Height = 21
167 | Anchors = [akLeft, akTop, akRight]
168 | TabOrder = 2
169 | Text = 'EditAliasPath'
170 | end
171 | object EditFilePath: TEdit
172 | Left = 328
173 | Top = 136
174 | Width = 372
175 | Height = 21
176 | Anchors = [akLeft, akTop, akRight]
177 | TabOrder = 3
178 | Text = 'EditFilePath'
179 | end
180 | end
181 |
--------------------------------------------------------------------------------
/Demos/Namespace Browser/NamespaceBrowserProject.dpr:
--------------------------------------------------------------------------------
1 | program NamespaceBrowserProject;
2 |
3 | uses
4 | Forms,
5 | Unit1 in 'Unit1.pas' {Form1};
6 |
7 | {$R *.res}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.CreateForm(TForm1, Form1);
12 | Application.Run;
13 | end.
14 |
--------------------------------------------------------------------------------
/Demos/Namespace Browser/NamespaceBrowserProject.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/Namespace Browser/NamespaceBrowserProject.res
--------------------------------------------------------------------------------
/Demos/Overview/Unit1.dfm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/Overview/Unit1.dfm
--------------------------------------------------------------------------------
/Demos/Overview/VET.dpr:
--------------------------------------------------------------------------------
1 | // JCL_DEBUG_EXPERT_GENERATEJDBG OFF
2 | // JCL_DEBUG_EXPERT_INSERTJDBG OFF
3 | // JCL_DEBUG_EXPERT_DELETEMAPFILE OFF
4 | program VET;
5 |
6 | uses
7 | Forms,
8 | Unit1 in 'Unit1.pas' {Form1},
9 | InfoForm in 'InfoForm.pas' {Form2};
10 |
11 | {$R *.RES}
12 |
13 | begin
14 | Application.Initialize;
15 | Application.CreateForm(TForm1, Form1);
16 | Application.CreateForm(TFormInfo, FormInfo);
17 | Application.Run;
18 | end.
19 |
--------------------------------------------------------------------------------
/Demos/Overview/VET.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/Overview/VET.res
--------------------------------------------------------------------------------
/Demos/Overview/VETBkgnd.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/Overview/VETBkgnd.bmp
--------------------------------------------------------------------------------
/Demos/PrevDirNode EasyListview/EasyListviewPrevFolderProject.dpr:
--------------------------------------------------------------------------------
1 | program EasyListviewPrevFolderProject;
2 |
3 | uses
4 | Forms,
5 | Unit1 in 'Unit1.pas' {Form1};
6 |
7 | {$R *.res}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.CreateForm(TForm1, Form1);
12 | Application.Run;
13 | end.
14 |
--------------------------------------------------------------------------------
/Demos/PrevDirNode EasyListview/Unit1.dfm:
--------------------------------------------------------------------------------
1 | object Form1: TForm1
2 | Left = 100
3 | Top = 89
4 | Caption = 'Form1'
5 | ClientHeight = 349
6 | ClientWidth = 741
7 | Color = clBtnFace
8 | Font.Charset = DEFAULT_CHARSET
9 | Font.Color = clWindowText
10 | Font.Height = -11
11 | Font.Name = 'Tahoma'
12 | Font.Style = []
13 | OldCreateOrder = False
14 | PixelsPerInch = 96
15 | TextHeight = 13
16 | object LV: TVirtualExplorerEasyListview
17 | Left = 0
18 | Top = 56
19 | Width = 741
20 | Height = 250
21 | Active = True
22 | Align = alClient
23 | BevelKind = bkTile
24 | CompressedFile.Color = clRed
25 | CompressedFile.Font.Charset = DEFAULT_CHARSET
26 | CompressedFile.Font.Color = clWindowText
27 | CompressedFile.Font.Height = -11
28 | CompressedFile.Font.Name = 'MS Shell Dlg 2'
29 | CompressedFile.Font.Style = []
30 | DefaultSortColumn = 0
31 | EditManager.Font.Charset = DEFAULT_CHARSET
32 | EditManager.Font.Color = clWindowText
33 | EditManager.Font.Height = -11
34 | EditManager.Font.Name = 'MS Shell Dlg 2'
35 | EditManager.Font.Style = []
36 | EncryptedFile.Color = 32832
37 | EncryptedFile.Font.Charset = DEFAULT_CHARSET
38 | EncryptedFile.Font.Color = clWindowText
39 | EncryptedFile.Font.Height = -11
40 | EncryptedFile.Font.Name = 'MS Shell Dlg 2'
41 | EncryptedFile.Font.Style = []
42 | FileSizeFormat = vfsfDefault
43 | Font.Charset = DEFAULT_CHARSET
44 | Font.Color = clWindowText
45 | Font.Height = -11
46 | Font.Name = 'MS Shell Dlg 2'
47 | Font.Style = []
48 | Grouped = False
49 | GroupingColumn = 0
50 | GroupFont.Charset = DEFAULT_CHARSET
51 | GroupFont.Color = clWindowText
52 | GroupFont.Height = -11
53 | GroupFont.Name = 'MS Shell Dlg 2'
54 | GroupFont.Style = []
55 | Header.Font.Charset = DEFAULT_CHARSET
56 | Header.Font.Color = clWindowText
57 | Header.Font.Height = -11
58 | Header.Font.Name = 'MS Shell Dlg 2'
59 | Header.Font.Style = []
60 | PaintInfoGroup.MarginBottom.CaptionIndent = 4
61 | PaintInfoGroup.MarginTop.Visible = False
62 | ParentFont = False
63 | Sort.Algorithm = esaQuickSort
64 | Sort.AutoSort = True
65 | TabOrder = 0
66 | ThumbsManager.StorageFilename = 'Thumbnails.album'
67 | OnItemCompare = LVItemCompare
68 | OnItemGetCaption = LVItemGetCaption
69 | OnRootRebuild = LVRootRebuild
70 | end
71 | object Panel1: TPanel
72 | Left = 0
73 | Top = 0
74 | Width = 741
75 | Height = 56
76 | Align = alTop
77 | TabOrder = 1
78 | object ComboBox1: TComboBox
79 | Left = 16
80 | Top = 18
81 | Width = 145
82 | Height = 21
83 | Style = csDropDownList
84 | ItemIndex = 0
85 | TabOrder = 0
86 | Text = 'elsIcon'
87 | OnClick = ComboBox1Click
88 | Items.Strings = (
89 | 'elsIcon'
90 | 'elsSmallIcon'
91 | 'elsList'
92 | 'elsReport'
93 | 'elsThumbnail'
94 | 'elsTile'
95 | 'elsFilmStrip'
96 | 'elsGrid')
97 | end
98 | end
99 | object Memo1: TMemo
100 | Left = 0
101 | Top = 306
102 | Width = 741
103 | Height = 43
104 | Align = alBottom
105 | Color = clInfoBk
106 | Lines.Strings = (
107 |
108 | 'This demo shows you how to add the [..] dir to the VirtualExplor' +
109 | 'erEasyListview')
110 | ReadOnly = True
111 | TabOrder = 2
112 | end
113 | end
114 |
--------------------------------------------------------------------------------
/Demos/PrevDirNode EasyListview/Unit1.pas:
--------------------------------------------------------------------------------
1 | unit Unit1;
2 |
3 | interface
4 |
5 | uses
6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 | Dialogs, StdCtrls, MPCommonObjects, EasyListview, VirtualExplorerEasyListview,
8 | MPShellUtilities, SHlObj, ExtCtrls;
9 |
10 | type
11 | TForm1 = class(TForm)
12 | LV: TVirtualExplorerEasyListview;
13 | Panel1: TPanel;
14 | ComboBox1: TComboBox;
15 | Memo1: TMemo;
16 | function LVItemCompare(Sender: TCustomEasyListview; Column: TEasyColumn;
17 | Group: TEasyGroup; Item1, Item2: TEasyItem;
18 | var DoDefault: Boolean): Integer;
19 | procedure LVRootRebuild(Sender: TCustomVirtualExplorerEasyListview);
20 | procedure LVItemGetCaption(Sender: TCustomEasyListview; Item: TEasyItem;
21 | Column: Integer; var Caption: string);
22 | procedure ComboBox1Click(Sender: TObject);
23 | private
24 | { Private declarations }
25 | public
26 | { Public declarations }
27 | FZombieItem: TExplorerItem;
28 | end;
29 |
30 | var
31 | Form1: TForm1;
32 |
33 | implementation
34 |
35 | {$R *.dfm}
36 |
37 | //WMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWM
38 | { Helpers }
39 |
40 | function GetPrevNamespace(NS: TNamespace): TNamespace;
41 | var
42 | PIDL: PItemIDList;
43 | begin
44 | Result := nil;
45 | if Assigned(NS) and (not NS.IsDesktop) then begin
46 | PIDL := PIDLMgr.CopyPIDL(NS.AbsolutePIDL);
47 | PIDLMgr.StripLastID(PIDL);
48 | Result := TNamespace.Create(PIDL, nil);
49 | Result.FreePIDLOnDestroy := True; // TNamespace will destroy the PIDL
50 | end;
51 | end;
52 |
53 | //WMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWM
54 | { LV }
55 |
56 | procedure TForm1.ComboBox1Click(Sender: TObject);
57 | begin
58 | LV.View := TEasyListStyle(Combobox1.ItemIndex);
59 | end;
60 |
61 | function TForm1.LVItemCompare(Sender: TCustomEasyListview; Column: TEasyColumn;
62 | Group: TEasyGroup; Item1, Item2: TEasyItem; var DoDefault: Boolean): Integer;
63 | // Place the ZombieItem on the top of the listview
64 | begin
65 | Result := 0;
66 | if Assigned(FZombieItem) then
67 | if FZombieItem = Item1 then begin
68 | Result := -1;
69 | DoDefault := False;
70 | end else
71 | if FZombieItem = Item2 then begin
72 | Result := 1;
73 | DoDefault := False;
74 | end;
75 | end;
76 |
77 | procedure TForm1.LVItemGetCaption(Sender: TCustomEasyListview; Item: TEasyItem;
78 | Column: Integer; var Caption: string);
79 | // Change the caption of the ZombieItem
80 | begin
81 | if Assigned(FZombieItem) and (FZombieItem = Item) and (Column = 0) then
82 | Caption := '[..]';
83 | end;
84 |
85 | procedure TForm1.LVRootRebuild(Sender: TCustomVirtualExplorerEasyListview);
86 | var
87 | NS: TNamespace;
88 | begin
89 | FZombieItem := nil;
90 | // First we should create the Namespace that will represent the '..' dir.
91 | // Simply get the parent level namespace
92 | NS := GetPrevNamespace(LV.RootFolderNamespace);
93 | if Assigned(NS) then begin
94 | // Now create the ZombieNode and sort the tree
95 | FZombieItem := LV.AddCustomItem(nil, NS, True);
96 | LV.SortList;
97 | end;
98 | end;
99 |
100 | end.
101 |
--------------------------------------------------------------------------------
/Demos/PrevDirNode/Project1.dpr:
--------------------------------------------------------------------------------
1 | program Project1;
2 |
3 | uses
4 | Forms,
5 | Unit1 in 'Unit1.pas' {Form1};
6 |
7 | {$R *.res}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.CreateForm(TForm1, Form1);
12 | Application.Run;
13 | end.
14 |
--------------------------------------------------------------------------------
/Demos/PrevDirNode/Project1.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/PrevDirNode/Project1.res
--------------------------------------------------------------------------------
/Demos/PrevDirNode/Unit1.dfm:
--------------------------------------------------------------------------------
1 | object Form1: TForm1
2 | Left = 252
3 | Top = 138
4 | Width = 696
5 | Height = 480
6 | Caption = 'Form1'
7 | Color = clBtnFace
8 | Font.Charset = DEFAULT_CHARSET
9 | Font.Color = clWindowText
10 | Font.Height = -11
11 | Font.Name = 'MS Shell Dlg 2'
12 | Font.Style = []
13 | OldCreateOrder = False
14 | OnShow = FormShow
15 | PixelsPerInch = 96
16 | TextHeight = 13
17 | object Splitter1: TSplitter
18 | Left = 200
19 | Top = 41
20 | Height = 362
21 | end
22 | object VET: TVirtualExplorerTreeview
23 | Left = 0
24 | Top = 41
25 | Width = 200
26 | Height = 362
27 | Active = False
28 | Align = alLeft
29 | ColumnDetails = cdUser
30 | DefaultNodeHeight = 17
31 | DragHeight = 250
32 | DragWidth = 150
33 | FileSizeFormat = fsfExplorer
34 | FileSort = fsFileType
35 | Header.AutoSizeIndex = 0
36 | Header.Font.Charset = DEFAULT_CHARSET
37 | Header.Font.Color = clWindowText
38 | Header.Font.Height = -11
39 | Header.Font.Name = 'MS Shell Dlg 2'
40 | Header.Font.Style = []
41 | Header.MainColumn = -1
42 | Header.Options = [hoColumnResize, hoDrag]
43 | HintMode = hmHint
44 | ParentColor = False
45 | RootFolder = rfDesktop
46 | TabOrder = 0
47 | TabStop = True
48 | TreeOptions.AutoOptions = [toAutoScroll]
49 | TreeOptions.MiscOptions = [toAcceptOLEDrop, toEditable, toToggleOnDblClick]
50 | TreeOptions.PaintOptions = [toShowButtons, toShowTreeLines, toUseBlendedImages, toGhostedIfUnfocused]
51 | TreeOptions.SelectionOptions = [toMultiSelect, toSiblingSelectConstraint]
52 | TreeOptions.VETShellOptions = [toContextMenus]
53 | TreeOptions.VETSyncOptions = [toCollapseTargetFirst, toExpandTarget, toSelectTarget]
54 | TreeOptions.VETMiscOptions = [toBrowseExecuteFolder, toBrowseExecuteFolderShortcut, toChangeNotifierThread, toRemoveContextMenuShortCut]
55 | TreeOptions.VETImageOptions = [toImages, toThreadedImages, toMarkCutAndCopy]
56 | Columns = <>
57 | end
58 | object Memo1: TMemo
59 | Left = 0
60 | Top = 403
61 | Width = 688
62 | Height = 43
63 | Align = alBottom
64 | Color = clInfoBk
65 | Lines.Strings = (
66 |
67 | 'This demo shows you how to add the [..] dir to the VirtualExplor' +
68 | 'erListviewEx')
69 | ReadOnly = True
70 | TabOrder = 1
71 | end
72 | object Panel1: TPanel
73 | Left = 0
74 | Top = 0
75 | Width = 688
76 | Height = 41
77 | Align = alTop
78 | BevelInner = bvRaised
79 | BevelOuter = bvLowered
80 | TabOrder = 2
81 | object ComboBox1: TComboBox
82 | Left = 8
83 | Top = 8
84 | Width = 145
85 | Height = 21
86 | Style = csDropDownList
87 | ItemHeight = 13
88 | TabOrder = 0
89 | OnClick = ComboBox1Click
90 | Items.Strings = (
91 | 'vsxIcon'
92 | 'vsxSmallIcon'
93 | 'vsxList'
94 | 'vsxReport'
95 | 'vsxThumbs')
96 | end
97 | end
98 | end
99 |
--------------------------------------------------------------------------------
/Demos/PrevDirNode/Unit1.pas:
--------------------------------------------------------------------------------
1 | unit Unit1;
2 |
3 | interface
4 |
5 | uses
6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 | Dialogs, StdCtrls, ExtCtrls, VirtualExplorerTree, VirtualTrees,
8 | VirtualExplorerListviewEx, VirtualShellUtilities, SHlObj,
9 | VirtualShellNotifier;
10 |
11 | type
12 | TMyLV = class(TVirtualExplorerListviewEx)
13 | protected
14 | FZombieNode: PVirtualNode;
15 | procedure AddZombie;
16 | procedure RemoveZombie;
17 | function DoCompare(Node1: PVirtualNode; Node2: PVirtualNode; Column: TColumnIndex): Integer; override;
18 | procedure DoGetText(Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var Text: string); override;
19 | procedure DoRootChanging(const NewRoot: TRootFolder; Namespace: TNamespace; var Allow: Boolean); override;
20 | procedure DoRootRebuild; override;
21 | procedure ReReadAndRefreshNode(Node: PVirtualNode; SortNode: Boolean); override;
22 | public
23 | constructor Create(AOwner: TComponent); override;
24 | destructor Destroy; override;
25 | end;
26 |
27 | TForm1 = class(TForm)
28 | VET: TVirtualExplorerTreeview;
29 | Splitter1: TSplitter;
30 | Memo1: TMemo;
31 | Panel1: TPanel;
32 | ComboBox1: TComboBox;
33 | procedure FormShow(Sender: TObject);
34 | procedure ComboBox1Click(Sender: TObject);
35 | private
36 | { Private declarations }
37 | public
38 | { Public declarations }
39 | MyLV: TMyLV;
40 | end;
41 |
42 | var
43 | Form1: TForm1;
44 |
45 | implementation
46 |
47 | {$R *.dfm}
48 |
49 | function GetPrevNamespace(NS: TNamespace): TNamespace;
50 | var
51 | PIDL: PItemIDList;
52 | begin
53 | Result := nil;
54 | if Assigned(NS) and (not NS.IsDesktop) then begin
55 | PIDL := PIDLMgr.CopyPIDL(NS.AbsolutePIDL);
56 | PIDLMgr.StripLastID(PIDL);
57 | Result := TNamespace.Create(PIDL, nil);
58 | Result.FreePIDLOnDestroy := True; // the namespace will destroy the PIDL
59 | end;
60 | end;
61 |
62 | //WMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWM
63 | { Form }
64 |
65 | procedure TForm1.FormShow(Sender: TObject);
66 | begin
67 | MyLV := TMyLV.Create(Self);
68 | MyLV.Parent := Self;
69 | MyLV.Align := alClient;
70 | MyLV.VirtualExplorerTreeview := VET;
71 | VET.VirtualExplorerListview := MyLV;
72 |
73 | // It's a good practice to activate the tree and the listview when the form
74 | // is about to be showed.
75 | VET.Active := True;
76 | MyLV.Active := True;
77 | ComboBox1.ItemIndex := 4;
78 | end;
79 |
80 | procedure TForm1.ComboBox1Click(Sender: TObject);
81 | begin
82 | MyLV.ViewStyle := TViewStyleEx(Combobox1.ItemIndex);
83 | end;
84 |
85 | //WMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWM
86 | { TMyLV }
87 |
88 | procedure TMyLV.AddZombie;
89 | var
90 | NS: TNamespace;
91 | begin
92 | // First we should create the Namespace that will represent the '..' dir.
93 | // Simply get the parent level namespace
94 | NS := GetPrevNamespace(RootFolderNamespace);
95 | if Assigned(NS) then begin
96 | // Now create the ZombieNode and sort the tree
97 | FZombieNode := AddCustomNode(RootNode, NS, False);
98 | SortTree(Header.SortColumn, Header.SortDirection);
99 | end;
100 | end;
101 |
102 | constructor TMyLV.Create(AOwner: TComponent);
103 | begin
104 | inherited;
105 | // We are going to use Custom sorting to sort the ZombieNode to the top of
106 | // file list.
107 | TreeOptions.VETMiscOptions := TreeOptions.VETMiscOptions + [toUserSort];
108 | end;
109 |
110 | destructor TMyLV.Destroy;
111 | begin
112 | FZombieNode := nil;
113 | inherited;
114 | end;
115 |
116 | function TMyLV.DoCompare(Node1, Node2: PVirtualNode;
117 | Column: TColumnIndex): Integer;
118 | // DoCompareNodes is called every time the tree/listview must sort the items.
119 | // There is one minor difference between VT and VET in the use of this event,
120 | // in VET you should activate toUserSort in the TreeOptions.VETMiscOptions to
121 | // to make it work.
122 | var
123 | NS1, NS2: TNamespace;
124 | begin
125 | Result := 0;
126 | if ValidateNamespace(Node1, NS1) and ValidateNamespace(Node2, NS2) then begin
127 | Result := SortHelper.CompareIDSort(Column, NS1, NS2);
128 | // Sort the '..' dir to be the first in the list
129 | if Assigned(FZombieNode) then
130 | if Header.SortDirection = sdAscending then begin
131 | if Node1 = FZombieNode then Result := -1
132 | else if Node2 = FZombieNode then Result := 1;
133 | end
134 | else begin
135 | if Node1 = FZombieNode then Result := 1
136 | else if Node2 = FZombieNode then Result := -1;
137 | end;
138 | end;
139 | end;
140 |
141 | procedure TMyLV.DoGetText(Node: PVirtualNode; Column: TColumnIndex;
142 | TextType: TVSTTextType; var Text: string);
143 | // The change the ZombieNode caption to '[..]'
144 | begin
145 | inherited;
146 | if Assigned(FZombieNode) and (Node = FZombieNode) then
147 | if Column < 1 then
148 | Text := '[..]'
149 | else
150 | Text := '';
151 | end;
152 |
153 | procedure TMyLV.DoRootChanging(const NewRoot: TRootFolder;
154 | Namespace: TNamespace; var Allow: Boolean);
155 | begin
156 | // DoRootChanging is called when the directory is about to change
157 | // Use this event to clear the ZombieNode
158 | inherited;
159 | FZombieNode := nil;
160 | end;
161 |
162 | procedure TMyLV.DoRootRebuild;
163 | begin
164 | // DoRootRebuild is called every time the actual directory must be rebuilt.
165 | // For example when the directory changes or F5 is pressed.
166 | // We can use this event to create the ZombieNode representing the '..' dir.
167 | inherited;
168 | AddZombie;
169 | end;
170 |
171 | procedure TMyLV.RemoveZombie;
172 | begin
173 | DeleteNode(FZombieNode, True);
174 | FZombieNode := nil;
175 | end;
176 |
177 | procedure TMyLV.ReReadAndRefreshNode(Node: PVirtualNode; SortNode: Boolean);
178 | begin
179 | RemoveZombie;
180 | inherited;
181 | AddZombie;
182 | end;
183 |
184 | end.
185 |
--------------------------------------------------------------------------------
/Demos/Readme.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 | Welcome to the VirtualShellTools Demo Folder!
4 |
5 | These are the Demo supplied with VirtualShellTools. If you want to compile all the demos at once then use the *.bpg file supplied in this folder.
6 | VirtualShellToolsDemos.bpg - All the Demos having to do with VirtualShellTools
7 |
8 | In order to build the package open the *.bpg file with Delphi. Answer yes to *all* the annoying quesions about recreating the resource file. Go to
9 |
10 | View -> ProjectManager
11 |
12 | You should see all the demos in the Listview. Use the dropdown list and select the first item in the list. Delphi will open the project. Close the project. All you need is the original ProjectManager but with the first demo selected in the dropdown list. Now go to
13 |
14 | Project -> Compile All Projects
15 |
16 | Delphi will start churning away compiling all the projects in the list.
17 |
18 | Go to the Demos folder and start seeing what VirtualShellTools can do for you.
19 |
20 | Jim Kueneman 7.20.2002
--------------------------------------------------------------------------------
/Demos/SendTo Menu/Back.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/SendTo Menu/Back.bmp
--------------------------------------------------------------------------------
/Demos/SendTo Menu/Fwd.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/SendTo Menu/Fwd.bmp
--------------------------------------------------------------------------------
/Demos/SendTo Menu/SendToMenuProject.dpr:
--------------------------------------------------------------------------------
1 | program SendToMenuProject;
2 |
3 | uses
4 | Forms,
5 | Unit1 in 'Unit1.pas' {Form1};
6 |
7 | {$R *.res}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.CreateForm(TForm1, Form1);
12 | Application.Run;
13 | end.
14 |
--------------------------------------------------------------------------------
/Demos/SendTo Menu/SendToMenuProject.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/SendTo Menu/SendToMenuProject.res
--------------------------------------------------------------------------------
/Demos/SendTo Menu/Unit1.pas:
--------------------------------------------------------------------------------
1 | unit Unit1;
2 |
3 | interface
4 |
5 | uses
6 | Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
7 | Dialogs, Menus, ImgList, ActiveX, ComCtrls, ToolWin,
8 | VirtualTrees, VirtualExplorerTree, MPShellUtilities,
9 | VirtualSendToMenu;
10 |
11 | type
12 | TForm1 = class(TForm)
13 | VirtualSendToMenu1: TVirtualSendToMenu;
14 | VirtualExplorerListview1: TVirtualExplorerListview;
15 | ToolBar1: TToolBar;
16 | ToolButton1: TToolButton;
17 | ToolButton2: TToolButton;
18 | ToolButton3: TToolButton;
19 | ImageList1: TImageList;
20 | procedure VirtualExplorerListview1Change(Sender: TBaseVirtualTree;
21 | Node: PVirtualNode);
22 | procedure VirtualExplorerListview1RootChange(
23 | Sender: TCustomVirtualExplorerTree);
24 | procedure ToolButton3Click(Sender: TObject);
25 | procedure ToolButton2Click(Sender: TObject);
26 | procedure VirtualSendToMenu1SendToEvent(Sender: TVirtualSendToMenu;
27 | SendToTarget: TNamespace; var SourceData: IDataObject);
28 | procedure FormShow(Sender: TObject);
29 | private
30 | { Private declarations }
31 | public
32 | { Public declarations }
33 | end;
34 |
35 | var
36 | Form1: TForm1;
37 |
38 | implementation
39 |
40 | {$R *.dfm}
41 |
42 | procedure TForm1.FormShow(Sender: TObject);
43 | begin
44 | VirtualExplorerListview1.Active := True;
45 | end;
46 |
47 | procedure TForm1.VirtualExplorerListview1Change(Sender: TBaseVirtualTree;
48 | Node: PVirtualNode);
49 | var
50 | NS: TNamespace;
51 | begin
52 | if VirtualExplorerListview1.ValidateNamespace(Node, NS) then
53 | begin
54 | ToolButton1.Enabled := NS.CanCopy;
55 | ToolButton3.Enabled := NS.Folder;
56 | ToolButton2.Enabled := not VirtualExplorerListview1.RootFolderNamespace.IsDesktop
57 | end
58 | end;
59 |
60 | procedure TForm1.VirtualExplorerListview1RootChange(Sender: TCustomVirtualExplorerTree);
61 | var
62 | NS: TNamespace;
63 | begin
64 | ToolButton2.Enabled := not VirtualExplorerListview1.RootFolderNamespace.IsDesktop;
65 | if VirtualExplorerListview1.ValidateNamespace(VirtualExplorerListview1.GetFirstSelected, NS) then
66 | begin
67 | ToolButton1.Enabled := NS.CanCopy;
68 | ToolButton3.Enabled := NS.Folder;
69 | end else
70 | begin
71 | ToolButton1.Enabled := False;
72 | ToolButton3.Enabled := False;
73 | end
74 | end;
75 |
76 | procedure TForm1.ToolButton3Click(Sender: TObject);
77 | begin
78 | VirtualExplorerListview1.BrowseToNextLevel;
79 | end;
80 |
81 | procedure TForm1.ToolButton2Click(Sender: TObject);
82 | begin
83 | VirtualExplorerListview1.BrowseToPrevLevel;
84 | end;
85 |
86 | procedure TForm1.VirtualSendToMenu1SendToEvent(Sender: TVirtualSendToMenu;
87 | SendToTarget: TNamespace; var SourceData: IDataObject);
88 | begin
89 | SourceData := VirtualExplorerListview1.SelectedToDataObject;
90 | end;
91 |
92 | end.
93 |
--------------------------------------------------------------------------------
/Demos/SendTo Menu/folder.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/SendTo Menu/folder.bmp
--------------------------------------------------------------------------------
/Demos/Shell History/ShellHistory.dpr:
--------------------------------------------------------------------------------
1 | program ShellHistory;
2 |
3 | uses
4 | Forms,
5 | Unit1 in 'Unit1.pas' {Form1};
6 |
7 | {$R *.res}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.CreateForm(TForm1, Form1);
12 | Application.Run;
13 | end.
14 |
--------------------------------------------------------------------------------
/Demos/Shell History/ShellHistory.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/Shell History/ShellHistory.res
--------------------------------------------------------------------------------
/Demos/Shell Link Shortcuts/ShellLinkShortcuts.dpr:
--------------------------------------------------------------------------------
1 | program ShellLinkShortcuts;
2 |
3 | uses
4 | Forms,
5 | Unit1 in 'Unit1.pas' {Form1};
6 |
7 | {$R *.RES}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.CreateForm(TForm1, Form1);
12 | Application.Run;
13 | end.
14 |
--------------------------------------------------------------------------------
/Demos/Shell Link Shortcuts/ShellLinkShortcuts.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/Shell Link Shortcuts/ShellLinkShortcuts.res
--------------------------------------------------------------------------------
/Demos/Shell Notify/ShellNotify.dpr:
--------------------------------------------------------------------------------
1 | program ShellNotify;
2 |
3 | uses
4 | Forms,
5 | Unit1 in 'Unit1.pas' {Form1},
6 | Unit2 in 'Unit2.pas' {Form2};
7 |
8 | {$R *.RES}
9 |
10 | begin
11 | Application.Initialize;
12 | Application.CreateForm(TForm1, Form1);
13 | Application.CreateForm(TForm2, Form2);
14 | Application.Run;
15 | end.
16 |
--------------------------------------------------------------------------------
/Demos/Shell Notify/ShellNotify.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/Shell Notify/ShellNotify.res
--------------------------------------------------------------------------------
/Demos/Shell Notify/Unit1.dfm:
--------------------------------------------------------------------------------
1 | object Form1: TForm1
2 | Left = 183
3 | Top = 76
4 | Width = 568
5 | Height = 413
6 | Caption = 'Form1'
7 | Color = clBtnFace
8 | Font.Charset = DEFAULT_CHARSET
9 | Font.Color = clWindowText
10 | Font.Height = -11
11 | Font.Name = 'MS Sans Serif'
12 | Font.Style = []
13 | OldCreateOrder = False
14 | ShowHint = True
15 | OnCreate = FormCreate
16 | DesignSize = (
17 | 552
18 | 377)
19 | PixelsPerInch = 96
20 | TextHeight = 13
21 | object Label1: TLabel
22 | Left = 10
23 | Top = 68
24 | Width = 111
25 | Height = 13
26 | Caption = 'Choose a Target Folder'
27 | end
28 | object Label2: TLabel
29 | Left = 16
30 | Top = 8
31 | Width = 116
32 | Height = 26
33 | Caption = 'Click button or right click on the Listview'
34 | WordWrap = True
35 | end
36 | object RadioGroupFileName: TRadioGroup
37 | Left = -6
38 | Top = 112
39 | Width = 543
40 | Height = 57
41 | Anchors = [akLeft, akTop, akRight]
42 | Caption = 'New Filename'
43 | ItemIndex = 0
44 | Items.Strings = (
45 | 'Let VSTools create the filename'
46 | 'Use my filename (no extension necessary)')
47 | TabOrder = 1
48 | end
49 | object Button1: TButton
50 | Left = 18
51 | Top = 36
52 | Width = 121
53 | Height = 25
54 | Caption = 'ShellNew Menu'
55 | TabOrder = 0
56 | OnClick = Button1Click
57 | end
58 | object Edit1: TEdit
59 | Left = 266
60 | Top = 142
61 | Width = 263
62 | Height = 21
63 | Anchors = [akLeft, akTop, akRight]
64 | TabOrder = 2
65 | Text = 'My Custom Filename'
66 | end
67 | object GroupBox1: TGroupBox
68 | Left = 152
69 | Top = 8
70 | Width = 385
71 | Height = 57
72 | Caption = 'Options'
73 | TabOrder = 4
74 | object CheckBox1: TCheckBox
75 | Left = 136
76 | Top = 16
77 | Width = 121
78 | Height = 17
79 | Hint =
80 | 'Turning this option on mimics Explorer New menu. Explorer short' +
81 | 'ens the list for example HTML files should have a *.htm and a *h' +
82 | 'tml item. Not combining items will leave both in menu.'
83 | Caption = 'Combine Like Items'
84 | TabOrder = 0
85 | OnClick = CheckBox1Click
86 | end
87 | object CheckBox2: TCheckBox
88 | Left = 136
89 | Top = 32
90 | Width = 105
91 | Height = 17
92 | Caption = 'Use Shell Images'
93 | TabOrder = 1
94 | OnClick = CheckBox2Click
95 | end
96 | object CheckBox3: TCheckBox
97 | Left = 264
98 | Top = 16
99 | Width = 113
100 | Height = 17
101 | Caption = 'Warn on Overwrite'
102 | TabOrder = 2
103 | OnClick = CheckBox3Click
104 | end
105 | object CheckBox4: TCheckBox
106 | Left = 8
107 | Top = 16
108 | Width = 113
109 | Height = 17
110 | Caption = 'New Folder Item'
111 | TabOrder = 3
112 | OnClick = CheckBox4Click
113 | end
114 | object CheckBox5: TCheckBox
115 | Left = 8
116 | Top = 32
117 | Width = 113
118 | Height = 17
119 | Caption = 'New Shortcut Item'
120 | TabOrder = 4
121 | OnClick = CheckBox5Click
122 | end
123 | end
124 | object StatusBar1: TStatusBar
125 | Left = 0
126 | Top = 358
127 | Width = 552
128 | Height = 19
129 | Panels = <
130 | item
131 | Text = ' 0 Total Objects'
132 | Width = 150
133 | end
134 | item
135 | Text = ' 0 Objects Selected'
136 | Width = 50
137 | end>
138 | end
139 | end
140 |
--------------------------------------------------------------------------------
/Demos/Shell Notify/Unit2.dfm:
--------------------------------------------------------------------------------
1 | object Form2: TForm2
2 | Left = 99
3 | Top = 372
4 | Width = 645
5 | Height = 312
6 | BorderStyle = bsSizeToolWin
7 | Caption = 'Form2'
8 | Color = clBtnFace
9 | Font.Charset = DEFAULT_CHARSET
10 | Font.Color = clWindowText
11 | Font.Height = -11
12 | Font.Name = 'MS Sans Serif'
13 | Font.Style = []
14 | OldCreateOrder = False
15 | Visible = True
16 | OnCreate = FormCreate
17 | OnHide = FormHide
18 | PixelsPerInch = 96
19 | TextHeight = 13
20 | object TreeView1: TTreeView
21 | Left = 0
22 | Top = 25
23 | Width = 408
24 | Height = 253
25 | Align = alClient
26 | Indent = 19
27 | TabOrder = 0
28 | end
29 | object ToolBar1: TToolBar
30 | Left = 0
31 | Top = 0
32 | Width = 637
33 | Height = 25
34 | AutoSize = True
35 | ButtonHeight = 21
36 | ButtonWidth = 61
37 | Caption = 'ToolBar1'
38 | ShowCaptions = True
39 | TabOrder = 1
40 | object ToolButton1: TToolButton
41 | Left = 0
42 | Top = 2
43 | AutoSize = True
44 | Caption = 'Delete All'
45 | ImageIndex = 0
46 | OnClick = ToolButton1Click
47 | end
48 | object ToolButton2: TToolButton
49 | Left = 56
50 | Top = 2
51 | Caption = 'Mark All'
52 | ImageIndex = 1
53 | OnClick = ToolButton2Click
54 | end
55 | object ToolButton3: TToolButton
56 | Left = 117
57 | Top = 2
58 | AutoSize = True
59 | Caption = 'Collapse All'
60 | ImageIndex = 2
61 | OnClick = ToolButton3Click
62 | end
63 | object ToolButton4: TToolButton
64 | Left = 182
65 | Top = 2
66 | Caption = 'Expand All'
67 | ImageIndex = 3
68 | OnClick = ToolButton4Click
69 | end
70 | end
71 | object Panel1: TPanel
72 | Left = 408
73 | Top = 25
74 | Width = 229
75 | Height = 253
76 | Align = alRight
77 | TabOrder = 2
78 | object Label1: TLabel
79 | Left = 16
80 | Top = 24
81 | Width = 109
82 | Height = 13
83 | Caption = 'Shell Notifications Sent'
84 | end
85 | object Label2: TLabel
86 | Left = 16
87 | Top = 48
88 | Width = 116
89 | Height = 13
90 | Caption = 'Kernel Notifications Sent'
91 | end
92 | object Label3: TLabel
93 | Left = 16
94 | Top = 72
95 | Width = 137
96 | Height = 13
97 | Caption = 'Peak Change Notify Objects:'
98 | end
99 | object Label4: TLabel
100 | Left = 16
101 | Top = 120
102 | Width = 119
103 | Height = 13
104 | Caption = 'Peak Change Notify Lists'
105 | end
106 | object Label5: TLabel
107 | Left = 176
108 | Top = 24
109 | Width = 6
110 | Height = 13
111 | Caption = '0'
112 | end
113 | object Label6: TLabel
114 | Left = 176
115 | Top = 48
116 | Width = 6
117 | Height = 13
118 | Caption = '0'
119 | end
120 | object Label7: TLabel
121 | Left = 176
122 | Top = 72
123 | Width = 6
124 | Height = 13
125 | Caption = '0'
126 | end
127 | object Label8: TLabel
128 | Left = 176
129 | Top = 96
130 | Width = 6
131 | Height = 13
132 | Caption = '0'
133 | end
134 | object Label9: TLabel
135 | Left = 176
136 | Top = 120
137 | Width = 6
138 | Height = 13
139 | Caption = '0'
140 | end
141 | object Label10: TLabel
142 | Left = 176
143 | Top = 144
144 | Width = 6
145 | Height = 13
146 | Caption = '0'
147 | end
148 | object Label11: TLabel
149 | Left = 16
150 | Top = 96
151 | Width = 143
152 | Height = 13
153 | Caption = 'Current Change Notify Objects'
154 | end
155 | object Label12: TLabel
156 | Left = 16
157 | Top = 144
158 | Width = 128
159 | Height = 13
160 | Caption = 'Current Change Notify Lists'
161 | end
162 | object CheckBox1: TCheckBox
163 | Left = 120
164 | Top = 200
165 | Width = 97
166 | Height = 17
167 | Caption = 'Track Realtime'
168 | Checked = True
169 | State = cbChecked
170 | TabOrder = 0
171 | end
172 | object Button1: TButton
173 | Left = 8
174 | Top = 168
175 | Width = 97
176 | Height = 25
177 | Caption = 'Reset'
178 | TabOrder = 1
179 | OnClick = Button1Click
180 | end
181 | object Button2: TButton
182 | Left = 120
183 | Top = 168
184 | Width = 97
185 | Height = 25
186 | Caption = 'Manual Refresh'
187 | TabOrder = 2
188 | OnClick = Button2Click
189 | end
190 | end
191 | end
192 |
--------------------------------------------------------------------------------
/Demos/Shell Notify/Unit2.pas:
--------------------------------------------------------------------------------
1 | unit Unit2;
2 |
3 | interface
4 |
5 | // You must define VIRTUALNOTIFYDEBUG in
6 | // Projects>Options>Conditional Defines to Compile
7 |
8 | uses
9 | Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
10 | ComCtrls, VirtualExplorerTree, MPShellUtilities, ToolWin, VirtualShellNotifier,
11 | StdCtrls, ExtCtrls;
12 |
13 | type
14 | TForm2 = class(TForm)
15 | TreeView1: TTreeView;
16 | ToolBar1: TToolBar;
17 | ToolButton1: TToolButton;
18 | ToolButton2: TToolButton;
19 | ToolButton3: TToolButton;
20 | ToolButton4: TToolButton;
21 | Panel1: TPanel;
22 | Label1: TLabel;
23 | Label2: TLabel;
24 | Label3: TLabel;
25 | Label4: TLabel;
26 | Label5: TLabel;
27 | Label6: TLabel;
28 | Label7: TLabel;
29 | Label8: TLabel;
30 | CheckBox1: TCheckBox;
31 | Label9: TLabel;
32 | Label10: TLabel;
33 | Label11: TLabel;
34 | Label12: TLabel;
35 | Button1: TButton;
36 | Button2: TButton;
37 | procedure ToolButton1Click(Sender: TObject);
38 | procedure ToolButton2Click(Sender: TObject);
39 | procedure ToolButton3Click(Sender: TObject);
40 | procedure ToolButton4Click(Sender: TObject);
41 | procedure FormCreate(Sender: TObject);
42 | procedure Button1Click(Sender: TObject);
43 | procedure Button2Click(Sender: TObject);
44 | procedure FormHide(Sender: TObject);
45 | private
46 | { Private declarations }
47 | public
48 | { Public declarations }
49 | procedure AddEvent(ShellEvent: TVirtualShellEvent);
50 | procedure DebugNotifyHook(Sender: TObject);
51 | procedure RefreshDebugGUI;
52 |
53 | end;
54 |
55 | var
56 | Form2: TForm2;
57 |
58 | implementation
59 |
60 | {$R *.DFM}
61 |
62 | { TForm2 }
63 |
64 | procedure TForm2.AddEvent(ShellEvent: TVirtualShellEvent);
65 | var
66 | NS1, NS2: TNamespace;
67 | Node, Node2, Node3: TTreeNode;
68 | begin
69 | with ShellEvent do
70 | begin
71 | if Assigned(PIDL1) then
72 | begin
73 | NS1 := TNamespace.Create(PIDL1, nil);
74 | NS1.FreePIDLOnDestroy := False;
75 | end else
76 | NS1 := nil;
77 | if Assigned(PIDL2) then
78 | begin
79 | NS2 := TNamespace.Create(PIDL2, nil);
80 | NS2.FreePIDLOnDestroy := False;
81 | end else
82 | NS2 := nil;
83 | Node := Treeview1.Items.AddChild(nil, VirtualShellNotifyEventToStr(ShellEvent.ShellNotifyEvent));
84 |
85 | Node2 := Treeview1.Items.AddChild(Node, 'Item 1');
86 | if Assigned(NS1) then
87 | begin
88 | Node3 := Treeview1.Items.AddChild(Node2, 'PIDL 1 = ' + IntToStr( Integer(PIDL1)));
89 | Treeview1.Items.AddChild(Node3, 'ItemID Count = ' + IntToStr( PIDLMgr.IDCount(PIDL1)));
90 | Treeview1.Items.AddChild(Node3, 'Path = ' + NS1.NameParseAddress);
91 | end else
92 | Treeview1.Items.AddChild(Node2, 'PIDL1 = nil');
93 |
94 | Node3 := Treeview1.Items.AddChild(Node2, 'DWORD 1 = ' + IntToStr( DoubleWord1));
95 | Treeview1.Items.AddChild(Node3, 'Drive ID = ' + FreeSpaceNotifyToDrive(DoubleWord1));
96 |
97 | Node2 := Treeview1.Items.AddChild(Node, 'Item 2');
98 | if Assigned(NS2) then
99 | begin
100 | Node3 := Treeview1.Items.AddChild(Node2, 'PIDL 2 = ' + IntToStr( Integer(PIDL2)));
101 | Treeview1.Items.AddChild(Node3, 'ItemID Count = ' + IntToStr( PIDLMgr.IDCount(PIDL2)));
102 | Treeview1.Items.AddChild(Node3, 'Path = ' + NS2.NameParseAddress);
103 | end else
104 | Treeview1.Items.AddChild(Node2, 'PIDL2 = nil');
105 | Node3 := Treeview1.Items.AddChild(Node2, 'DWORD 2 = ' + IntToStr( DoubleWord2));
106 | Treeview1.Items.AddChild(Node3, 'Drive ID = ' + FreeSpaceNotifyToDrive(DoubleWord2));
107 | NS1.Free;
108 | NS2.Free;
109 | end;
110 | end;
111 |
112 | procedure TForm2.DebugNotifyHook;
113 | begin
114 | if CheckBox1.Checked then
115 | RefreshDebugGUI
116 | end;
117 |
118 | procedure TForm2.ToolButton1Click(Sender: TObject);
119 | begin
120 | Treeview1.Items.Clear
121 | end;
122 |
123 | procedure TForm2.ToolButton2Click(Sender: TObject);
124 | var
125 | i: integer;
126 | begin
127 | for i := 0 to Treeview1.Items.Count - 1 do
128 | begin
129 | if Treeview1.Items[i].Level = 0 then
130 | Treeview1.Items[i].Text := '----' + Treeview1.Items[i].Text
131 | end;
132 | end;
133 |
134 | procedure TForm2.ToolButton3Click(Sender: TObject);
135 | begin
136 | Treeview1.Items.BeginUpdate;
137 | try
138 | Treeview1.FullCollapse
139 | finally
140 | Treeview1.Items.EndUpdate
141 | end
142 | end;
143 |
144 | procedure TForm2.ToolButton4Click(Sender: TObject);
145 | begin
146 | Treeview1.Items.BeginUpdate;
147 | try
148 | Treeview1.FullExpand
149 | finally
150 | Treeview1.Items.EndUpdate
151 | end
152 | end;
153 |
154 | procedure TForm2.FormCreate(Sender: TObject);
155 | begin
156 | {$IFDEF VIRTUALNOTIFYDEBUG}
157 | NotifyDebug.OnChange := DebugNotifyHook
158 | {$ENDIF}
159 | end;
160 |
161 | procedure TForm2.Button1Click(Sender: TObject);
162 | begin
163 | {$IFDEF VIRTUALNOTIFYDEBUG}
164 | NotifyDebug.ShellEvents := 0;
165 | NotifyDebug.EventListObjects := 0;
166 | NotifyDebug.KernelEvents := 0;
167 | NotifyDebug.EventObjects := 0;
168 | NotifyDebug.PeakKernelEvents := 0;
169 | NotifyDebug.PeakShellEvents := 0;
170 | NotifyDebug.PeakEventObjects := 0;
171 | NotifyDebug.PeakEventListObjects := 0;
172 | RefreshDebugGUI
173 | {$ENDIF}
174 | end;
175 |
176 | procedure TForm2.RefreshDebugGUI;
177 | begin
178 | {$IFDEF VIRTUALNOTIFYDEBUG}
179 | Label5.Caption := IntToStr(NotifyDebug.PeakShellEvents);
180 | Label6.Caption := IntToStr(NotifyDebug.PeakKernelEvents);
181 | Label7.Caption := IntToStr(NotifyDebug.PeakEventObjects);
182 | Label8.Caption := IntToStr(NotifyDebug.EventObjects);
183 | Label9.Caption := IntToStr(NotifyDebug.PeakEventListObjects);
184 | Label10.Caption := IntToStr(NotifyDebug.EventListObjects);
185 | {$ENDIF}
186 | end;
187 |
188 | procedure TForm2.Button2Click(Sender: TObject);
189 | begin
190 | {$IFDEF VIRTUALNOTIFYDEBUG}
191 | RefreshDebugGUI
192 | {$ENDIF}
193 | end;
194 |
195 | procedure TForm2.FormHide(Sender: TObject);
196 | begin
197 | {$IFDEF VIRTUALNOTIFYDEBUG}
198 | NotifyDebug.OnChange := nil
199 | {$ENDIF}
200 | end;
201 |
202 | end.
203 |
--------------------------------------------------------------------------------
/Demos/ShellColumn State Storing/ShellColumnStateStoring.dpr:
--------------------------------------------------------------------------------
1 | program ShellColumnStateStoring;
2 |
3 | uses
4 | Forms,
5 | Unit1 in 'Unit1.pas' {Form1};
6 |
7 | {$R *.RES}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.CreateForm(TForm1, Form1);
12 | Application.Run;
13 | end.
14 |
--------------------------------------------------------------------------------
/Demos/ShellColumn State Storing/ShellColumnStateStoring.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/ShellColumn State Storing/ShellColumnStateStoring.res
--------------------------------------------------------------------------------
/Demos/ShellColumn State Storing/Unit1.pas:
--------------------------------------------------------------------------------
1 | unit Unit1;
2 |
3 | interface
4 |
5 | uses
6 | Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
7 | VirtualExplorerTree, VirtualTrees, ExtCtrls, StdCtrls;
8 |
9 | type
10 | TForm1 = class(TForm)
11 | Panel2: TPanel;
12 | ExplorerTreeview1: TVirtualExplorerTreeview;
13 | Splitter1: TSplitter;
14 | ExplorerListview1: TVirtualExplorerListview;
15 | Panel1: TPanel;
16 | Panel3: TPanel;
17 | Panel4: TPanel;
18 | Button1: TButton;
19 | Button2: TButton;
20 | Label4: TLabel;
21 | Memo1: TMemo;
22 | procedure Button1Click(Sender: TObject);
23 | procedure Button2Click(Sender: TObject);
24 | private
25 | { Private declarations }
26 | public
27 | { Public declarations }
28 | end;
29 |
30 | var
31 | Form1: TForm1;
32 |
33 | implementation
34 |
35 | {$R *.DFM}
36 |
37 | procedure TForm1.Button1Click(Sender: TObject);
38 | begin
39 | ExplorerListview1.Storage.SaveToFile('Storage.dat');
40 | end;
41 |
42 | procedure TForm1.Button2Click(Sender: TObject);
43 | begin
44 | ExplorerListview1.Storage.LoadFromFile('Storage.dat');
45 | ExplorerListview1.RefreshTree
46 | end;
47 |
48 | end.
49 |
--------------------------------------------------------------------------------
/Demos/ShellNew (New File) Menu/ShellNew_NewFileMenu.dpr:
--------------------------------------------------------------------------------
1 | program ShellNew_NewFileMenu;
2 |
3 | uses
4 | Forms,
5 | Unit1 in 'Unit1.pas' {Form1};
6 |
7 | {$R *.RES}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.CreateForm(TForm1, Form1);
12 | Application.Run;
13 | end.
14 |
--------------------------------------------------------------------------------
/Demos/ShellNew (New File) Menu/ShellNew_NewFileMenu.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/ShellNew (New File) Menu/ShellNew_NewFileMenu.res
--------------------------------------------------------------------------------
/Demos/ShellNew (New File) Menu/Unit1.dfm:
--------------------------------------------------------------------------------
1 | object Form1: TForm1
2 | Left = 274
3 | Top = 248
4 | Width = 559
5 | Height = 375
6 | Caption = 'Form1'
7 | Color = clBtnFace
8 | Font.Charset = DEFAULT_CHARSET
9 | Font.Color = clWindowText
10 | Font.Height = -11
11 | Font.Name = 'MS Shell Dlg 2'
12 | Font.Style = []
13 | OldCreateOrder = False
14 | ShowHint = True
15 | OnShow = FormShow
16 | DesignSize = (
17 | 551
18 | 341)
19 | PixelsPerInch = 96
20 | TextHeight = 13
21 | object Label2: TLabel
22 | Left = 16
23 | Top = 8
24 | Width = 119
25 | Height = 26
26 | Caption = 'Click button or right click on the Listview'
27 | WordWrap = True
28 | end
29 | object Button1: TButton
30 | Left = 18
31 | Top = 36
32 | Width = 121
33 | Height = 25
34 | Caption = 'ShellNew Menu'
35 | TabOrder = 0
36 | OnClick = Button1Click
37 | end
38 | object RadioGroupFileName: TRadioGroup
39 | Left = 10
40 | Top = 72
41 | Width = 528
42 | Height = 57
43 | Anchors = [akLeft, akTop, akRight]
44 | Caption = 'New Filename'
45 | ItemIndex = 0
46 | Items.Strings = (
47 | 'Let VSTools create the filename'
48 | 'Use my filename (no extenstion necessary)')
49 | TabOrder = 1
50 | end
51 | object Edit1: TEdit
52 | Left = 266
53 | Top = 102
54 | Width = 264
55 | Height = 21
56 | Anchors = [akLeft, akTop, akRight]
57 | TabOrder = 2
58 | Text = 'My Custom Filename'
59 | end
60 | object ExplorerListview1: TVirtualExplorerListview
61 | Left = 10
62 | Top = 136
63 | Width = 527
64 | Height = 201
65 | Active = False
66 | Anchors = [akLeft, akTop, akRight, akBottom]
67 | ColumnDetails = cdShellColumns
68 | DefaultNodeHeight = 17
69 | DragHeight = 250
70 | DragWidth = 150
71 | FileObjects = [foFolders, foNonFolders]
72 | FileSizeFormat = fsfExplorer
73 | FileSort = fsFileType
74 | Header.AutoSizeIndex = -1
75 | Header.Font.Charset = DEFAULT_CHARSET
76 | Header.Font.Color = clWindowText
77 | Header.Font.Height = -11
78 | Header.Font.Name = 'MS Sans Serif'
79 | Header.Font.Style = []
80 | Header.Options = [hoColumnResize, hoDrag, hoShowSortGlyphs, hoVisible]
81 | HintAnimation = hatNone
82 | HintMode = hmHint
83 | Indent = 0
84 | ParentColor = False
85 | PopupMenu = VirtualShellNewMenu1
86 | RootFolder = rfDesktop
87 | TabOrder = 3
88 | TabStop = True
89 | TreeOptions.AutoOptions = [toAutoScroll]
90 | TreeOptions.MiscOptions = [toAcceptOLEDrop, toEditable, toReportMode, toToggleOnDblClick]
91 | TreeOptions.PaintOptions = [toShowButtons, toShowTreeLines, toUseBlendedImages]
92 | TreeOptions.SelectionOptions = [toMultiSelect, toRightClickSelect, toSiblingSelectConstraint]
93 | TreeOptions.VETFolderOptions = [toHideRootFolder]
94 | TreeOptions.VETShellOptions = [toContextMenus]
95 | TreeOptions.VETSyncOptions = []
96 | TreeOptions.VETMiscOptions = [toBrowseExecuteFolder, toBrowseExecuteFolderShortcut, toChangeNotifierThread]
97 | TreeOptions.VETImageOptions = [toImages, toThreadedImages]
98 | ColumnMenuItemCount = 8
99 | end
100 | object GroupBox1: TGroupBox
101 | Left = 152
102 | Top = 8
103 | Width = 385
104 | Height = 57
105 | Caption = 'Options'
106 | TabOrder = 4
107 | object CheckBox1: TCheckBox
108 | Left = 136
109 | Top = 16
110 | Width = 121
111 | Height = 17
112 | Hint =
113 | 'Turning this option on mimics Explorer New menu. Explorer short' +
114 | 'ens the list for example HTML files should have a *.htm and a *h' +
115 | 'tml item. Not combining items will leave both in menu.'
116 | Caption = 'Combine Like Items'
117 | TabOrder = 0
118 | OnClick = CheckBox1Click
119 | end
120 | object CheckBox2: TCheckBox
121 | Left = 136
122 | Top = 32
123 | Width = 105
124 | Height = 17
125 | Caption = 'Use Shell Images'
126 | TabOrder = 1
127 | OnClick = CheckBox2Click
128 | end
129 | object CheckBox3: TCheckBox
130 | Left = 264
131 | Top = 16
132 | Width = 113
133 | Height = 17
134 | Caption = 'Warn on Overwrite'
135 | TabOrder = 2
136 | OnClick = CheckBox3Click
137 | end
138 | object CheckBox4: TCheckBox
139 | Left = 8
140 | Top = 16
141 | Width = 113
142 | Height = 17
143 | Caption = 'New Folder Item'
144 | TabOrder = 3
145 | OnClick = CheckBox4Click
146 | end
147 | object CheckBox5: TCheckBox
148 | Left = 8
149 | Top = 32
150 | Width = 113
151 | Height = 17
152 | Caption = 'New Shortcut Item'
153 | TabOrder = 4
154 | OnClick = CheckBox5Click
155 | end
156 | end
157 | object VirtualShellNewMenu1: TVirtualShellNewMenu
158 | OnAddMenuItem = VirtualShellNewMenu1AddMenuItem
159 | OnCreateNewFile = VirtualShellNewMenu1CreateNewFile
160 | WarnOnOverwrite = False
161 | Left = 88
162 | Top = 240
163 | end
164 | end
165 |
--------------------------------------------------------------------------------
/Demos/ShellNew (New File) Menu/Unit1.pas:
--------------------------------------------------------------------------------
1 | unit Unit1;
2 |
3 | interface
4 |
5 | uses
6 | Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
7 | StdCtrls, VirtualExplorerTree, VirtualTrees, ExtCtrls, Menus,
8 | MPShellUtilities, VirtualShellNewMenu;
9 |
10 | type
11 | TForm1 = class(TForm)
12 | Button1: TButton;
13 | RadioGroupFileName: TRadioGroup;
14 | Edit1: TEdit;
15 | ExplorerListview1: TVirtualExplorerListview;
16 | GroupBox1: TGroupBox;
17 | CheckBox1: TCheckBox;
18 | CheckBox2: TCheckBox;
19 | CheckBox3: TCheckBox;
20 | CheckBox4: TCheckBox;
21 | CheckBox5: TCheckBox;
22 | Label2: TLabel;
23 | VirtualShellNewMenu1: TVirtualShellNewMenu;
24 | procedure Button1Click(Sender: TObject);
25 | procedure VirtualShellNewMenu1AddMenuItem(Sender: TPopupMenu;
26 | const NewMenuItem: TVirtualShellNewItem; var Allow: Boolean);
27 | procedure VirtualShellNewMenu1CreateNewFile(Sender: TMenu;
28 | const NewMenuItem: TVirtualShellNewItem; var Path, FileName: String;
29 | var Allow: Boolean);
30 | procedure CheckBox1Click(Sender: TObject);
31 | procedure CheckBox2Click(Sender: TObject);
32 | procedure CheckBox3Click(Sender: TObject);
33 | procedure CheckBox4Click(Sender: TObject);
34 | procedure CheckBox5Click(Sender: TObject);
35 | procedure FormShow(Sender: TObject);
36 | private
37 | { Private declarations }
38 | public
39 | { Public declarations }
40 | procedure Loaded; override;
41 | end;
42 |
43 | var
44 | Form1: TForm1;
45 |
46 | implementation
47 |
48 | {$R *.DFM}
49 |
50 | procedure TForm1.Button1Click(Sender: TObject);
51 | var
52 | Pt: TPoint;
53 | begin
54 | Pt.x := Button1.Left;
55 | Pt.y := Button1.Top + Button1.Height;
56 | Pt := ClientToScreen(Pt);
57 | VirtualShellNewMenu1.Popup(Pt.x, Pt.y);
58 | end;
59 |
60 | procedure TForm1.VirtualShellNewMenu1AddMenuItem(Sender: TPopupMenu;
61 | const NewMenuItem: TVirtualShellNewItem; var Allow: Boolean);
62 | begin
63 | { Here Menu Items can be filtered dynamiclly }
64 | end;
65 |
66 | procedure TForm1.VirtualShellNewMenu1CreateNewFile(Sender: TMenu;
67 | const NewMenuItem: TVirtualShellNewItem; var Path, FileName: String;
68 | var Allow: Boolean);
69 | begin
70 | { Here we MUST return the path the file is to be created in }
71 | Path := ExplorerListview1.RootFolderNamespace.NameForParsing;
72 | if RadioGroupFileName.ItemIndex = 1 then
73 | FileName := Edit1.Text;
74 | end;
75 |
76 | procedure TForm1.CheckBox1Click(Sender: TObject);
77 | begin
78 | VirtualShellNewMenu1.CombineLikeItems := CheckBox1.Checked;
79 | end;
80 |
81 | procedure TForm1.CheckBox2Click(Sender: TObject);
82 | begin
83 | VirtualShellNewMenu1.UseShellImages := CheckBox2.Checked;
84 | end;
85 |
86 | procedure TForm1.CheckBox3Click(Sender: TObject);
87 | begin
88 | VirtualShellNewMenu1.WarnOnOverwrite := CheckBox3.Checked;
89 | end;
90 |
91 | procedure TForm1.Loaded;
92 | begin
93 | inherited;
94 | CheckBox3.Checked := VirtualShellNewMenu1.WarnOnOverwrite;
95 | CheckBox2.Checked := VirtualShellNewMenu1.UseShellImages;
96 | CheckBox1.Checked := VirtualShellNewMenu1.CombineLikeItems;
97 | CheckBox4.Checked := VirtualShellNewMenu1.NewFolderItem;
98 | CheckBox5.Checked := VirtualShellNewMenu1.NewShortcutItem;
99 | end;
100 |
101 | procedure TForm1.FormShow(Sender: TObject);
102 | begin
103 | Application.HintPause := 10000;
104 | ExplorerListview1.Active := True;
105 | end;
106 |
107 | procedure TForm1.CheckBox4Click(Sender: TObject);
108 | begin
109 | VirtualShellNewMenu1.NewFolderItem := CheckBox4.Checked;
110 | end;
111 |
112 | procedure TForm1.CheckBox5Click(Sender: TObject);
113 | begin
114 | VirtualShellNewMenu1.NewShortcutItem := CheckBox5.Checked;
115 | end;
116 |
117 | end.
118 |
--------------------------------------------------------------------------------
/Demos/ShellToolbars/ShellToolbars.dpr:
--------------------------------------------------------------------------------
1 | program ShellToolbars;
2 |
3 | uses
4 | Forms,
5 | Unit1 in 'Unit1.pas' {Form1};
6 |
7 | {$R *.RES}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.CreateForm(TForm1, Form1);
12 | Application.Run;
13 | end.
14 |
--------------------------------------------------------------------------------
/Demos/ShellToolbars/Unit1.pas:
--------------------------------------------------------------------------------
1 | unit Unit1;
2 |
3 | interface
4 |
5 | uses
6 | Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
7 | ShlObj, Buttons, ToolWin, ComCtrls, VirtualShellToolBar,
8 | ExtCtrls, VirtualTrees, VirtualExplorerTree, Menus, StdCtrls, MPShellUtilities;
9 |
10 | type
11 | TForm1 = class(TForm)
12 | Panel1: TPanel;
13 | CheckBox1: TCheckBox;
14 | CheckBox2: TCheckBox;
15 | CheckBox4: TCheckBox;
16 | CheckBox5: TCheckBox;
17 | Label3: TLabel;
18 | Label4: TLabel;
19 | Edit3: TEdit;
20 | Edit4: TEdit;
21 | Button4: TButton;
22 | Button5: TButton;
23 | RadioGroup1: TRadioGroup;
24 | CheckBox3: TCheckBox;
25 | CheckBox6: TCheckBox;
26 | CheckBox7: TCheckBox;
27 | DriveToolbar1: TVirtualDriveToolbar;
28 | ShellToolbar1: TVirtualShellToolbar;
29 | ExplorerListview1: TVirtualExplorerListview;
30 | ExplorerTreeview1: TVirtualExplorerTreeview;
31 | Splitter1: TSplitter;
32 | SpecialFolderToolbar1: TVirtualSpecialFolderToolbar;
33 | Label5: TLabel;
34 | procedure FormCreate(Sender: TObject);
35 | procedure FormDestroy(Sender: TObject);
36 | procedure CheckBox1Click(Sender: TObject);
37 | procedure CheckBox2Click(Sender: TObject);
38 | procedure CheckBox4Click(Sender: TObject);
39 | procedure CheckBox5Click(Sender: TObject);
40 | procedure Button4Click(Sender: TObject);
41 | procedure Button5Click(Sender: TObject);
42 | procedure RadioGroup1Click(Sender: TObject);
43 | procedure CheckBox3Click(Sender: TObject);
44 | procedure CheckBox6Click(Sender: TObject);
45 | procedure CheckBox7Click(Sender: TObject);
46 | private
47 | { Private declarations }
48 | public
49 | { Public declarations }
50 | procedure SetToolbarsOptions(Include: boolean; Op: TVirtualToolbarOptions; CaptionOp: TCaptionOptions);
51 | end;
52 |
53 | var
54 | Form1: TForm1;
55 |
56 | implementation
57 |
58 | {$R *.DFM}
59 |
60 | const
61 | ShellToolbarDataFile = 'Test.dat';
62 | ShellToolbarDataFile1 = 'Test1.dat';
63 | ShellToolbarDataFile2 = 'Test2.dat';
64 |
65 | procedure TForm1.FormCreate(Sender: TObject);
66 | begin
67 | Edit3.Text := IntToStr(ShellToolbar1.ButtonMargin);
68 | Edit4.Text := IntToStr(ShellToolbar1.ButtonSpacing);
69 |
70 |
71 | { if FileExists(ShellToolbarDataFile) then
72 | ShellToolbar1.ReadFromFile(ShellToolbarDataFile);
73 |
74 | if FileExists(ShellToolbarDataFile1) then
75 | ShellToolbar2.ReadFromFile(ShellToolbarDataFile1);
76 |
77 | if FileExists(ShellToolbarDataFile2) then
78 | ShellToolbar3.ReadFromFile(ShellToolbarDataFile2);
79 |
80 | if ShellToolbar1.AutoSize then
81 | begin
82 | ShellToolbar1.AutoSize := False;
83 | ShellToolbar1.AutoSize := True
84 | end }
85 | end;
86 |
87 | procedure TForm1.FormDestroy(Sender: TObject);
88 | begin
89 | { ShellToolbar1.WriteToFile(ShellToolbarDataFile);
90 | ShellToolbar2.WriteToFile(ShellToolbarDataFile1);
91 | ShellToolbar3.WriteToFile(ShellToolbarDataFile2); }
92 | end;
93 |
94 | procedure TForm1.CheckBox1Click(Sender: TObject);
95 | begin
96 | ShellToolbar1.AutoSize := Checkbox1.Checked;
97 | DriveToolbar1.AutoSize := Checkbox1.Checked;
98 | SpecialFolderToolbar1.AutoSize := Checkbox1.Checked;
99 | end;
100 |
101 | procedure TForm1.CheckBox7Click(Sender: TObject);
102 | begin
103 | SetToolbarsOptions(CheckBox7.Checked, [toEqualWidth], []);
104 | end;
105 |
106 | procedure TForm1.CheckBox2Click(Sender: TObject);
107 | begin
108 | SetToolbarsOptions(CheckBox2.Checked, [toFlat], []);
109 | end;
110 |
111 | procedure TForm1.CheckBox4Click(Sender: TObject);
112 | begin
113 | SetToolbarsOptions(CheckBox4.Checked, [toTransparent], []);
114 | end;
115 |
116 | procedure TForm1.CheckBox3Click(Sender: TObject);
117 | begin
118 | SetToolbarsOptions(CheckBox3.Checked, [toTile], []);
119 | end;
120 |
121 | procedure TForm1.CheckBox5Click(Sender: TObject);
122 | begin
123 | SetToolbarsOptions(CheckBox5.Checked, [], [coFolderName]);
124 | end;
125 |
126 | procedure TForm1.CheckBox6Click(Sender: TObject);
127 | begin
128 | SetToolbarsOptions(CheckBox6.Checked, [], [coNoExtension]);
129 | end;
130 |
131 | procedure TForm1.Button4Click(Sender: TObject);
132 | begin
133 | ShellToolbar1.ButtonMargin := StrToInt(Edit3.Text);
134 | SpecialFolderToolbar1.ButtonMargin := StrToInt(Edit3.Text);
135 | end;
136 |
137 | procedure TForm1.Button5Click(Sender: TObject);
138 | begin
139 | ShellToolbar1.ButtonSpacing := StrToInt(Edit4.Text);
140 | SpecialFolderToolbar1.ButtonSpacing := StrToInt(Edit4.Text);
141 | end;
142 |
143 | procedure TForm1.RadioGroup1Click(Sender: TObject);
144 | begin
145 | case RadioGroup1.ItemIndex of
146 | 0: ShellToolbar1.ButtonLayout := Buttons.blGlyphTop;
147 | 1: ShellToolbar1.ButtonLayout := Buttons.blGlyphBottom;
148 | 2: ShellToolbar1.ButtonLayout := Buttons.blGlyphLeft;
149 | 3: ShellToolbar1.ButtonLayout := Buttons.blGlyphRight;
150 | end;
151 |
152 | DriveToolbar1.ButtonLayout := ShellToolbar1.ButtonLayout;
153 | SpecialFolderToolbar1.ButtonLayout := ShellToolbar1.ButtonLayout;
154 | end;
155 |
156 | procedure TForm1.SetToolbarsOptions(Include: boolean; Op: TVirtualToolbarOptions; CaptionOp: TCaptionOptions);
157 | begin
158 | if Include then begin
159 | ShellToolbar1.Options := ShellToolbar1.Options + Op;
160 | DriveToolbar1.Options := DriveToolbar1.Options + Op;
161 | SpecialFolderToolbar1.Options := SpecialFolderToolbar1.Options + Op;
162 |
163 | ShellToolbar1.ButtonCaptionOptions := ShellToolbar1.ButtonCaptionOptions + CaptionOp;
164 | SpecialFolderToolbar1.ButtonCaptionOptions := SpecialFolderToolbar1.ButtonCaptionOptions + CaptionOp;
165 | end
166 | else begin
167 | ShellToolbar1.Options := ShellToolbar1.Options - Op;
168 | DriveToolbar1.Options := DriveToolbar1.Options - Op;
169 | SpecialFolderToolbar1.Options := SpecialFolderToolbar1.Options - Op;
170 |
171 | ShellToolbar1.ButtonCaptionOptions := ShellToolbar1.ButtonCaptionOptions - CaptionOp;
172 | SpecialFolderToolbar1.ButtonCaptionOptions := SpecialFolderToolbar1.ButtonCaptionOptions - CaptionOp;
173 | end;
174 | end;
175 |
176 | end.
177 |
--------------------------------------------------------------------------------
/Demos/User Data/Unit1.dfm:
--------------------------------------------------------------------------------
1 | object Form1: TForm1
2 | Left = 248
3 | Top = 141
4 | Width = 669
5 | Height = 480
6 | Caption = 'Form1'
7 | Color = clBtnFace
8 | Font.Charset = DEFAULT_CHARSET
9 | Font.Color = clWindowText
10 | Font.Height = -11
11 | Font.Name = 'MS Shell Dlg 2'
12 | Font.Style = []
13 | OldCreateOrder = False
14 | DesignSize = (
15 | 661
16 | 446)
17 | PixelsPerInch = 96
18 | TextHeight = 13
19 | object Label1: TLabel
20 | Left = 352
21 | Top = 56
22 | Width = 158
23 | Height = 13
24 | Caption = 'String To Assign To User Storage'
25 | end
26 | object Label2: TLabel
27 | Left = 352
28 | Top = 168
29 | Width = 289
30 | Height = 13
31 | Anchors = [akLeft, akTop, akRight]
32 | AutoSize = False
33 | end
34 | object VET: TVirtualExplorerTree
35 | Left = 0
36 | Top = 0
37 | Width = 329
38 | Height = 446
39 | Active = True
40 | Align = alLeft
41 | ColumnDetails = cdUser
42 | ColumnMenuItemCount = 8
43 | DefaultNodeHeight = 17
44 | DragHeight = 250
45 | DragWidth = 150
46 | FileObjects = [foFolders, foNonFolders]
47 | FileSizeFormat = fsfExplorer
48 | FileSort = fsFileType
49 | Header.AutoSizeIndex = 0
50 | Header.Font.Charset = DEFAULT_CHARSET
51 | Header.Font.Color = clWindowText
52 | Header.Font.Height = -11
53 | Header.Font.Name = 'MS Shell Dlg 2'
54 | Header.Font.Style = []
55 | Header.MainColumn = -1
56 | Header.Options = [hoColumnResize, hoDrag]
57 | HintMode = hmHint
58 | ParentColor = False
59 | RootFolder = rfDesktop
60 | TabOrder = 0
61 | TabStop = True
62 | TreeOptions.PaintOptions = [toShowButtons, toShowRoot, toShowTreeLines, toThemeAware, toUseBlendedImages]
63 | TreeOptions.VETShellOptions = [toRightAlignSizeColumn, toContextMenus]
64 | TreeOptions.VETSyncOptions = [toCollapseTargetFirst, toExpandTarget, toSelectTarget]
65 | TreeOptions.VETMiscOptions = [toBrowseExecuteFolder, toBrowseExecuteFolderShortcut, toExecuteOnDblClk]
66 | TreeOptions.VETImageOptions = [toImages]
67 | Columns = <>
68 | end
69 | object Button1: TButton
70 | Left = 344
71 | Top = 24
72 | Width = 217
73 | Height = 25
74 | Caption = 'Store String to Selected Node'
75 | TabOrder = 1
76 | OnClick = Button1Click
77 | end
78 | object Edit1: TEdit
79 | Left = 376
80 | Top = 72
81 | Width = 201
82 | Height = 21
83 | TabOrder = 2
84 | Text = 'Edit1'
85 | end
86 | object Button2: TButton
87 | Left = 344
88 | Top = 128
89 | Width = 217
90 | Height = 25
91 | Caption = 'Read User Data from Selected Node'
92 | TabOrder = 3
93 | OnClick = Button2Click
94 | end
95 | object Button3: TButton
96 | Left = 352
97 | Top = 224
98 | Width = 209
99 | Height = 25
100 | Caption = 'Delete User Data from Selected Node'
101 | TabOrder = 4
102 | OnClick = Button3Click
103 | end
104 | end
105 |
--------------------------------------------------------------------------------
/Demos/User Data/Unit1.pas:
--------------------------------------------------------------------------------
1 | unit Unit1;
2 |
3 | interface
4 |
5 | uses
6 | Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
7 | Dialogs, StdCtrls, VirtualTrees, VirtualExplorerTree, MPShellUtilities;
8 |
9 | type
10 | TForm1 = class(TForm)
11 | VET: TVirtualExplorerTree;
12 | Button1: TButton;
13 | Edit1: TEdit;
14 | Label1: TLabel;
15 | Button2: TButton;
16 | Label2: TLabel;
17 | Button3: TButton;
18 | procedure Button1Click(Sender: TObject);
19 | procedure Button2Click(Sender: TObject);
20 | procedure Button3Click(Sender: TObject);
21 | private
22 | { Private declarations }
23 | public
24 | { Public declarations }
25 | end;
26 |
27 |
28 | // User Defined Per node Storage override this and use the Storage class in VET or the Global
29 | TMyUserDataStorage = class(TUserDataStorage)
30 | private
31 | FUserString: string;
32 | public
33 | //You should override these 3 methods in your application:
34 | procedure LoadFromStream(S: TStream; Version: integer = VETStreamStorageVer; ReadVerFromStream: Boolean = False); override;
35 | procedure SaveToStream(S: TStream; Version: integer = VETStreamStorageVer; WriteVerToStream: Boolean = False); override;
36 | procedure Assign(Source: TPersistent); override;
37 |
38 | property UserString: string read FUserString write FUserString;
39 | end;
40 |
41 | var
42 | Form1: TForm1;
43 |
44 | implementation
45 |
46 | {$R *.dfm}
47 |
48 | { TMyUserDataStorage }
49 |
50 | procedure TMyUserDataStorage.Assign(Source: TPersistent);
51 | begin
52 | if Source is TMyUserDataStorage then
53 | UserString := TMyUserDataStorage(Source).UserString;
54 | inherited;
55 | end;
56 |
57 | procedure TMyUserDataStorage.LoadFromStream(S: TStream; Version: integer;
58 | ReadVerFromStream: Boolean);
59 | var
60 | Count: Integer;
61 | begin
62 | inherited;
63 | S.read(Count, SizeOf(Count));
64 | SetLength(FUserString, Count);
65 | S.read(PChar(FUserString)^, Count)
66 | end;
67 |
68 | procedure TMyUserDataStorage.SaveToStream(S: TStream; Version: integer;
69 | WriteVerToStream: Boolean);
70 | var
71 | Count: Integer;
72 | begin
73 | inherited;
74 | Count := Length(FUserString);
75 | S.Write(Count, SizeOf(Count));
76 | S.Write(PChar(FUserString)^, Count)
77 | end;
78 |
79 | procedure TForm1.Button1Click(Sender: TObject);
80 | var
81 | NS: TNamespace;
82 | SNode: TNodeSTorage;
83 | begin
84 | if VET.ValidateNamespace(VET.GetFirstSelected, NS) then
85 | begin
86 | SNode := VET.Storage.Store(NS.AbsolutePIDL, [stUser]);
87 | if Assigned(SNode) then
88 | begin
89 | SNode.Storage.UserData := TMyUserDataStorage.Create;
90 | TMyUserDataStorage(SNode.Storage.UserData).UserString := Edit1.Text
91 | end
92 | end
93 | end;
94 |
95 | procedure TForm1.Button2Click(Sender: TObject);
96 | var
97 | NS: TNamespace;
98 | SNode: TNodeSTorage;
99 | begin
100 | if VET.ValidateNamespace(VET.GetFirstSelected, NS) then
101 | if VET.Storage.Find(NS.AbsolutePIDL, [stUser], SNode) then
102 | Label2.Caption := TMyUserDataStorage( SNode.Storage.UserData).UserString
103 | else
104 | ShowMessage('No User Data has been assiged to this node')
105 | end;
106 |
107 | procedure TForm1.Button3Click(Sender: TObject);
108 | var
109 | NS: TNamespace;
110 | SNode: TNodeSTorage;
111 | begin
112 | if VET.ValidateNamespace(VET.GetFirstSelected, NS) then
113 | if VET.Storage.Find(NS.AbsolutePIDL, [stUser], SNode) then
114 | begin
115 | SNode.Storage.UserData.Free;
116 | SNode.Storage.UserData := nil;
117 | VET.Storage.Delete(NS.AbsolutePIDL, [stUser]);
118 | end else
119 | ShowMessage('No User Data has been assiged to this node')
120 | end;
121 |
122 | end.
123 |
--------------------------------------------------------------------------------
/Demos/User Data/UserDataProject.dpr:
--------------------------------------------------------------------------------
1 |
2 | program UserDataProject;
3 |
4 | uses
5 | Forms,
6 | Unit1 in 'Unit1.pas' {Form1};
7 |
8 | {$R *.res}
9 |
10 | begin
11 | Application.Initialize;
12 | Application.CreateForm(TForm1, Form1);
13 | Application.Run;
14 | end.
15 |
--------------------------------------------------------------------------------
/Demos/User Data/UserDataProject.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/User Data/UserDataProject.res
--------------------------------------------------------------------------------
/Demos/Vertical Icons Custom Draw/ProjectVerticalIcons.dpr:
--------------------------------------------------------------------------------
1 | program ProjectVerticalIcons;
2 |
3 | uses
4 | Forms,
5 | Unit1 in 'Unit1.pas' {Form1};
6 |
7 | {$R *.res}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.CreateForm(TForm1, Form1);
12 | Application.Run;
13 | end.
14 |
--------------------------------------------------------------------------------
/Demos/Vertical Icons Custom Draw/ProjectVerticalIcons.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/Vertical Icons Custom Draw/ProjectVerticalIcons.res
--------------------------------------------------------------------------------
/Demos/Vertical Icons Custom Draw/Unit1.dfm:
--------------------------------------------------------------------------------
1 | object Form1: TForm1
2 | Left = 522
3 | Top = 325
4 | Width = 829
5 | Height = 511
6 | Caption = 'Form1'
7 | Color = clBtnFace
8 | Font.Charset = DEFAULT_CHARSET
9 | Font.Color = clWindowText
10 | Font.Height = -11
11 | Font.Name = 'MS Sans Serif'
12 | Font.Style = []
13 | OldCreateOrder = False
14 | PixelsPerInch = 96
15 | TextHeight = 13
16 | object VirtualExplorerEasyListview1: TVirtualExplorerEasyListview
17 | Left = 0
18 | Top = 0
19 | Width = 813
20 | Height = 475
21 | Active = True
22 | Align = alClient
23 | CompressedFile.Color = clRed
24 | CompressedFile.Font.Charset = DEFAULT_CHARSET
25 | CompressedFile.Font.Color = clWindowText
26 | CompressedFile.Font.Height = -11
27 | CompressedFile.Font.Name = 'MS Sans Serif'
28 | CompressedFile.Font.Style = []
29 | DefaultSortColumn = 0
30 | EditManager.Font.Charset = DEFAULT_CHARSET
31 | EditManager.Font.Color = clWindowText
32 | EditManager.Font.Height = -11
33 | EditManager.Font.Name = 'MS Sans Serif'
34 | EditManager.Font.Style = []
35 | EncryptedFile.Color = 32832
36 | EncryptedFile.Font.Charset = DEFAULT_CHARSET
37 | EncryptedFile.Font.Color = clWindowText
38 | EncryptedFile.Font.Height = -11
39 | EncryptedFile.Font.Name = 'MS Sans Serif'
40 | EncryptedFile.Font.Style = []
41 | FileSizeFormat = vfsfDefault
42 | Grouped = False
43 | GroupingColumn = 0
44 | PaintInfoGroup.MarginBottom.CaptionIndent = 4
45 | PaintInfoGroup.MarginTop.Visible = False
46 | Sort.Algorithm = esaQuickSort
47 | Sort.AutoSort = True
48 | Selection.AlphaBlendSelRect = True
49 | Selection.EnableDragSelect = True
50 | Selection.MultiSelect = True
51 | TabOrder = 0
52 | ThumbsManager.StorageFilename = 'Thumbnails.album'
53 | OnCustomGrid = VirtualExplorerEasyListview1CustomGrid
54 | end
55 | end
56 |
--------------------------------------------------------------------------------
/Demos/Vertical Icons Custom Draw/Unit1.pas:
--------------------------------------------------------------------------------
1 | unit Unit1;
2 |
3 | interface
4 |
5 | uses
6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 | Dialogs, MPCommonObjects, EasyListview, VirtualExplorerEasyListview;
8 |
9 | type
10 | TForm1 = class(TForm)
11 | VirtualExplorerEasyListview1: TVirtualExplorerEasyListview;
12 | procedure VirtualExplorerEasyListview1CustomGrid(
13 | Sender: TCustomEasyListview; Group: TEasyGroup;
14 | ViewStyle: TEasyListStyle; var Grid: TEasyGridGroupClass);
15 | private
16 | { Private declarations }
17 | public
18 | { Public declarations }
19 | end;
20 |
21 | // Make a grid that is layed out like the List View but has the cell sizing of
22 | // the Icon View
23 | TVerticalIconGridGroup = class(TEasyGridListGroup)
24 | protected
25 | function GetCellSize: TEasyCellSize; override;
26 | end;
27 |
28 | var
29 | Form1: TForm1;
30 |
31 | implementation
32 |
33 | {$R *.dfm}
34 |
35 | type
36 | TCustomVirtualExplorerEasyListviewHack = class(TCustomVirtualExplorerEasyListview);
37 |
38 | { TVerticalIconGridGroup }
39 | function TVerticalIconGridGroup.GetCellSize: TEasyCellSize;
40 | begin
41 | Result := TCustomVirtualExplorerEasyListviewHack(OwnerListview).CellSizes.Icon;
42 | end;
43 |
44 | procedure TForm1.VirtualExplorerEasyListview1CustomGrid(
45 | Sender: TCustomEasyListview; Group: TEasyGroup;
46 | ViewStyle: TEasyListStyle; var Grid: TEasyGridGroupClass);
47 | begin
48 | // Map the Icon style to the Vertical Icon List Style
49 | if ViewStyle = elsIcon then
50 | Grid := TVerticalIconGridGroup;
51 | end;
52 |
53 | end.
54 |
--------------------------------------------------------------------------------
/Demos/Virtual Explorer/About.dfm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/Virtual Explorer/About.dfm
--------------------------------------------------------------------------------
/Demos/Virtual Explorer/About.pas:
--------------------------------------------------------------------------------
1 | unit About;
2 |
3 | interface
4 |
5 | uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
6 | Buttons, ExtCtrls, ShellAPI, Messages;
7 |
8 | type
9 | TAboutBox = class(TForm)
10 | Panel1: TPanel;
11 | ProgramIcon: TImage;
12 | ProductName: TLabel;
13 | Version: TLabel;
14 | OKButton: TButton;
15 | Label2: TLabel;
16 | Timer1: TTimer;
17 | Label3: TLabel;
18 | Label4: TLabel;
19 | Label5: TLabel;
20 | Label6: TLabel;
21 | Label1: TLabel;
22 | Label7: TLabel;
23 | procedure Timer1Timer(Sender: TObject);
24 | procedure FormShow(Sender: TObject);
25 | procedure FormHide(Sender: TObject);
26 | procedure Label3MouseDown(Sender: TObject; Button: TMouseButton;
27 | Shift: TShiftState; X, Y: Integer);
28 | procedure Label4MouseDown(Sender: TObject; Button: TMouseButton;
29 | Shift: TShiftState; X, Y: Integer);
30 | procedure Label5MouseDown(Sender: TObject; Button: TMouseButton;
31 | Shift: TShiftState; X, Y: Integer);
32 | procedure Label1MouseDown(Sender: TObject; Button: TMouseButton;
33 | Shift: TShiftState; X, Y: Integer);
34 | procedure Label7MouseDown(Sender: TObject; Button: TMouseButton;
35 | Shift: TShiftState; X, Y: Integer);
36 | private
37 | { Private declarations }
38 |
39 | public
40 | { Public declarations }
41 |
42 | end;
43 |
44 | var
45 | AboutBox: TAboutBox;
46 |
47 | implementation
48 |
49 | {$R *.DFM}
50 |
51 | procedure TAboutBox.Timer1Timer(Sender: TObject);
52 |
53 | function CheckURL(ALabel: TLabel): Boolean;
54 | begin
55 | if PtInRect(ALabel.ClientRect, ALabel.ScreenToClient(Mouse.CursorPos)) then
56 | begin
57 | Screen.Cursor := crHandPoint;
58 | ALabel.Font.Color := clBlue;
59 | ALabel.Font.Style := ALabel.Font.Style + [fsBold];
60 | Result := True;
61 | end else
62 | begin
63 | ALabel.Font.Color := clBlack;
64 | ALabel.Font.Style := ALabel.Font.Style - [fsBold];
65 | Result := False;
66 | end
67 | end;
68 |
69 | begin
70 | {$B+}
71 | if not (CheckURL(Label3) or CheckURL(Label4) or CheckURL(Label5) or CheckURL(Label1) or CheckURL(Label7)) then
72 | begin
73 | Screen.Cursor := crDefault;
74 | end;
75 | {$B-}
76 | end;
77 |
78 | procedure TAboutBox.FormShow(Sender: TObject);
79 | begin
80 | Timer1.Enabled := True;
81 | ProgramIcon.Picture.LoadFromFile('VST Logo 1.bmp');
82 | end;
83 |
84 | procedure TAboutBox.FormHide(Sender: TObject);
85 | begin
86 | Timer1.Enabled := False;
87 | ProgramIcon.Picture.Bitmap.ReleaseHandle;
88 | end;
89 |
90 | procedure TAboutBox.Label3MouseDown(Sender: TObject; Button: TMouseButton;
91 | Shift: TShiftState; X, Y: Integer);
92 | begin
93 | ShellExecute(Handle, 'open', 'http://Borland.com', '', '', SW_SHOWNORMAL);
94 | end;
95 |
96 | procedure TAboutBox.Label4MouseDown(Sender: TObject; Button: TMouseButton;
97 | Shift: TShiftState; X, Y: Integer);
98 | begin
99 | ShellExecute(Handle, 'open', 'http://www.lischke-online.de/VirtualTreeview.html', '', '', SW_SHOWNORMAL);
100 | end;
101 |
102 | procedure TAboutBox.Label5MouseDown(Sender: TObject; Button: TMouseButton;
103 | Shift: TShiftState; X, Y: Integer);
104 | begin
105 | ShellExecute(Handle, 'open', 'http://groups.yahoo.com/group/VirtualExplorerTree/', '', '', SW_SHOWNORMAL);
106 | end;
107 |
108 | procedure TAboutBox.Label1MouseDown(Sender: TObject; Button: TMouseButton;
109 | Shift: TShiftState; X, Y: Integer);
110 | begin
111 | ShellExecute(Handle, 'open', 'http://www.delphi-gems.com/ThemeManager.html', '', '', SW_SHOWNORMAL);
112 | end;
113 |
114 | procedure TAboutBox.Label7MouseDown(Sender: TObject; Button: TMouseButton;
115 | Shift: TShiftState; X, Y: Integer);
116 | begin
117 | ShellExecute(Handle, 'open', 'mailto: jimdk@mindspring.com', '', '', SW_SHOWNORMAL);
118 | end;
119 |
120 | end.
121 |
122 |
--------------------------------------------------------------------------------
/Demos/Virtual Explorer/VST Logo 1.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/Virtual Explorer/VST Logo 1.bmp
--------------------------------------------------------------------------------
/Demos/Virtual Explorer/VirtualExplorer.dpr:
--------------------------------------------------------------------------------
1 | program VirtualExplorer;
2 |
3 | uses
4 | Forms,
5 | Unit1 in 'Unit1.pas' {Form1},
6 | About in 'About.pas' {AboutBox};
7 |
8 | {$R *.RES}
9 |
10 | begin
11 | Application.Initialize;
12 | Application.Title := 'Virtual Explorer Demo for VirtualShellTools';
13 | Application.CreateForm(TForm1, Form1);
14 | Application.CreateForm(TAboutBox, AboutBox);
15 | Application.Run;
16 | end.
17 |
--------------------------------------------------------------------------------
/Demos/VirtualDropStack/DropStackProject.dpr:
--------------------------------------------------------------------------------
1 | program DropStackProject;
2 |
3 | uses
4 | Forms,
5 | Unit1 in 'Unit1.pas' {Form1};
6 |
7 | {$R *.res}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.CreateForm(TForm1, Form1);
12 | Application.Run;
13 | end.
14 |
--------------------------------------------------------------------------------
/Demos/VirtualDropStack/DropStackProject.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/VirtualDropStack/DropStackProject.res
--------------------------------------------------------------------------------
/Demos/VirtualDropStack/Unit1.dfm:
--------------------------------------------------------------------------------
1 | object Form1: TForm1
2 | Left = 236
3 | Top = 153
4 | Width = 696
5 | Height = 480
6 | Caption = 'Form1'
7 | Color = clBtnFace
8 | Font.Charset = DEFAULT_CHARSET
9 | Font.Color = clWindowText
10 | Font.Height = -11
11 | Font.Name = 'MS Sans Serif'
12 | Font.Style = []
13 | OldCreateOrder = False
14 | OnShow = FormShow
15 | PixelsPerInch = 96
16 | TextHeight = 13
17 | object Splitter1: TSplitter
18 | Left = 185
19 | Top = 0
20 | Width = 6
21 | Height = 444
22 | ResizeStyle = rsUpdate
23 | end
24 | object Panel1: TPanel
25 | Left = 0
26 | Top = 0
27 | Width = 185
28 | Height = 444
29 | Align = alLeft
30 | TabOrder = 0
31 | object Label1: TLabel
32 | Left = 1
33 | Top = 1
34 | Width = 183
35 | Height = 39
36 | Align = alTop
37 | Caption =
38 | 'Drop File Objects from the Listview to the DropStack Window from' +
39 | ' one or more folders.'
40 | WordWrap = True
41 | end
42 | object Label2: TLabel
43 | Left = 1
44 | Top = 53
45 | Width = 183
46 | Height = 78
47 | Align = alTop
48 | Caption =
49 | 'Browse to some other folder in the Listview and drag the files f' +
50 | 'rom the DropStack to the Listview. Hold the normal modifider ke' +
51 | 'ys (CTRL, ALT, SHIFT) to copy, move or link just as in Explorer.'
52 | WordWrap = True
53 | end
54 | object Label3: TLabel
55 | Left = 1
56 | Top = 40
57 | Width = 183
58 | Height = 13
59 | Align = alTop
60 | end
61 | object Label4: TLabel
62 | Left = 1
63 | Top = 131
64 | Width = 183
65 | Height = 13
66 | Align = alTop
67 | end
68 | object Label5: TLabel
69 | Left = 1
70 | Top = 144
71 | Width = 183
72 | Height = 78
73 | Align = alTop
74 | Caption =
75 | 'WARNING: Only the references to the objects are saved in the Dro' +
76 | 'pStack Window. The original files MUST be available when the ob' +
77 | 'jects are dragged out of the DropStack Window.'
78 | WordWrap = True
79 | end
80 | object Panel2: TPanel
81 | Left = 1
82 | Top = 222
83 | Width = 183
84 | Height = 72
85 | Align = alTop
86 | TabOrder = 0
87 | object CheckBox1: TCheckBox
88 | Left = 84
89 | Top = 8
90 | Width = 85
91 | Height = 17
92 | Caption = 'Show Hint'
93 | TabOrder = 0
94 | OnClick = CheckBox1Click
95 | end
96 | object Button1: TButton
97 | Left = 4
98 | Top = 8
99 | Width = 75
100 | Height = 25
101 | Caption = 'Clear'
102 | TabOrder = 1
103 | OnClick = Button1Click
104 | end
105 | object ComboBox1: TComboBox
106 | Left = 8
107 | Top = 40
108 | Width = 145
109 | Height = 21
110 | Style = csDropDownList
111 | ItemHeight = 13
112 | TabOrder = 2
113 | OnChange = ComboBox1Change
114 | Items.Strings = (
115 | 'Icon'
116 | 'SmallIcon'
117 | 'elsList'
118 | 'Report'
119 | 'Thumbnail'
120 | 'Tile')
121 | end
122 | end
123 | object VirtualDropStack1: TVirtualDropStack
124 | Left = 1
125 | Top = 294
126 | Width = 183
127 | Height = 149
128 | Align = alClient
129 | BevelKind = bkTile
130 | DragManager.Enabled = True
131 | Selection.EnableDragSelect = True
132 | Selection.MultiSelect = True
133 | Selection.UseFocusRect = False
134 | TabOrder = 1
135 | end
136 | end
137 | object VirtualExplorerEasyListview1: TVirtualExplorerEasyListview
138 | Left = 191
139 | Top = 0
140 | Width = 489
141 | Height = 444
142 | Active = True
143 | Align = alClient
144 | BevelKind = bkTile
145 | CompressedFile.Color = clBlue
146 | CompressedFile.Font.Charset = DEFAULT_CHARSET
147 | CompressedFile.Font.Color = clWindowText
148 | CompressedFile.Font.Height = -11
149 | CompressedFile.Font.Name = 'MS Sans Serif'
150 | CompressedFile.Font.Style = []
151 | DefaultSortColumn = 0
152 | EditManager.Font.Charset = DEFAULT_CHARSET
153 | EditManager.Font.Color = clWindowText
154 | EditManager.Font.Height = -11
155 | EditManager.Font.Name = 'MS Sans Serif'
156 | EditManager.Font.Style = []
157 | EncryptedFile.Color = clGreen
158 | EncryptedFile.Font.Charset = DEFAULT_CHARSET
159 | EncryptedFile.Font.Color = clWindowText
160 | EncryptedFile.Font.Height = -11
161 | EncryptedFile.Font.Name = 'MS Sans Serif'
162 | EncryptedFile.Font.Style = []
163 | ExtensionColorCode = False
164 | DragManager.Enabled = True
165 | FileSizeFormat = vfsfDefault
166 | Grouped = False
167 | GroupingColumn = 0
168 | Options = [eloBrowseExecuteFolder, eloBrowseExecuteFolderShortcut, eloBrowseExecuteZipFolder, eloExecuteOnDblClick, eloThreadedImages, eloThreadedDetails, eloChangeNotifierThread]
169 | PaintInfoGroup.MarginBottom.CaptionIndent = 4
170 | PaintInfoGroup.MarginTop.Visible = False
171 | Sort.Algorithm = esaQuickSort
172 | Sort.AutoSort = True
173 | Selection.AlphaBlend = True
174 | Selection.AlphaBlendSelRect = True
175 | Selection.EnableDragSelect = True
176 | Selection.FullItemPaint = True
177 | Selection.Gradient = True
178 | Selection.MultiSelect = True
179 | Selection.RoundRect = True
180 | Selection.TextColor = clBlue
181 | TabOrder = 1
182 | ThumbsManager.StorageFilename = 'Thumbnails.album'
183 | end
184 | end
185 |
--------------------------------------------------------------------------------
/Demos/VirtualDropStack/Unit1.pas:
--------------------------------------------------------------------------------
1 | unit Unit1;
2 |
3 | interface
4 |
5 | uses
6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 | Dialogs, StdCtrls, MPCommonObjects, EasyListview,
8 | VirtualExplorerEasyListview, ExtCtrls;
9 |
10 | type
11 | TForm1 = class(TForm)
12 | Panel1: TPanel;
13 | VirtualExplorerEasyListview1: TVirtualExplorerEasyListview;
14 | Label1: TLabel;
15 | Label2: TLabel;
16 | Label3: TLabel;
17 | Label4: TLabel;
18 | Label5: TLabel;
19 | Panel2: TPanel;
20 | CheckBox1: TCheckBox;
21 | Button1: TButton;
22 | ComboBox1: TComboBox;
23 | Splitter1: TSplitter;
24 | VirtualDropStack1: TVirtualDropStack;
25 | procedure CheckBox1Click(Sender: TObject);
26 | procedure Button1Click(Sender: TObject);
27 | procedure FormShow(Sender: TObject);
28 | procedure ComboBox1Change(Sender: TObject);
29 | private
30 | { Private declarations }
31 | public
32 | { Public declarations }
33 | end;
34 |
35 | var
36 | Form1: TForm1;
37 |
38 | implementation
39 |
40 | {$R *.dfm}
41 |
42 | procedure TForm1.CheckBox1Click(Sender: TObject);
43 | begin
44 | VirtualDropStack1.ShowHint := True;
45 | end;
46 |
47 | procedure TForm1.Button1Click(Sender: TObject);
48 | begin
49 | VirtualDropStack1.Items.Clear
50 | end;
51 |
52 | procedure TForm1.FormShow(Sender: TObject);
53 | begin
54 | ComboBox1.ItemIndex := 0;
55 | end;
56 |
57 | procedure TForm1.ComboBox1Change(Sender: TObject);
58 | begin
59 | VirtualDropStack1.View := TEasyListStyle(ComboBox1.ItemIndex)
60 | end;
61 |
62 | end.
63 |
--------------------------------------------------------------------------------
/Demos/VirtualEasyListModeView/EasyListModeViewProjectGroup.bpg:
--------------------------------------------------------------------------------
1 | #------------------------------------------------------------------------------
2 | VERSION = BWS.01
3 | #------------------------------------------------------------------------------
4 | !ifndef ROOT
5 | ROOT = $(MAKEDIR)\..
6 | !endif
7 | #------------------------------------------------------------------------------
8 | MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$**
9 | DCC = $(ROOT)\bin\dcc32.exe $**
10 | BRCC = $(ROOT)\bin\brcc32.exe $**
11 | #------------------------------------------------------------------------------
12 | PROJECTS = EasyListviewD7.bpl EasyListviewD7D.bpl VirtualShellToolsD7.bpl \
13 | VirtualShellToolsD7D.bpl VirtualExplorerListModeViewProject.exe
14 | #------------------------------------------------------------------------------
15 | default: $(PROJECTS)
16 | #------------------------------------------------------------------------------
17 |
18 | VirtualExplorerListModeViewProject.exe: VirtualExplorerListModeViewProject.dpr
19 | $(DCC)
20 |
21 | EasyListviewD7.bpl: ..\..\..\EasyListview\Delphi\EasyListviewD7.dpk
22 | $(DCC)
23 |
24 | EasyListviewD7D.bpl: ..\..\..\EasyListview\Delphi\EasyListviewD7D.dpk
25 | $(DCC)
26 |
27 | VirtualShellToolsD7.bpl: ..\..\Delphi\VirtualShellToolsD7.dpk
28 | $(DCC)
29 |
30 | VirtualShellToolsD7D.bpl: ..\..\Delphi\VirtualShellToolsD7D.dpk
31 | $(DCC)
32 |
33 |
34 |
--------------------------------------------------------------------------------
/Demos/VirtualEasyListModeView/Unit1.dfm:
--------------------------------------------------------------------------------
1 | object Form1: TForm1
2 | Left = 372
3 | Top = 233
4 | Width = 696
5 | Height = 480
6 | Caption = 'Form1'
7 | Color = clWindow
8 | Font.Charset = DEFAULT_CHARSET
9 | Font.Color = clWindowText
10 | Font.Height = -11
11 | Font.Name = 'MS Shell Dlg 2'
12 | Font.Style = []
13 | OldCreateOrder = False
14 | OnShow = FormShow
15 | PixelsPerInch = 96
16 | TextHeight = 13
17 | object VirtualExplorerCombobox1: TVirtualExplorerCombobox
18 | Left = 0
19 | Top = 41
20 | Width = 680
21 | Active = True
22 | Align = alTop
23 | TabOrder = 0
24 | Path = 'VirtualExplorerCombobox1'
25 | TextType = ecbtFullPath
26 | end
27 | object VirtualColumnModeView1: TVirtualColumnModeView
28 | Left = 0
29 | Top = 64
30 | Width = 680
31 | Height = 380
32 | HorzScrollBar.Tracking = True
33 | VertScrollBar.Smooth = True
34 | VertScrollBar.Tracking = True
35 | Align = alClient
36 | ParentColor = False
37 | TabOrder = 1
38 | ExplorerCombobox = VirtualExplorerCombobox1
39 | GroupingColumn = 0
40 | SmoothScrollDelta = 0
41 | end
42 | object Panel1: TPanel
43 | Left = 0
44 | Top = 0
45 | Width = 680
46 | Height = 41
47 | Align = alTop
48 | TabOrder = 2
49 | object CheckBox1: TCheckBox
50 | Left = 16
51 | Top = 8
52 | Width = 97
53 | Height = 17
54 | Caption = 'Active'
55 | TabOrder = 0
56 | OnClick = CheckBox1Click
57 | end
58 | end
59 | end
60 |
--------------------------------------------------------------------------------
/Demos/VirtualEasyListModeView/Unit1.pas:
--------------------------------------------------------------------------------
1 | unit Unit1;
2 |
3 | interface
4 |
5 | uses
6 | Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
7 | Dialogs, ExtCtrls, VirtualExplorerEasyListModeview, VirtualTrees,
8 | VirtualExplorerTree, StdCtrls, ComCtrls, MPCommonObjects, EasyListview,
9 | VirtualExplorerEasyListview;
10 |
11 | type
12 | TForm1 = class(TForm)
13 | VirtualExplorerCombobox1: TVirtualExplorerCombobox;
14 | VirtualColumnModeView1: TVirtualColumnModeView;
15 | Panel1: TPanel;
16 | CheckBox1: TCheckBox;
17 | procedure CheckBox1Click(Sender: TObject);
18 | procedure VirtualExplorerCombobox1Change(Sender: TObject);
19 | procedure FormShow(Sender: TObject);
20 | private
21 | { Private declarations }
22 | public
23 | { Public declarations }
24 | end;
25 |
26 | var
27 | Form1: TForm1;
28 |
29 | implementation
30 |
31 | {$R *.dfm}
32 |
33 | procedure TForm1.CheckBox1Click(Sender: TObject);
34 | begin
35 | VirtualColumnModeView1.Active := CheckBox1.Checked
36 | end;
37 |
38 | procedure TForm1.VirtualExplorerCombobox1Change(Sender: TObject);
39 | begin
40 | VirtualColumnModeView1.Path := VirtualExplorerCombobox1.EditNamespace.Clone(True)
41 | end;
42 |
43 | procedure TForm1.FormShow(Sender: TObject);
44 | begin
45 | // VirtualColumnModeView1.Color := clWindow;
46 | end;
47 |
48 | end.
49 |
--------------------------------------------------------------------------------
/Demos/VirtualEasyListModeView/VirtualExplorerListModeViewProject.dpr:
--------------------------------------------------------------------------------
1 | program VirtualExplorerListModeViewProject;
2 |
3 | uses
4 | Forms,
5 | Unit1 in 'Unit1.pas' {Form1},
6 | VirtualExplorerEasyListModeview in '..\..\Source\VirtualExplorerEasyListModeview.pas';
7 |
8 | {$R *.res}
9 |
10 | begin
11 | Application.Initialize;
12 | Application.CreateForm(TForm1, Form1);
13 | Application.Run;
14 | end.
15 |
--------------------------------------------------------------------------------
/Demos/VirtualEasyListModeView/VirtualExplorerListModeViewProject.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/VirtualEasyListModeView/VirtualExplorerListModeViewProject.res
--------------------------------------------------------------------------------
/Demos/VirtualEasyListviewCustomContextMenu/Unit1.dfm:
--------------------------------------------------------------------------------
1 | object Form1: TForm1
2 | Left = 281
3 | Top = 110
4 | Width = 696
5 | Height = 480
6 | Caption = 'Form1'
7 | Color = clBtnFace
8 | Font.Charset = DEFAULT_CHARSET
9 | Font.Color = clWindowText
10 | Font.Height = -11
11 | Font.Name = 'MS Sans Serif'
12 | Font.Style = []
13 | OldCreateOrder = False
14 | PixelsPerInch = 96
15 | TextHeight = 13
16 | object VirtualExplorerEasyListview1: TVirtualExplorerEasyListview
17 | Left = 0
18 | Top = 0
19 | Width = 688
20 | Height = 446
21 | Active = True
22 | Align = alClient
23 | DefaultSortColumn = 0
24 | Font.Charset = DEFAULT_CHARSET
25 | Font.Color = clWindowText
26 | Font.Height = -11
27 | Font.Name = 'MS Shell Dlg 2'
28 | Font.Style = []
29 | Grouped = False
30 | GroupingColumn = 0
31 | GroupFont.Charset = DEFAULT_CHARSET
32 | GroupFont.Color = clWindowText
33 | GroupFont.Height = -11
34 | GroupFont.Name = 'MS Shell Dlg 2'
35 | GroupFont.Style = []
36 | Header.Font.Charset = DEFAULT_CHARSET
37 | Header.Font.Color = clWindowText
38 | Header.Font.Height = -11
39 | Header.Font.Name = 'MS Shell Dlg 2'
40 | Header.Font.Style = []
41 | Options = [eloBrowseExecuteFolder, eloBrowseExecuteFolderShortcut, eloBrowseExecuteZipFolder, eloExecuteOnDblClick, eloThreadedImages, eloThreadedDetails, eloShellContextMenus]
42 | PaintInfoGroup.MarginBottom.CaptionIndent = 4
43 | PaintInfoGroup.MarginTop.Visible = False
44 | ParentFont = False
45 | Sort.AutoSort = True
46 | TabOrder = 0
47 | ThumbsManager.StorageFilename = 'Thumbnails.album'
48 | View = elsIcon
49 | OnContextMenuCmd = VirtualExplorerEasyListview1ContextMenuCmd
50 | OnContextMenuShow = VirtualExplorerEasyListview1ContextMenuShow
51 | end
52 | end
53 |
--------------------------------------------------------------------------------
/Demos/VirtualEasyListviewCustomContextMenu/Unit1.pas:
--------------------------------------------------------------------------------
1 | unit Unit1;
2 |
3 | interface
4 |
5 | uses
6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 | Dialogs, MPCommonObjects, EasyListview, VirtualExplorerEasyListview,
8 | MPCommonUtilities, MPShellUtilities;
9 |
10 | type
11 | TForm1 = class(TForm)
12 | VirtualExplorerEasyListview1: TVirtualExplorerEasyListview;
13 | procedure VirtualExplorerEasyListview1ContextMenuShow(
14 | Sender: TCustomVirtualExplorerEasyListview; Namespace: TNamespace;
15 | Menu: HMENU; var Allow: Boolean);
16 | procedure VirtualExplorerEasyListview1ContextMenuCmd(
17 | Sender: TCustomVirtualExplorerEasyListview; Namespace: TNamespace;
18 | Verb: string; MenuItemID: Integer; var Handled: Boolean);
19 | private
20 | { Private declarations }
21 | public
22 | { Public declarations }
23 | CustomMenuID: Integer;
24 | end;
25 |
26 | var
27 | Form1: TForm1;
28 |
29 | implementation
30 |
31 | {$R *.dfm}
32 |
33 | procedure TForm1.VirtualExplorerEasyListview1ContextMenuShow(
34 | Sender: TCustomVirtualExplorerEasyListview; Namespace: TNamespace;
35 | Menu: HMENU; var Allow: Boolean);
36 | begin
37 | // Add to the end;
38 | CustomMenuID := AddContextMenuItem(Menu, '-', -1);
39 | CustomMenuID := AddContextMenuItem(Menu, 'Custom Menu', -1);
40 | end;
41 |
42 | procedure TForm1.VirtualExplorerEasyListview1ContextMenuCmd(
43 | Sender: TCustomVirtualExplorerEasyListview; Namespace: TNamespace;
44 | Verb: string; MenuItemID: Integer; var Handled: Boolean);
45 | begin
46 | if MenuItemID = CustomMenuID then
47 | begin
48 | beep;
49 | end
50 | end;
51 |
52 | end.
53 |
--------------------------------------------------------------------------------
/Demos/VirtualEasyListviewCustomContextMenu/VirtaulExplorerEasyListviewMEnuProject.dpr:
--------------------------------------------------------------------------------
1 | program VirtaulExplorerEasyListviewMEnuProject;
2 |
3 | uses
4 | Forms,
5 | Unit1 in 'Unit1.pas' {Form1};
6 |
7 | {$R *.res}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.CreateForm(TForm1, Form1);
12 | Application.Run;
13 | end.
14 |
--------------------------------------------------------------------------------
/Demos/VirtualExplorerEasyListview/VEasyListviewProject.dpr:
--------------------------------------------------------------------------------
1 | program VEasyListviewProject;
2 |
3 | uses
4 | Forms,
5 | SysUtils,
6 | Unit1 in 'Unit1.pas' {Form1};
7 |
8 | {$R *.res}
9 |
10 | begin
11 | Application.Initialize;
12 | Application.CreateForm(TForm1, Form1);
13 | Application.Run;
14 | end.
15 |
--------------------------------------------------------------------------------
/Demos/VirtualExplorerEasyListview/VEasyListviewProject.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/VirtualExplorerEasyListview/VEasyListviewProject.res
--------------------------------------------------------------------------------
/Demos/VirtualShellToolsDemos.bpg:
--------------------------------------------------------------------------------
1 | #------------------------------------------------------------------------------
2 | VERSION = BWS.01
3 | #------------------------------------------------------------------------------
4 | !ifndef ROOT
5 | ROOT = $(MAKEDIR)\..
6 | !endif
7 | #------------------------------------------------------------------------------
8 | MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$**
9 | DCC = $(ROOT)\bin\dcc32.exe $**
10 | BRCC = $(ROOT)\bin\brcc32.exe $**
11 | #------------------------------------------------------------------------------
12 | PROJECTS = ShellDetailsCustomColumns.exe AutoCompleteComponentProject.exe \
13 | CheckBoxes.exe VET.exe ShellLinkShortcuts.exe ShellNotify.exe \
14 | ShellColumnStateStoring.exe ShellNew_NewFileMenu.exe ShellToolbars.exe \
15 | VirtualExplorer.exe ShellHistory.exe FolderSizeDemo.exe ExplorerCheckboxes.exe \
16 | FileSearch.exe SendToMenuProject.exe UserDataProject.exe \
17 | DOSCommandLineProject.exe CustomSortProject.exe VEasyListviewProject.exe \
18 | EasyListviewPrevFolderProject.exe FileSearchProject.exe BkGndMenuProject.exe
19 | #------------------------------------------------------------------------------
20 | default: $(PROJECTS)
21 | #------------------------------------------------------------------------------
22 |
23 | ShellDetailsCustomColumns.exe: Adding Custom Columns Using ShellDetails\ShellDetailsCustomColumns.dpr
24 | $(DCC)
25 |
26 | CheckBoxes.exe: CheckBoxes\CheckBoxes.dpr
27 | $(DCC)
28 |
29 | VET.exe: Overview\VET.dpr
30 | $(DCC)
31 |
32 | ShellLinkShortcuts.exe: Shell Link Shortcuts\ShellLinkShortcuts.dpr
33 | $(DCC)
34 |
35 | ShellNotify.exe: Shell Notify\ShellNotify.dpr
36 | $(DCC)
37 |
38 | ShellColumnStateStoring.exe: ShellColumn State Storing\ShellColumnStateStoring.dpr
39 | $(DCC)
40 |
41 | ShellNew_NewFileMenu.exe: ShellNew (New File) Menu\ShellNew_NewFileMenu.dpr
42 | $(DCC)
43 |
44 | ShellToolbars.exe: ShellToolbars\ShellToolbars.dpr
45 | $(DCC)
46 |
47 | VirtualExplorer.exe: Virtual Explorer\VirtualExplorer.dpr
48 | $(DCC)
49 |
50 | ShellHistory.exe: Shell History\ShellHistory.dpr
51 | $(DCC)
52 |
53 | FolderSizeDemo.exe: FolderSize\FolderSizeDemo.dpr
54 | $(DCC)
55 |
56 | AutoCompleteComponentProject.exe: AutoComplete Component\AutoCompleteComponentProject.dpr
57 | $(DCC)
58 |
59 | ExplorerCheckboxes.exe: Explorer CheckBoxes\ExplorerCheckboxes.dpr
60 | $(DCC)
61 |
62 | FileSearch.exe: File Search\FileSearch.dpr
63 | $(DCC)
64 |
65 | SendToMenuProject.exe: SendTo Menu\SendToMenuProject.dpr
66 | $(DCC)
67 |
68 | UserDataProject.exe: User Data\UserDataProject.dpr
69 | $(DCC)
70 |
71 | DOSCommandLineProject.exe: DOS Shell CommandLine\DOSCommandLineProject.dpr
72 | $(DCC)
73 |
74 | CustomSortProject.exe: Custom Sorting\CustomSortProject.dpr
75 | $(DCC)
76 |
77 | VEasyListviewProject.exe: VirtualExplorerEasyListview\VEasyListviewProject.dpr
78 | $(DCC)
79 |
80 | EasyListviewPrevFolderProject.exe: PrevDirNode EasyListview\EasyListviewPrevFolderProject.dpr
81 | $(DCC)
82 |
83 | FileSearchProject.exe: FileSearch\FileSearchProject.dpr
84 | $(DCC)
85 |
86 | BkGndMenuProject.exe: Backgnd Menu\BkGndMenuProject.dpr
87 | $(DCC)
88 |
89 |
90 |
--------------------------------------------------------------------------------
/Demos/Wow64 File Redirection/Unit1.dfm:
--------------------------------------------------------------------------------
1 | object Form1: TForm1
2 | Left = 369
3 | Top = 221
4 | Width = 792
5 | Height = 615
6 | Caption = 'Form1'
7 | Color = clBtnFace
8 | Font.Charset = DEFAULT_CHARSET
9 | Font.Color = clWindowText
10 | Font.Height = -11
11 | Font.Name = 'MS Sans Serif'
12 | Font.Style = []
13 | OldCreateOrder = False
14 | DesignSize = (
15 | 776
16 | 577)
17 | PixelsPerInch = 96
18 | TextHeight = 13
19 | object Label1: TLabel
20 | Left = 48
21 | Top = 40
22 | Width = 689
23 | Height = 13
24 | Caption =
25 | 'If VSTools is compiled into a 32 Bit application access to syste' +
26 | 'm folders that are reserved for 64 Bit files are redirected to a' +
27 | ' equivalient 32 Bit Folder'
28 | end
29 | object Label2: TLabel
30 | Left = 48
31 | Top = 64
32 | Width = 650
33 | Height = 13
34 | Caption =
35 | 'By disabling redirection a 32 Bit application can access the 64 ' +
36 | 'Bit folder. In 64 Bit Windows the System32 Folder is reserved f' +
37 | 'or 64 Bit files'
38 | end
39 | object Label3: TLabel
40 | Left = 48
41 | Top = 88
42 | Width = 658
43 | Height = 13
44 | Caption =
45 | 'and will typically redirect into the SysWow64 Bit folder. Use t' +
46 | 'he Disable Wow64 Redirection flag in VSTools to access 64 Bit sy' +
47 | 'stem folders.'
48 | end
49 | object VirtualExplorerEasyListview1: TVirtualExplorerEasyListview
50 | Left = 16
51 | Top = 112
52 | Width = 737
53 | Height = 449
54 | Active = True
55 | Anchors = [akLeft, akTop, akRight, akBottom]
56 | CompressedFile.Color = clBlue
57 | CompressedFile.Font.Charset = DEFAULT_CHARSET
58 | CompressedFile.Font.Color = clWindowText
59 | CompressedFile.Font.Height = -11
60 | CompressedFile.Font.Name = 'MS Sans Serif'
61 | CompressedFile.Font.Style = []
62 | DefaultSortColumn = 0
63 | EditManager.Font.Charset = DEFAULT_CHARSET
64 | EditManager.Font.Color = clWindowText
65 | EditManager.Font.Height = -11
66 | EditManager.Font.Name = 'MS Sans Serif'
67 | EditManager.Font.Style = []
68 | EncryptedFile.Color = clGreen
69 | EncryptedFile.Font.Charset = DEFAULT_CHARSET
70 | EncryptedFile.Font.Color = clWindowText
71 | EncryptedFile.Font.Height = -11
72 | EncryptedFile.Font.Name = 'MS Sans Serif'
73 | EncryptedFile.Font.Style = []
74 | FileSizeFormat = vfsfDefault
75 | Grouped = False
76 | GroupingColumn = 0
77 | PaintInfoGroup.MarginBottom.CaptionIndent = 4
78 | PaintInfoGroup.MarginTop.Visible = False
79 | Sort.Algorithm = esaQuickSort
80 | Sort.AutoSort = True
81 | TabOrder = 0
82 | ThumbsManager.StorageFilename = 'Thumbnails.album'
83 | end
84 | object CheckBox1: TCheckBox
85 | Left = 24
86 | Top = 16
87 | Width = 233
88 | Height = 17
89 | Caption = 'Disable WOW64 Bit File Redirecction'
90 | TabOrder = 1
91 | OnClick = CheckBox1Click
92 | end
93 | end
94 |
--------------------------------------------------------------------------------
/Demos/Wow64 File Redirection/Unit1.pas:
--------------------------------------------------------------------------------
1 | unit Unit1;
2 |
3 | interface
4 |
5 | uses
6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 | Dialogs, StdCtrls, Buttons, MPCommonObjects, EasyListview,
8 | VirtualExplorerEasyListview, MPCommonUtilities;
9 |
10 | type
11 | TForm1 = class(TForm)
12 | VirtualExplorerEasyListview1: TVirtualExplorerEasyListview;
13 | CheckBox1: TCheckBox;
14 | Label1: TLabel;
15 | Label2: TLabel;
16 | Label3: TLabel;
17 | procedure CheckBox1Click(Sender: TObject);
18 | private
19 | { Private declarations }
20 | public
21 | { Public declarations }
22 | end;
23 |
24 | var
25 | Form1: TForm1;
26 |
27 | implementation
28 |
29 | {$R *.dfm}
30 |
31 | procedure TForm1.CheckBox1Click(Sender: TObject);
32 | begin
33 | Wow64Enabled := CheckBox1.Checked;
34 | VirtualExplorerEasyListview1.Rebuild(True);
35 | end;
36 |
37 | end.
38 |
--------------------------------------------------------------------------------
/Demos/Wow64 File Redirection/Wow64FileRedirection.dpr:
--------------------------------------------------------------------------------
1 | program Wow64FileRedirection;
2 |
3 | uses
4 | Forms,
5 | Unit1 in 'Unit1.pas' {Form1};
6 |
7 | {$R *.res}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.CreateForm(TForm1, Form1);
12 | Application.Run;
13 | end.
14 |
--------------------------------------------------------------------------------
/Demos/Wow64 File Redirection/Wow64FileRedirection.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Demos/Wow64 File Redirection/Wow64FileRedirection.res
--------------------------------------------------------------------------------
/Design/VirtualShellToolsReg.dcr:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Design/VirtualShellToolsReg.dcr
--------------------------------------------------------------------------------
/Design/VirtualShellToolsReg.pas:
--------------------------------------------------------------------------------
1 | unit VirtualShellToolsReg;
2 |
3 | // Version 2.3.0
4 | //
5 | // The contents of this file are subject to the Mozilla Public License
6 | // Version 1.1 (the "License"); you may not use this file except in compliance
7 | // with the License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
8 | //
9 | // Alternatively, you may redistribute this library, use and/or modify it under the terms of the
10 | // GNU Lesser General Public License as published by the Free Software Foundation;
11 | // either version 2.1 of the License, or (at your option) any later version.
12 | // You may obtain a copy of the LGPL at http://www.gnu.org/copyleft/.
13 | //
14 | // Software distributed under the License is distributed on an "AS IS" basis,
15 | // WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the
16 | // specific language governing rights and limitations under the License.
17 | //
18 | // The initial developer of this code is Jim Kueneman
19 | //
20 | //----------------------------------------------------------------------------
21 |
22 |
23 | interface
24 |
25 | {$include ..\Include\AddIns.inc}
26 |
27 | // If you are upgrading from VSTools 0.9.xx or earlier uncomment the conditional
28 | // define. By doing so the old components ExplorerTreeview, ExplorerListview,
29 | // and ExplorerCombobox will also be installed in the palette. This way your
30 | // projects can be opened then show the form as text and change the TExplorerXXXX
31 | // object types to TVirtualExplorerXXXXX then let Delphi update what it needs to
32 | // by answering yes to the questions when the text is then shown again as a Form.
33 | // I updated all the demos this way and it was suprisingly painless.
34 |
35 | uses
36 | Windows, Messages, SysUtils, Classes, Controls,
37 | VirtualShellToolbar, VirtualExplorerTree, StdCtrls, MPShellUtilities,
38 | VirtualShellNewMenu, AppletsAndWizards, VirtualShellHistory,
39 | VirtualShellAutoComplete, VirtualSendToMenu, VirtualRedirector,
40 | VirtualExplorerEasyListview, VirtualFileSearch,
41 | VirtualExplorerEasyListModeview,
42 | VirtualBreadCrumbBar,
43 | DesignIntf, DesignEditors;
44 |
45 | procedure Register;
46 |
47 | implementation
48 |
49 | const
50 | sELVEnumerationCategory = 'Enumeration';
51 | sELVStorageCategory = 'Storage';
52 | sELVCustomCategory = 'Custom Columns and Groups';
53 | sELVRootCategory = 'Root Namespace';
54 | sELVShellCategory = 'Shell';
55 | sELVCustomClassesCategory = 'Custom Object Classes';
56 |
57 | procedure Register;
58 | begin
59 | // Unicode Controls
60 | RegisterComponents('Virtual Controls', [TWideSpeedButton]);
61 | RegisterComponents('VirtualShellTools', [TVirtualExplorerComboBox]);
62 |
63 | // Virtual Explorer Tree Components
64 | RegisterComponents('VirtualShellTools', [TVirtualExplorerTree, TVirtualExplorerTreeview,
65 | TVirtualExplorerListview, TVirtualDropStack]);
66 |
67 | // Virtual Virtual Shell Toolbar Components
68 | RegisterComponents('VirtualShellTools', [TVirtualShellToolbar, TVirtualDriveToolbar,
69 | TVirtualSpecialFolderToolbar]);
70 |
71 | // Assorted ShellTools Components
72 | RegisterComponents('VirtualShellTools', [TVirtualShellLink, TVirtualShellNewMenu,
73 | TVirtualShellHistory, TVirtualShellMRU, TVirtualShellAutoComplete, TVirtualSendToMenu,
74 | TVirtualFileSearch, TVirtualShellMultiParentContextMenu, TVirtualShellBackgroundContextMenu,
75 | TVirtualBreadCrumbBar]);
76 |
77 | // Applets, Wizards, and Shell Dialogs Components
78 | RegisterComponents('VirtualShellTools', [TVirtualRunFileDialog]);
79 |
80 | // Redirector Components
81 | RegisterComponents('VirtualShellTools', [TVirtualCommandLineRedirector,
82 | TVirtualRedirector]);
83 |
84 | // EasyListview Components
85 | RegisterComponents('VirtualShellTools', [TVirtualExplorerEasyListview,
86 | TVirtualMultiPathExplorerEasyListview, TVirtualColumnModeView]);
87 |
88 | RegisterPropertiesInCategory(sELVEnumerationCategory, TCustomVirtualExplorerEasyListview,
89 | ['OnEnum*'] );
90 |
91 | RegisterPropertiesInCategory(sELVStorageCategory, TCustomVirtualExplorerEasyListview,
92 | ['*Storage*'] );
93 |
94 | RegisterPropertiesInCategory(sELVCustomCategory, TCustomVirtualExplorerEasyListview,
95 | ['OnCustom*'] );
96 |
97 | RegisterPropertiesInCategory(sELVRootCategory, TCustomVirtualExplorerEasyListview,
98 | ['OnRoot*',
99 | 'OnInvalidRoot*'] );
100 |
101 | RegisterPropertiesInCategory(sELVShellCategory, TCustomVirtualExplorerEasyListview,
102 | ['OnShell*'] );
103 |
104 | RegisterPropertiesInCategory(sELVCustomClassesCategory, TCustomVirtualExplorerEasyListview,
105 | ['On*Class'] );
106 | end;
107 |
108 | end.
109 |
110 |
111 |
--------------------------------------------------------------------------------
/Docs/CBuilder 6 Issues.txt:
--------------------------------------------------------------------------------
1 |
2 | Issues with C++Builder 6
3 |
4 | 1) ThemeManager is not put on the Include Path for the project automatically.
5 |
6 | Project > Options > Directories/Conditionals
7 |
8 | Browse to the install path for
9 |
10 | ${ThemeManagerInstallPath}\Source
11 |
12 | and add it to the list.
13 |
14 | 2) The uxtheme.h file has bug in it. Replace the version that comes with
15 | C++Builder 6 with the supplied version.
16 |
17 | ${CBuilderINstallPath}\Include\uxtheme.h
18 |
19 |
20 | Drop a VirtualExplorerTree component on a form and compile!
21 |
22 | Enjoy,
23 | Jim
--------------------------------------------------------------------------------
/Docs/Unicode Compatibilty.txt:
--------------------------------------------------------------------------------
1 | The following function/routines are not 100% WideString implemented:
2 |
3 |
4 | //////
5 | MPShellUtilities.pas
6 | /////
7 |
8 | function ConvertLocalStrToTFileTime(LocalStr: WideString; var FileTime: TFileTime): Boolean;
9 |
10 | function ConvertTFileTimeToLocalStr(AFileTime: TFILETIME): WideString;
11 |
12 | Format
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/Include/Addins.inc:
--------------------------------------------------------------------------------
1 | // The packages must be rebuilt to make the changes in this file active
2 |
3 | // -----------------------------------------------------------------------------
4 | // TOOLBAR 2000 and TBX SUPPORT FOR VIRTUALSHELLHISTORY MENU
5 | // -----------------------------------------------------------------------------
6 | //
7 | // Uncomment out the conditional define for Toolbar 2000 and TBX Toolbar support
8 | //
9 | // WARNING: WARNING: WARNING: WARNING: WARNING: WARNING: WARNING: WARNING: WARNING:
10 | //
11 | // You must either add the Tooolbar 2000 and/or the SpTBXLib packages to the
12 | // VirtualShellToolsDx.dpk "Requires" section.
13 | // This is easier if you open the VirtualShellToolsDx.dpk with a text editor and add this:
14 | //
15 | // E,g, For D6:
16 | //
17 | // requires
18 | // VirtualTreesD6,
19 | // VirtualToolsCommonD6,
20 | // ThemeManager6
21 | // tb2k_d6,
22 | // SpTbxLib_d6;
23 | //
24 | // Then recompile VSTools
25 | //
26 | // DO NOT allow Delphi to add the units to the "Contains" section automaticlly
27 | // if you forget to add the packages to the "Requires" section.
28 |
29 | // Define USE_TOOLBAR_TB2K if you use Toolbar 2000, SpTBXLib
30 | {.$DEFINE USE_TOOLBAR_TB2K}
31 | // Define SpTBX if you use SpTBXLib
32 | {.$DEFINE SpTBX}
33 |
34 | // -----------------------------------------------------------------------------
35 | //
36 |
37 | // Strips particular component from the package to reduce EXE size in final application
38 | //
39 | //
40 | {$DEFINE EXPLORERCOMBOBOX_L}
41 | {$DEFINE EXPLORERLISTVIEW_L}
42 | {$DEFINE EXPLORERTREE_L}
43 | {$DEFINE EXPLORERTREEVIEW_L}
44 | // -----------------------------------------------------------------------------
45 |
46 | // ImageEn SUPPORT
47 | // You must add the ImageEn package to the VirtualShellToolsD.dpk "Requires" section PKIECtrl28
48 | // You may need to add Path to ImageEn: Delphi Compiler, Windows 64bit, Search path \ImageEn\Source\Delphi11Alexandria_64
49 |
50 | // {$DEFINE USEIMAGEEN}
51 |
--------------------------------------------------------------------------------
/LICENCE:
--------------------------------------------------------------------------------
1 | Mustangpeak Common Library
2 |
3 | The contents of this file are subject to the Mozilla Public License
4 | Version 1.1 (the "License"); you may not use this file except
5 | in compliance with the License. You may obtain a copy of the
6 | License at http://www.mozilla.org/MPL/.
7 |
8 | Alternatively, you may redistribute this library, use and/or modify it under the terms of the
9 | GNU Lesser General Public License as published by the Free Software Foundation;
10 | either version 2.1 of the License, or (at your option) any later version.
11 | You may obtain a copy of the LGPL at http://www.gnu.org/copyleft/.
12 |
13 | Software distributed under the License is distributed on an
14 | "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either expressed or
15 | implied. See the License for the specific language governing rights
16 | and limitations under the License.
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/Resources/Images/Bkgnd.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Resources/Images/Bkgnd.bmp
--------------------------------------------------------------------------------
/Resources/Images/Folder Funnel 24x24.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Resources/Images/Folder Funnel 24x24.bmp
--------------------------------------------------------------------------------
/Resources/Images/Setup Gear 24x24.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Resources/Images/Setup Gear 24x24.bmp
--------------------------------------------------------------------------------
/Resources/Images/Setup Gear 32x32.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Resources/Images/Setup Gear 32x32.bmp
--------------------------------------------------------------------------------
/Resources/Images/VET_Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Resources/Images/VET_Logo.png
--------------------------------------------------------------------------------
/Resources/Images/ViewButton.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Resources/Images/ViewButton.bmp
--------------------------------------------------------------------------------
/Resources/Images/XDisk.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Resources/Images/XDisk.bmp
--------------------------------------------------------------------------------
/Resources/Images/XPBackArrow 24x24.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Resources/Images/XPBackArrow 24x24.bmp
--------------------------------------------------------------------------------
/Resources/Images/XPBackArrow.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Resources/Images/XPBackArrow.bmp
--------------------------------------------------------------------------------
/Resources/Images/XPFolders 16x16.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Resources/Images/XPFolders 16x16.bmp
--------------------------------------------------------------------------------
/Resources/Images/XPFolders 24x24.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Resources/Images/XPFolders 24x24.bmp
--------------------------------------------------------------------------------
/Resources/Images/XPFolders.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Resources/Images/XPFolders.bmp
--------------------------------------------------------------------------------
/Resources/Images/XPHistory 16x16.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Resources/Images/XPHistory 16x16.bmp
--------------------------------------------------------------------------------
/Resources/Images/XPHistory 24x24.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Resources/Images/XPHistory 24x24.bmp
--------------------------------------------------------------------------------
/Resources/Images/XPListviewStyle.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Resources/Images/XPListviewStyle.bmp
--------------------------------------------------------------------------------
/Resources/Images/XPNextArrow 24x24.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Resources/Images/XPNextArrow 24x24.bmp
--------------------------------------------------------------------------------
/Resources/Images/XPNextArrow.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Resources/Images/XPNextArrow.bmp
--------------------------------------------------------------------------------
/Resources/Images/XPSearch 24x24.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Resources/Images/XPSearch 24x24.bmp
--------------------------------------------------------------------------------
/Resources/Images/XPSearch.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Resources/Images/XPSearch.bmp
--------------------------------------------------------------------------------
/Resources/Images/XPSearch2.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Resources/Images/XPSearch2.bmp
--------------------------------------------------------------------------------
/Resources/Images/XPSearch2Small.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Resources/Images/XPSearch2Small.bmp
--------------------------------------------------------------------------------
/Resources/Images/XPUpFolder.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Resources/Images/XPUpFolder.bmp
--------------------------------------------------------------------------------
/Source/ColumnForm.dfm:
--------------------------------------------------------------------------------
1 | object FormColumnSettings: TFormColumnSettings
2 | Left = 364
3 | Top = 252
4 | BorderIcons = [biSystemMenu]
5 | Caption = 'Column Settings'
6 | ClientHeight = 369
7 | ClientWidth = 297
8 | Color = clBtnFace
9 | Constraints.MinHeight = 370
10 | Constraints.MinWidth = 295
11 | Font.Charset = DEFAULT_CHARSET
12 | Font.Color = clWindowText
13 | Font.Height = -11
14 | Font.Name = 'Tahoma'
15 | Font.Style = []
16 | KeyPreview = True
17 | Position = poScreenCenter
18 | OnCreate = FormCreate
19 | OnKeyPress = FormKeyPress
20 | OnShow = FormShow
21 | TextHeight = 13
22 | object Panel1: TPanel
23 | Left = 0
24 | Top = 0
25 | Width = 297
26 | Height = 35
27 | Align = alTop
28 | BevelOuter = bvNone
29 | BorderWidth = 4
30 | TabOrder = 0
31 | object Label1: TLabel
32 | Left = 4
33 | Top = 4
34 | Width = 289
35 | Height = 27
36 | Align = alTop
37 | Alignment = taCenter
38 | AutoSize = False
39 | Caption =
40 | 'Check the columns you would like to make visible in this Folder.' +
41 | ' Drag and Drop to reorder the columns. '
42 | WordWrap = True
43 | end
44 | end
45 | object VSTColumnNames: TVirtualStringTree
46 | Left = 0
47 | Top = 35
48 | Width = 297
49 | Height = 235
50 | Align = alClient
51 | Header.AutoSizeIndex = 0
52 | Header.DefaultHeight = 17
53 | Header.Height = 17
54 | Header.MainColumn = -1
55 | Header.Options = [hoColumnResize, hoDrag]
56 | TabOrder = 1
57 | TreeOptions.AutoOptions = [toAutoDropExpand, toAutoScroll, toAutoScrollOnExpand, toAutoTristateTracking, toAutoChangeScale]
58 | TreeOptions.MiscOptions = [toAcceptOLEDrop, toCheckSupport, toInitOnSave, toToggleOnDblClick]
59 | TreeOptions.PaintOptions = [toShowButtons, toShowRoot, toThemeAware, toUseBlendedImages]
60 | OnChecking = VSTColumnNamesChecking
61 | OnDragAllowed = VSTColumnNamesDragAllowed
62 | OnDragOver = VSTColumnNamesDragOver
63 | OnDragDrop = VSTColumnNamesDragDrop
64 | OnFocusChanging = VSTColumnNamesFocusChanging
65 | OnFreeNode = VSTColumnNamesFreeNode
66 | OnGetText = VSTColumnNamesGetText
67 | OnInitNode = VSTColumnNamesInitNode
68 | Touch.InteractiveGestures = [igPan, igPressAndTap]
69 | Touch.InteractiveGestureOptions = [igoPanSingleFingerHorizontal, igoPanSingleFingerVertical, igoPanInertia, igoPanGutter, igoParentPassthrough]
70 | Columns = <>
71 | end
72 | object pnBottom: TPanel
73 | Left = 0
74 | Top = 270
75 | Width = 297
76 | Height = 99
77 | Align = alBottom
78 | BevelOuter = bvNone
79 | TabOrder = 2
80 | DesignSize = (
81 | 297
82 | 99)
83 | object Bevel1: TBevel
84 | Left = 16
85 | Top = -11
86 | Width = 270
87 | Height = 70
88 | Anchors = [akLeft, akTop, akRight]
89 | Shape = bsBottomLine
90 | end
91 | object Label2: TLabel
92 | Left = 15
93 | Top = 11
94 | Width = 165
95 | Height = 13
96 | Alignment = taCenter
97 | Caption = 'Width of selected column in pixels:'
98 | OnClick = FormCreate
99 | end
100 | object CheckBoxLiveUpdate: TCheckBox
101 | Left = 15
102 | Top = 33
103 | Width = 272
104 | Height = 17
105 | Anchors = [akLeft, akTop, akRight]
106 | Caption = 'Live Update'
107 | TabOrder = 0
108 | OnClick = CheckBoxLiveUpdateClick
109 | end
110 | object EditPixelWidth: TEdit
111 | Left = 238
112 | Top = 6
113 | Width = 48
114 | Height = 21
115 | Anchors = [akTop, akRight]
116 | TabOrder = 1
117 | OnExit = EditPixelWidthExit
118 | OnKeyPress = EditPixelWidthKeyPress
119 | end
120 | object ButtonCancel: TButton
121 | Left = 208
122 | Top = 65
123 | Width = 75
124 | Height = 25
125 | Anchors = []
126 | Caption = '&Cancel'
127 | ModalResult = 2
128 | TabOrder = 2
129 | end
130 | object ButtonOk: TButton
131 | Left = 115
132 | Top = 65
133 | Width = 75
134 | Height = 25
135 | Anchors = []
136 | Caption = '&OK'
137 | ModalResult = 1
138 | TabOrder = 3
139 | end
140 | end
141 | end
142 |
--------------------------------------------------------------------------------
/Source/ColumnFormTBX.dfm:
--------------------------------------------------------------------------------
1 | object FormColumnSettings: TFormColumnSettings
2 | Left = 364
3 | Top = 252
4 | Width = 295
5 | Height = 370
6 | BorderIcons = [biSystemMenu]
7 | Caption = 'Column Settings'
8 | Color = clBtnFace
9 | Constraints.MinHeight = 370
10 | Constraints.MinWidth = 295
11 | Font.Charset = DEFAULT_CHARSET
12 | Font.Color = clWindowText
13 | Font.Height = -11
14 | Font.Name = 'Tahoma'
15 | Font.Style = []
16 | KeyPreview = True
17 | OldCreateOrder = False
18 | Position = poScreenCenter
19 | OnCreate = FormCreate
20 | OnKeyPress = FormKeyPress
21 | OnResize = FormResize
22 | OnShow = FormShow
23 | DesignSize = (
24 | 287
25 | 336)
26 | PixelsPerInch = 96
27 | TextHeight = 13
28 | object Bevel1: TBevel
29 | Left = 16
30 | Top = 280
31 | Width = 252
32 | Height = 14
33 | Anchors = [akLeft, akTop, akRight, akBottom]
34 | Shape = bsBottomLine
35 | end
36 | object Label2: TTBXLabel
37 | Left = 10
38 | Top = 246
39 | Width = 149
40 | Height = 13
41 | Alignment = taCenter
42 | Anchors = [akBottom]
43 | Caption = 'The selected column should be '
44 | OnClick = FormCreate
45 | end
46 | object Label3: TTBXLabel
47 | Left = 211
48 | Top = 246
49 | Width = 52
50 | Height = 13
51 | Anchors = [akBottom]
52 | Caption = 'pixels wide'
53 | end
54 | object Panel1: TPanel
55 | Left = 0
56 | Top = 0
57 | Width = 287
58 | Height = 35
59 | Align = alTop
60 | BevelOuter = bvNone
61 | BorderWidth = 4
62 | TabOrder = 0
63 | object Label1: TTBXLabel
64 | Left = 4
65 | Top = 4
66 | Width = 279
67 | Height = 27
68 | Align = alClient
69 | Alignment = taCenter
70 | AutoSize = False
71 | Caption =
72 | 'Check the columns you would like to make visible in this Folder.' +
73 | ' Drag and Drop to reorder the columns. '
74 | Font.Charset = DEFAULT_CHARSET
75 | Font.Color = clWindowText
76 | Font.Height = -11
77 | Font.Name = 'MS Sans Serif'
78 | Font.Style = []
79 | ParentFont = False
80 | end
81 | end
82 | object CheckBoxLiveUpdate: TTBXCheckBox
83 | Left = 18
84 | Top = 268
85 | Width = 258
86 | Height = 17
87 | Anchors = [akRight, akBottom]
88 | Caption = 'Live Update'
89 | TabOrder = 1
90 | OnClick = CheckBoxLiveUpdateClick
91 | end
92 | object ButtonOk: TTBXButton
93 | Left = 104
94 | Top = 304
95 | Width = 75
96 | Height = 21
97 | Anchors = [akRight, akBottom]
98 | Caption = '&OK'
99 | ModalResult = 1
100 | TabOrder = 2
101 | end
102 | object ButtonCancel: TTBXButton
103 | Left = 192
104 | Top = 304
105 | Width = 75
106 | Height = 21
107 | Anchors = [akRight, akBottom]
108 | Caption = '&Cancel'
109 | ModalResult = 2
110 | TabOrder = 3
111 | end
112 | object VSTColumnNames: TVirtualStringTree
113 | Left = 6
114 | Top = 47
115 | Width = 273
116 | Height = 186
117 | Anchors = [akLeft, akTop, akRight, akBottom]
118 | CheckImageKind = ckXP
119 | Header.AutoSizeIndex = 0
120 | Header.Font.Charset = DEFAULT_CHARSET
121 | Header.Font.Color = clWindowText
122 | Header.Font.Height = -11
123 | Header.Font.Name = 'MS Sans Serif'
124 | Header.Font.Style = []
125 | Header.MainColumn = -1
126 | Header.Options = [hoColumnResize, hoDrag]
127 | HintAnimation = hatNone
128 | TabOrder = 4
129 | TreeOptions.AutoOptions = [toAutoDropExpand, toAutoScroll, toAutoScrollOnExpand, toAutoTristateTracking]
130 | TreeOptions.MiscOptions = [toAcceptOLEDrop, toCheckSupport, toInitOnSave, toToggleOnDblClick]
131 | TreeOptions.PaintOptions = [toShowButtons, toShowRoot, toThemeAware, toUseBlendedImages]
132 | OnChecking = VSTColumnNamesChecking
133 | OnDragAllowed = VSTColumnNamesDragAllowed
134 | OnDragOver = VSTColumnNamesDragOver
135 | OnDragDrop = VSTColumnNamesDragDrop
136 | OnFocusChanging = VSTColumnNamesFocusChanging
137 | OnFreeNode = VSTColumnNamesFreeNode
138 | OnGetText = VSTColumnNamesGetText
139 | OnInitNode = VSTColumnNamesInitNode
140 | Columns = <>
141 | end
142 | object EditPixelWidth: TEdit
143 | Left = 172
144 | Top = 244
145 | Width = 35
146 | Height = 21
147 | Anchors = [akBottom]
148 | TabOrder = 5
149 | OnExit = EditPixelWidthExit
150 | OnKeyPress = EditPixelWidthKeyPress
151 | end
152 | end
153 |
--------------------------------------------------------------------------------
/Source/VirtualExplorerTreeExt.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Source/VirtualExplorerTreeExt.res
--------------------------------------------------------------------------------
/Source/VirtualThumbnails.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyscripter/MustangpeakVirtualShellTools/f0da1bbc58eb93f6d8b7e2a52e82561ab32cdb1e/Source/VirtualThumbnails.pas
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | MustangpeakVirtualShellTools
2 | ============================
3 |
4 | ### Table of contents
5 | 1. [Introduction](#Introduction)
6 | 2. [Package names](#Package-names)
7 | 3. [Installation](#Installation)
8 |
9 | ## Introduction
10 |
11 | The Turbopak Mustangpeak library for Delphi and C++Builder was originally developed by **Jim
12 | Kueneman** and contains the EasyListView and the VirutalShellExplorer components.
13 | Mustangpeak VirtualShellTools provides Windows Explorer style shell treeview and list view
14 | components for Delphi and C++Builder applications. The main component TVirtualExplorerTree
15 | is a VirtualStringTree decsendant and is VCL Styles and DPI-aware enabled.
16 |
17 | This is a source-only release of MustangpeakVirtualShellTools. It includes
18 | designtime and runtime packages for Delphi and CBuilder and supports
19 | Win32 and Win64.
20 |
21 | ## Package names
22 |
23 | MustangpeakVirtualShellTools package names have the following form:
24 |
25 | - VirtualShellToolsD.dpk (Delphi runtime package)
26 | - VirtualShellToolsDD.dpk (Delphi design time package)
27 |
28 | - VirtualShellToolsC.bpl (C++Builder Runtime for the VCL)
29 | - VirtualShellToolsCD.bpl (C++Builder Runtime for the VCL)
30 |
31 | *RAD STUDIO Rio or later supported.*
32 |
33 | ## Installation
34 |
35 | To install MustangpeakVirtualShellTools into your IDE, take the following
36 | steps:
37 |
38 | 1. Install first [MustangpeakCommonLib](https://github.com/pyscripter/MustangpeakCommonLib),
39 | [MustangpeakEasyListView](https://github.com/pyscripter/MustangpeakEasyListView) and
40 | [Virtual-TreeView](https://github.com/Virtual-TreeView/Virtual-TreeView). Note that you need to install the Virtual-Treview version from the repo and not the GetIt version.
41 |
42 | 2. Clone or download and unzip the Github repository into a directory (e.g., D:\MustangpeakVirtualShellTools).
43 |
44 | 3. Start RAD Studio.
45 |
46 | 4. Add the source subdirectory (e.g., D:\MustangpeakVirtualShellTools\Source) to the
47 | IDE's library path.
48 |
49 | 5. Open and compile the runtime package specific to the IDE being used.
50 |
51 | 6. Open & install the corresponding designtime package.
52 |
53 | 7. If you have installed Toolbar2000 or SpTBXLib components and want to use them
54 | with VirtualShellTools, enable the respective directives in Include\Addins.inc.
55 |
--------------------------------------------------------------------------------