Das liegt daran, dass die
VCL folgende Funktion verwendet:
Delphi-Quellcode:
//Unit Commctrl
function ListView_SetExtendedListViewStyle(hwndLV: HWND; dw: DWORD): BOOL;
begin
Result := BOOL(SendMessage(hwndLV, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dw));
end;
Und dann so aufruft:
Delphi-Quellcode:
// Delphi 5 Source
procedure TCustomListView.ResetExStyles;
var
Styles: DWORD;
TempImages: TCustomImageList;
begin
if HandleAllocated
then
begin
TempImages :=
nil;
if StateImages <>
nil then
begin
TempImages := StateImages;
StateImages :=
nil;
end;
Styles := LVS_EX_SUBITEMIMAGES
or LVS_EX_INFOTIP;
// ***
if FCheckboxes
then Styles := LVS_EX_CHECKBOXES;
if FGridLines
then Styles := Styles
or LVS_EX_GRIDLINES;
if FHotTrack
then Styles := Styles
or LVS_EX_TRACKSELECT;
if FRowSelect
then Styles := Styles
or LVS_EX_FULLROWSELECT;
if FFlatScrollBars
then Styles := Styles
or LVS_EX_FLATSB;
if FFullDrag
then Styles := Styles
or LVS_EX_HEADERDRAGDROP;
if FShowWorkAreas
then Styles := Styles
or LVS_EX_MULTIWORKAREAS;
if htHandPoint
in FHotTrackStyles
then
Styles := Styles
or LVS_EX_ONECLICKACTIVATE
else if FHotTrackStyles * [htUnderlineHot, htUnderlineCold] <> []
then
Styles := Styles
or LVS_EX_TWOCLICKACTIVATE;
if htUnderlineHot
in FHotTrackStyles
then
Styles := Styles
or LVS_EX_UNDERLINEHOT;
if htUnderlineCold
in FHotTrackStyles
then
Styles := Styles
or LVS_EX_UNDERLINECOLD;
ListView_SetExtendedListViewStyle(
Handle, Styles);
if TempImages <>
nil then
StateImages := TempImages;
end;
end;
Die
VCL ist hier nicht darauf vorbereitet, dass es mal neue Styles geben könnte.
In der Zeile, die oben mit drei *** markiert ist, müsste man eigentlich die bestehenden Styles
abrufen und bestimmte Styles ausmaskieren (... AND not (LVS_EX_GRIDLINES or LVS_EX_TRACKSELECT ...))
so dass die Bits, die die
VCL nicht kennt erhalten bleiben.