📄 elv.txt
字号:
their correct columns until something caused a repaint. Fixed.
3.51: + OnVMGetItemInfo event didn't provide enough stuff to allow setting
the overlay index for items. I had to modify the event's parameter
list to allow for this, so you will need to replace any existing
handlers you have for this event. To set an overlay index for a
virtual list view item, you'd do something like this:
if (SubItem = 0) the
begin
// If not already asking for state, tell it we want to change it.
if not (lvifState in Mask) then
begin
Include(Mask, lvifState);
State := 0;
StateMask := 0;
end;
// IndexToOverlayMask is declared in CommCtrl unit, and the
// parameter is 1 based, not 0 based.
State := State or IndexToOverlayMask(AnOverlayIndex);
StateMask := StateMask or LVIS_OVERLAYMASK;
end;
+ TdfsExtListView.ReadSettings method had a check for AutoSave in it that
shouldn't have been there. That prevented manual loading of settings
via a ReadSettings call from restoring the column order. Thanks to
Simon Page for catching this.
+ Column header images would get all scrambled when reordered
(lvxHeaderDragDrop ExtendedStyle) when compiled under Delphi 4. This
was due to a change in the Delphi 4 TCustomListView component that I
wasn't aware of. Huge thanks go to Simon Page (again) for explaining
what they did in the VCL that broke my component.
+ Added "Known Issue" item (see above) about OnMeasureItem event.
3.50: + Default drawing didn't quite match real list view drawing, especially
if gridlines were involved. Partially related to next item.
+ Changing font didn't cause OnMeasureItem to fire for owner drawn.
+ OverlayIndex property of list items was not honored by default drawing.
Thanks to Roger Kilchenmann for the code for this.
+ State images were not drawn by default drawing.
+ Updated links in "Redistributing COMCTL32.DLL" section.
+ There were some problems reported with DragMode set to dmAutomatic and
owner drawn mode. It all seems to work for me, but I didn't
specifically fix anything. Either I got lucky and fixed it by
"accident", or I'm not understanding the problem. If you are still
having a problem like this, please let me know. NOTE: "It don't work"
is not a very helpful problem report.
+ Added BackgroundImage property. This TBitmap property will be tiled
to fill the entire listview client area (i.e. not the column headers).
The only real problem I have found with it is that the text flickers
a lot when resizing columns, but there doesn't seem to be anything
I can do about it. Probably the inherent slowness of paint with a
bitmap brush. Dunno.
Also, note that this property is introduced in TdfsEnhListView, not
TdfsExtListView. This feature does not require the updated COMCTL32.DLL.
I have never been able to get the listview API functions for doing a
background image to work. This solution takes a different approach
(suggested by Arno Pieterse), and should work for any version of
COMCTL32.DLL.
3.16: + Many people have been asking me how to set and/or clear an item's state
in a virtual mode list view since there are no TListItems to fool with.
I have added a new method, ELV_SetItemState to make this easier. Pass
it the index of the item (zero based, -1 for all items), the states
you want to change, and a boolean indicating whether to set or clear
the states. So, if you wanted to select every item in the listview:
MyVMListView.ELV_SetItemState(-1, [isSelected], TRUE);
If you wanted to deselect item 4 (remember, zero based):
MyVMListView.ELV_SetItemState(3, [isSelected], FALSE);
3.15: + Smart sorting would incorrectly flag negative numbers as dates in
regions where a "-" is used as the date seperator. Changed so that
two sperator characters must be found before it is considered a date.
3.14: + Column sizes were not saved if the user double clicked on the header
dividers to resize them.
3.13: + FullDrag property was incorrectly published under D4. This property is
the equivalent of lvxHeaderDragDrop in the TdfsExtListView ExtendedStyles
property. That should be used instead, and it should not exist at all
in TdfsEnhListView since it requires the updated ComCtl32.DLL.
+ Added TCustomExtListView class for TdfsExtListView to descend from. Same
reasoning as TCustomEnhListView class, and I should have done this one
when I did that one. Lazy programmer...
+ Cleaned up the demos some. Some of the component had changed over
time, and they had to be tweaked a bit before they stopped complaining.
Note that TestVM only works with Delphi 3 and up because it uses
TSplitter. You can probably remove these and get it to work in D2
since they aren't critical to the demo.
3.12: + Published new properties for Delphi 4 component where it made sense.
For example, the new Anchors, Constraints, and DragKind properties
are now available (under D4), but Checkboxes and OwnerDraw are not
since they are implemented another way already in my component.
+ Added note about default owner drawing and virtual mode to the Known
Issues section above.
+ HoverTime property has been changed back to a Longint type (was DWORD).
Delphi 4 has some problems here, apparently. First, it seems that
the Object Inspector will allow only a longint range to be entered for
a double word type (Longword, Cardinal or DWORD). Worse, the very
popular RX Lib freeware component package installs a property editor
for the cardinal type (which also gets the DWORD type) that won't let
you enter values in D4; it just keeps giving an error message about
the value needing to be between -1 and 0. For these reasons, I have
switched the type of HoverTime back to a Longint.
+ Two new methods added; ReadSettings and WriteSettings. Several people
asked for a way to store and load settings that was independant of the
current SaveSettings.AutoSave value. StoreSettings and LoadSettings
only worked if AutoSave was TRUE. Now these methods simply test
AutoSave and then call ReadSettings/WriteSettings. If you want to
read or write the stuff yourself independant of AutoSave, you can call
ReadSettings/WriteSettings.
+ Under some odd circumstances, you could get the component to call
RecreateWnd while it was inside of CreateWnd. If you know much about
the VCL, you know that this is a very Bad Thing (tm). It would cause
nasty exceptions. I believe I have worked around it, but if you notice
any odd behavior please let me know immediately.
+ OnDrawSubItem event never fired for lvxOwnerDrawFixed Style listviews
that were in VirtualMode. Fixed.
3.11: + If column sizes were saved but some column widths were missing, the
missing column sizes would be rediculously small. They now default
to the design-time size.
3.10: + The CheckDLLVersion function in the ExtListView.pas unit had a nasty
bug in it. This would cause false EELVOldComCtl exceptions to be
raised when a TdfsExtListView's RequireComCtlUpdate property was set.
Many thanks to Igor Lookin <Lookin_I@Usa.Net> for catching this one.
3.09: + Cleaned up some compiler hints under Delphi 4 that I missed last time.
+ Fixed some default owner-drawing bugs that didn't look quite like a
normal list view. Mostly had to do with small image list. Many
thanks to Norbert Adamko <norris@frdsa.utc.sk> for fixing these.
+ LastColumnClicked was published in TdfsExtListView, but should have only
been made public. Fixed.
+ SaveSettings property has new sub-property, SaveCurrentSort. This will
save the current sorted column index and direction and restore it on
next execution.
3.08: + Change OnMeasureItem event to use UINT type parameter, and underlying
methods as well (MeasureItem) for Delphi 4 compatibility. This will
break your existing OnMeasureItem event handlers. Just copy all the
event handler code to the clipboard, remove the handler from the
component entirely, re-add the handler, paste your code back into it.
+ Other changes for Delphi 4 compatitibility that should affect nothing
externally to the component.
+ New public array property, CurrentColumnWidth. Under everything but
Delphi 4, this evaluates to ActualColumn[Index].Width. Under Delphi 4,
column widths are not updated during a header resize, so it broke a lot
of code. This is used to fix it. It bypasses the TListColumn.Width
call and goes directly to the API, which does know about new widths
during header resize.
3.07: + Fixed stupid bug that caused sort arrows to show up in all columns
of TdfsExtListView's that I introduced in v3.06. Note to self: Check
EVERYTHING, no matter how trivial the change seems.....
3.06: + Sort arrows did not work well when sorting was done by OnSortItems
event instead of AutoColumnSort property.
+ Resort call would not work inside BeginUpdate/EndUpdate unless
AutoResort were TRUE. Thanks to Norbert ADAMKO <norris@frdsa.utc.sk>
for fixing this.
+ If an ExtListView had items in it and you switched to virtual mode and
then back out, you would get AV's. Fixed.
3.05: + Sort arrows did not respond to system color changes, so they were
really ugly if you change the 3D Objects system color.
3.04: + Sort arrows always showed up if ShowSortArrows was TRUE. This was a
bug if AutoColumnSort was set to acsNoSort. Fixed.
+ Added new ResizeColumns public method.
+ Added note about COMMCTRL unit usage in "Notes & Credits" section (see
above).
3.03: + Added Version property.
+ There were still a bunch of property write methods that assumed the
component had a valid window handle (or tried to create one if it did
not). That wasn't really causing any problems when using the
component, but it was causing fits for people who were trying to
create a descendant from it under certain circumstances.
3.02: + Fixed problem where TdfsExtListView stayed in the change list of
SmallImages property when value changed. Thanks to CWard
(CWard@lombardrisk.com) for finding and fixing it.
3.01: + TEnhLVSaveSettings constructor was not calling its inherited
constructor. That's probably why I had some many fits with AutoSaving
during the 3.00 beta cycle.... Duh.
+ Help file!
3.00: + The changes from v2.04 are too numerous to mention.
2.04: + TLVColumnEx record had two members declared in the wrong order. Thanks
to Remi Sellem for catching this.
+ The COMCTL32.H did not include a macro for setting an item's checked
state, only for getting it. I have figured one out, and now the
IsChecked property is read/write not read-only.
2.03: + Reworked the sorting routines to work with bigger numbers and to make
it a little smarter at detecting valid numbers. Thanks for much of
this to Rod Cullison (RCullis@worldnet.att.net). Also added basic date
sorting capabilities.
2.02: + Changed property AutoColumnSort to have three different states
(acsNoSort, acsSort, acsSortToggle). New one toggles sort order between
ascending and descending order. By Christian Holzner
<cholzner@ping.at>.
2.01: + Added two new properties, AutoColumnSort and AutoSortAscending, that
allow the list view columns to be automatically sorted when the user
clicks on them. Thanks to Peter Thvrnqvist
(NMA96PTH@lustudat.student.lu.se) for writing the sorting code that I
never seemed to get to.
+ There are some serious limitations to virtual mode. See discussion in
the "Notes" section above.
2.00: + Added SaveSettings property. Allows automatic saving and restoring of
column order and sizes.
+ Now covers all new additions in the latest ActiveX SDK release.
Briefly, here's most of what's new:
Properties for Virtual Mode, subitem info, hot item, hot cursor, work
area and item checked.
Methods for item spacing, get sub item at give coords, getting and
setting column order.
New events for MarqueeBegin (bounding box selection), ItemActivate,
and owner data ("Virtual Mode") events.
+ Now includes COMCTL32.DLL and API documentation ("Chapter 11.doc").
+ Now includes far less comments than usual because I have no time. If
you see something that looks wrong or doesn't make sense, email me.
1.00: + Initial release.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -