uses ShellAPI; procedure TForm1.btn1Click(Sender: TObject); //大图标视图 var LgImg: THandle; sfi: TSHFileInfo; sName, fName: string; begin Lgimg := SHGetFileInfo(pchar('c:\'), 0, sfi, SizeOf(sfi), SHGFI_ICON or SHGFI_SYSICONINDEX or SHGFI_LARGEICON); ListView1.ViewStyle := vsIcon; if OpenDialog1.Execute then begin ImageList1.Handle := LgImg; fName := OpenDialog1.FileName; sName := ExtractFileName(fName); with ListView1.Items.add do begin if SHGetFileInfo(pchar(fName), 0, sfi, SizeOf(sfi), SHGFI_ICON or SHGFI_LARGEICON or SHGFI_ATTRIBUTES) <> 0 then ImageIndex := sfi.iIcon else ImageIndex := -1; Caption := sName; SubItems.Add(IntToStr(sfi.dwAttributes)); end; end; end; procedure TForm1.BitBtn1Click(Sender: TObject); //vsReport详细报告视图 var smallImg: THandle; sfi: TSHFileInfo; sName, fName: string; begin //ImageList2.Width := 32; //ImageList2.Height := 32; //ListView1.ViewStyle := vsSmallIcon; ListView1.GridLines := true; ListView1.SmallImages := ImageList2; if OpenDialog1.Execute then begin smallImg := SHGetFileInfo(pchar('c:\'), 0, sfi, SizeOf(sfi), SHGFI_ICON or SHGFI_SYSICONINDEX or SHGFI_SMALLICON); ImageList2.Handle := smallImg; fName := OpenDialog1.FileName; sName := ExtractFileName(fName); with ListView1.Items.add do begin SHGetFileInfo(pchar(fName), 0, sfi, SizeOf(sfi), SHGFI_ICON or SHGFI_LARGEICON); ListView1.Items.Item[ListView1.Items.Count - 1].ImageIndex := sfi.iIcon; Caption := sName; SubItems.Add(IntToStr(sfi.dwAttributes)); end; end; end;