01.12.2014, 00:41
|
|
Новичок
|
|
Регистрация: 28.09.2013
Сообщения: 94
Версия Delphi: 2010
Репутация: 10
|
|
Код:
procedure SortItems(hList : HWND; Column, bmArUp, bmArDn : Integer);
var
hHeader : HWND;
Item, ItemA : THDITEM;
I : Integer;
St : String;
bm : Integer;
begin
// hLV := hList;
St := '';
for I := 0 to ListView_GetItemCount(hList) - 1 do
St := St + LV_GetItemText(hList, I, Column);
if St = '' then
begin
hHeader := ListView_GetHeader(hList);
if hHeader = 0 then
Exit;
DrawColumnImage(hHeader, 0, 0);
Exit;
end;
hHeader := ListView_GetHeader(hList);
if hHeader = 0 then
Exit;
if Column = SortColumn then
isSorted := not isSorted
else
begin
SortColumn := Column;
isSorted := True;
end;
if Column <> -1 then
begin
FillChar(Item, SizeOf(THDITEM), 0);
Item.mask := Item.mask or HDI_LPARAM;
if (not Header_GetItem(hHeader, Column, Item)) then
Exit;
Item.lParam := not Item.lParam;
Header_SetItem(hHeader, Column, Item);
end;
FillChar(ItemA, SizeOf(ThdItem), 0);
ItemA.Mask := HDI_FORMAT;
if (not Header_GetItem(hHeader, Column, ItemA)) then
Exit;
// ItemA.mask := HDI_FORMAT;
ItemA.fmt := ItemA.fmt and not (HDF_BITMAP or HDF_SORTUP or HDF_SORTDOWN);
for I := 0 to ListView_GetItemCount(hList) - 1 do
begin
if I <> Column then
bm := 0
else
begin
if isSorted then
// bm := bmArUp
begin
ItemA.mask := ItemA.Mask or HDI_BITMAP;
ItemA.fmt := ItemA.fmt or HDF_SORTUP ;//Header_SetItem(hHeader, Column, Item);
// ItemA.hbm := bmp;
end
else
// bm := bmArDn;
begin
ItemA.mask := ItemA.Mask or HDI_BITMAP;
ItemA.fmt := ItemA.fmt or HDF_SORTDOWN ;
// Item.hbm := bmp;
end;
end; Header_SetItem(hHeader, Column, ItemA);
//DrawColumnImage(hHeader, I, bm);SetWindowText(form, IntToStr(bm));
end;
if Column <> -1 then
ListView_SortItems(hList, @CompareFunc, MAKELONG(Column, ord(isSorted)));
end;
как можно исравить? И сделать как в проводнике(стрелочки)?
|