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

Материал из DRKB

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

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;


Author: alexanderm
Source: Взято из http://forum.sources.ru
ID: 00634