Как добовлять в ListView полноцветные иконки?

Previous  Top  Next

    
 

 

 

Code:

procedure TForm1.FormCreate(Sender: TObject);

var

SysIL   : THandle;

SysSIL  : THandle;

SFI     : TSHFileInfo;

begin

SysImageList1 := TImageList.Create(self);

with SysImageList1 do begin

     Width  := 16;

     Height := 16;

     SysSIL := SHGetFileInfo('', 0, SFI, SizeOf(SFI),

       SHGFI_SYSICONINDEX or SHGFI_SMALLICON);

     if SysSIL <> 0 then begin

       SysImageList1.Handle := SysSIL;

       ShareImages := True;

     end;

   end;

SysImageList2 := TImageList.Create(self);

with SysImageList2 do begin

     Width := 32;

     Height := 32;

     SysIL := SHGetFileInfo('', 0, SFI, SizeOf(SFI),

       SHGFI_SYSICONINDEX or SHGFI_LARGEICON);

     if SysIL <> 0 then begin

       SysImageList2.Handle := SysIL;

       ShareImages := True;

     end;

   end;

end;

 

function GetIconIndex(const AFile: string; Attrs: DWORD): integer;

var

SFI: TSHFileInfo;

begin

SHGetFileInfo(PChar(AFile), Attrs, SFI, SizeOf(TSHFileInfo),

   SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES);

Result := SFI.iIcon;

end;

....

with ListView.Items.Add do begin

Caption := FName;

ImageIndex := GetIconIndex(Caption, FILE_ATTRIBUTE_NORMAL);

SubItems.Add(FSize); 

SubItems.Add(FType);

SubItems.Add(FDateTime);

end;

Взято из http://forum.sources.ru

Автор: alexanderm

©Drkb::00634