📄 scp.txt
字号:
+ Now includes a TSystemComboBox written by Andrew Barnes. Andrew was
kind enough to share this with the rest of us and give me permission
to include it in this package. Huge thanks go to him. Read the
comments at the top of SystemComboBox.pas for full information.
Also, this is just the first crack at the combo. There are bound to
be problems, so please report them and provide as much info as you can
so I can duplicate them. Some are already known, see the Known Issues
section.
+ Since Andrew has provided us with the last missing piece (the combo),
I've renamed this thing the "System Control Pack". SystemTreeView was
becoming ever more inadequate as a name.
+ Because the SystemTreeView.pas file was growing ever more out of
control (144k in the last version), and because of some unit reference
issues, I decided to break up everything into smaller, more manageable
units. SystemControlPack.pas now defines base virtual classes for all
the controls that define and implement how they interact with each
other, but implement none of the shell functionality. Each control is
implemented in its own seperate unit descending from these base
classes. Because of all the unit additions/changes/deletions, users of
previous versions should review how the component is installed. Here
is the status of all the unit files in the package now:
SystemControlPack -- New
SystemTreeView -- Heavily modified
SystemListView -- New
SystemComboBox -- New
SystemViewReg -- Deleted (see next)
SystemControlPackReg -- New (renamed SystemViewReg unit)
PidlHelp -- New
SystemView.inc -- Deleted (see next)
SystemControlPack.inc -- New (renamed SystemView.inc and modified)
Delphi 3+ and BCB 3 users, update your packages accordingly.
+ Because all of the major changes being made, I updated the $DEFINE
names to more accurately reflect what they effect. See the
"Conditional Defines" section above for the new names.
+ The $IFDEFs that checked to see if COM objects needed to be manually
reference counted used DFS_COMPILER_2. This was technically correct
as it only needs to be done in Delphi 2 and C++Builder 1, but I've
changed it to use {$IFNDEF DFS_NO_COM_CLEANUP} to more accurately
show what is going on there.
+ TSystemListView is not as tightly integrated with TSystemTreeView as
in previous versions. This a first step towards making it work
completely on its own. However, it is just a first step. It needs
further testing, and some enhancements I'm sure. Please send feedback
if you fool with this issue at all.
+ The new stuff introduced a new bug in the list view, see Known Issues.
0.95 + FileMask property only worked if the system were set up to display
file extensions (in Explorer, View | Folder Options | View tab | "Hide
file extensions for known file types" checkbox was unchecked). This
has been fixed, and FileMask now works properly regardless of this
setting. Note that the setting still effects how the file is displayed
(extension shown or not).
+ File sizes in the list view weren't "commaized". That is, "4305 KB"
was displayed instead of "4,305KB".
+ Large file sizes are now handled properly. In D4, the Int64 type is
used. All others use the Comp type since Int64 isn't available.
+ Updated William Miller's DFSExplorer demo project. See the
DFSExplorerReadMe.Txt file contained in the DFSExplorer.zip file for
his release notes.
0.94 + Even though you could move through a removeable drive without a disk
in the tree with the ReadDelay property, it would still "spin up" when
you hit. It just wouldn't generate an error message. This has been
fixed so that it doesn't "spin up" at all unless you've stopped on it
long enough for it to populate (ReadDelay).
+ Rewrote the TSystemListView.AddNode to make it a bit more efficient and
less messy.
+ I was having sporadic problems with the images not being transparent on
my system. I never could determine if it was my code, or some other
app that was causing it. I've added a little more code to the image
list stuff, and the problem doesn't seem to be occuring now, but as
I said it was sporadic to begin with.
+ The controls did not handle system color changes well. This appears to
be a bug I inherited from the VCL. The window background would change
to the correct color, but the background around the text would not.
I've worked around the problem.
+ I wasn't calling inherited in my WM_TIMER handler. This broke the
automatic editing of tree nodes when user clicked twice in a node.
+ If the tree is reset, it will now remember the selected node. If the
listview is reset, it will remember the focused item.
+ ReadDelay is a little smarter now. It won't delay at startup since
that's pretty silly. It also won't delay on a manually refresh (a
call to the Reset method), since you really wouldn't want it to delay
there either.
+ Added known issue about using the Color property (see above).
+ Added DFSExplorer demo project. A nicer version of the SimpleExplorer
demo written by William Miller.
0.93 + Added a new demo project, SimpleExplorer. It's your basic Explorer
clone, but on a light scale. No toolbar, no Favorites menu, only basic
menu item commands. Just to illustrate that it doesn't take much code
to get basic Explorer functionality with the components. One note: I
used a TSplitter in it, so Delphi 2 is going to complain about that
since it didn't come with Delphi until v3. Just go along with what
Delphi wants to do when you open the project in D2, and it should
compile and run fine, sans splitter of course.
+ Version property now marked as not stored. Doesn't need to be, and
only increases DFM size. Should have always been that way.
+ Cut and paste of the treeview still had problems in the IDE. I
_really_ fixed it this time. Promise. :)
+ TSystemTreeView.ResetTreeView renamed to Reset, and
TSystemListView.Reload renamed to Reset for consitency.
+ Added TSystemTreeView.NodeData and TSystemListView.ItemData public
read-only properties. See the new SimpleExplorer demo app to see how
these can be useful.
+ DeleteNode and DeleteItem only worked for files, and they did not do it
via the system, i.e. it didn't honor the system settings for using (or
not using) the recycle bin.
+ File sizes were still being reported as not working in some situations.
I'm trying yet a another new way of getting the file sizes. It seems
to work for me, even solving a long standing issue of not being able
to get file sizes of open files. But, if it causes you problems, you
can add the DFS_STV_OLDFILESIZE define and it will use the v0.91 file
size code.
+ Added ReadDelay property to the treeview. This makes it behave much
more like Explorer. Set this to the amount of time in milliseconds you
want the tree to delay before populating the listview. It defaults to
500ms, mostly because that seems the closest to Explorer's behavior.
You can probably set it lower and get results that are as good and
make it more responsive to the user. The main place where this is
useful is when you are browsing through the tree and you want to go
through a drive that doesn't have a disk in it (floppy, CD, ZIP, etc).
Before, you'd always get the not accessible error or a long wait if
there was a disk in a slow access drive. Now, it blows right on past
it if you move on before ReadDelay milliseconds.
+ Added TSystemListView.GetSelectedPIDLs function. See SimpleExplorer
project for how it can be useful.
0.92 + On some network drives, the file size of files in the list view could
be reported incorrectly. Thanks to Rob Watt for finding and providing
a fix for this.
+ List view's ShowFolders property didn't work quite completely enough.
It would still show things like drives, which are technically folders.
If ShowFolders is false, it should only display files, as it does now.
+ File changes were not being monitored correctly. Things like files
being added in the current directory would not refresh the display.
Fixed.
+ Don F. Ridgway sent me code to do that attributes column of the list
view. MANY thanks to him for taking care of that To-Do list item.
0.91 + Added OnPopulated event to both tree and list. They fire after all
items have been added to them.
+ Real file masking! I've removed the SimpleMask property (it only let
you mask based on extensions) and replaced it with a FileMask property.
The tree also has this property, and uses it to mask files when
ShowFiles is set to true. Use it much the same as you would any file
mask: '*' is 0 or more of any character, '?' is any one character, ';'
is used to seperate individual masks. So, if you want all executables,
you could do something like '*.exe;*.com;*.bat;*.lnk'. You can get
more fancy if you need to, as well, like '*4*.com' will show all files
with a '4' in them that end with a '.com' extension. Basically, it
should work just the same as a mask in FindFirst/FindNext (although
those aren't used).
+ Fixed known issue of delete/cut/paste of TSystemTreeView in the IDE.
It absolutely hated to be deleted when the Selection (or Directory,
they're the same) property was set to something other than blank. Now
works fine.
+ See updated information on the last item in the Working Notes section.
0.90 + Stupid VCL doesn't update the Item.StateIndex property when the user
clicks on it to check/uncheck it. Only updates it when you change
the value in code. How worthless... Anyway, that made the ItemChecked
property pretty much useless as well. I've fixed it.
+ TSystemListView.GetFullPath screwed up drives. It would return "C:\\"
instead of "C:\". Thanks to Ladislav Dolezel for finding and fixing.
+ Cleaned up the Known Issues list a bit. A bunch of fixed stuff was
still listed.
0.89 + Using several root folder types would make it difficult to work with
assigning a value to Selection property in tree. It now attempts to
convert new Selection values to their relative equivalents
automatically to simplify this.
+ Context menu now supports multiple items. That is, if multiple items
are selected in a listview and the default context menu is requested
(i.e. the user right-clicks), the context menu is valid for all
selected items, not just the first selected.
+ New public method DisplaySelectedContextMenu for listview. Same as
DisplayContextMenu, except it shows menu for all selected items instead
of a specific TListItem.
0.88 + Design-time value of tree's Selection property was not always honored
at run-time.
+ Columns property should not have been published in the listview. It is
now a public proeprty. If you need to add your own columns, you do so
by setting ColumnType to ctUser and writing an OnCreateColumns event
handler that adds the columns at run-time.
+ Added new public method DefaultDblClickAction to listview. This can
be useful if you want to handle the OnDblClick in some situations, but
want normal handling in other situations.
+ SimpleMask didn't work for registered file types if extensions were
hidden. That is, if you set the "Hide file extensions for known file
types" option in Explorer, files of known types would always fail to
match the mask.
+ Using listview's SimpleMask under Delphi 2 would cause AVs because of
an incorrect Release call.
+ SimpleMask would hide files and folders that did not match instead of
just files.
+ Listview didn't display the date/time for folders.
+ Inplace renaming of listview items now renames the item properly, i.e.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -