给你几个函数,自己看帮助,很简单:
findfirst
findnext
findclose
shgetfileinfo其他的就是TLietview,TImageList的使用了,只要让Listview.imagelist.handle:=系统imagelist的handle,(用shgetfileinfo得到),需要的listitem的imageindex再用shgetfileinfo查找就可以。

解决方案 »

  1.   

    首先,定义ListView1时,要在Column里面增加5个Columnsvar ListItem:TListItem;
    ...
    ListView1.ViewStyle:=vsreport; //这行重要
    ...
    ListItem:=ListView1.Items.Add;
    ListItem.Caption;='文件名';
    ListItem.ImageIndex:=1;
    ListItem.SubItems.Add('文件大小');
    ListItem.SubItems.Add('文件类型');
    ListItem.SubItems.Add('修改时间');
      

  2.   

    好像前面三个函数用不着哦,因为文件是指定的TOpenDialog的文件名,
    后面那个函数怎么用呀!我是菜鸟的,各位大虾帮帮忙!
      

  3.   

    对不起,第二行的vsreport是我们公司自制控件中的变量。Delphi标准版,可以在组件编辑中将ViewStyle选为vsReport即可。
      

  4.   

    Jhzyz(机会主义者) 兄,先谢谢你
    我的问题不是创建Columns,而是用TListView显示TOpenDialog打开的那个文件的文件名……等信息,分别显示在相应的Columns里
      

  5.   

    Lietview-》ViewStyle-》vsReport属性
      

  6.   

    在delphi6自带的vcl里看看,samples页TShellListView
      

  7.   

    我最近也在研究,下面的代码很粗糙,你再改一改,可以参照delphi6自带的vcl:samples页TShellListView
    ---Form1.dfm---
    object Form1: TForm1
      Left = 192
      Top = 107
      Width = 544
      Height = 375
      Caption = 'Form1'
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'MS Sans Serif'
      Font.Style = []
      OldCreateOrder = False
      OnCreate = FormCreate
      OnShow = FormShow
      PixelsPerInch = 96
      TextHeight = 13
      object ListView1: TListView
        Left = 4
        Top = 4
        Width = 525
        Height = 205
        Columns = <
          item
            Caption = 'Name'
            Width = 150
          end
          item
            Alignment = taRightJustify
            Caption = 'Size'
            Width = 80
          end
          item
            Caption = 'Type'
            Width = 120
          end
          item
            Caption = 'Date Modified'
            Width = 150
          end>
        TabOrder = 0
        ViewStyle = vsReport
      end
      object Button1: TButton
        Left = 4
        Top = 216
        Width = 101
        Height = 25
        Caption = 'Add File'
        TabOrder = 1
        OnClick = Button1Click
      end
      object Button2: TButton
        Left = 396
        Top = 216
        Width = 135
        Height = 25
        Caption = 'Change ViewStyle'
        TabOrder = 2
        OnClick = Button2Click
      end
      object OpenDialog1: TOpenDialog
        Filter = '所有文件|*.*'
        Options = [ofOverwritePrompt, ofHideReadOnly, ofEnableSizing]
        Title = '选择文件'
        Left = 152
        Top = 260
      end
    end---Unit1.pas---
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ComCtrls, ShlObj, ComObj, ShellAPI, CommCtrl, MaskUtils;type
      TForm1 = class(TForm)
        ListView1: TListView;
        Button1: TButton;
        OpenDialog1: TOpenDialog;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure FormShow(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
        SmallImgListHandle, LargeImgListHandle: Cardinal;
        function GetFileInfo(fName: string; var fLastWriteDate: TDate;
          var fLastWriteTime: TTime): TByHandleFileInformation;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);  function DesktopShellFolder: IShellFolder;
      begin
        OleCheck(SHGetDesktopFolder(Result));
      end;var
      P: PWideChar;
      NumChars, HR, uFlags: LongWord;
      AIShellFolder: IShellFolder;
      NewPIDL: PItemIDList;
      FileInfo: TSHFileInfo;
      AListItem: TListItem;
      LMDate: TDate;
      LMTime: TTime;
      AByHandleFileInfo: TByHandleFileInformation;
      FileSize: LongWord;
    begin
      if not OpenDialog1.Execute then exit;
      NumChars := Length(OpenDialog1.FileName);  AByHandleFileInfo := GetFileInfo(OpenDialog1.FileName, LMDate, LMTime);  P := StringToOleStr(OpenDialog1.FileName);  AIShellFolder := DesktopShellFolder;
      uFlags := SFGAO_FILESYSTEM;
      HR := AIShellFolder.ParseDisplayName(0,
                                           nil,
                                           P,
                                           NumChars,
                                           NewPIDL,
                                           uFlags);
      if not HR = S_OK then exit;  AListItem := ListView1.Items.Add;
      AListItem.Caption := ExtractFileName(OpenDialog1.FileName);
      FillChar(FileInfo, SizeOf(FileInfo), 0);
      SHGetFileInfo(PChar(NewPIDL),
                    0,
                    FileInfo,
                    SizeOf(FileInfo),
                    SHGFI_PIDL or SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
      AListItem.ImageIndex := FileInfo.iIcon;
      FileSize := AByHandleFileInfo.nFileSizeHigh * $FFFF + AByHandleFileInfo.nFileSizeLow;
      AListItem.SubItems.Append(IntToStr(FileSize) + ' bytes');
      AListItem.SubItems.Append(string(FileInfo.szTypeName));
      AListItem.SubItems.Append(DateToStr(LMDate) + ' ' + TimeToStr(LMTime));
    end;procedure TForm1.FormCreate(Sender: TObject);
    var
      FileInfo: TSHFileInfo;
    begin
      SmallImgListHandle := SHGetFileInfo('C:\', { Do not localize }
        0, FileInfo, SizeOf(FileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
      LargeImgListHandle := SHGetFileInfo('C:\', { Do not localize }
        0, FileInfo, SizeOf(FileInfo), SHGFI_SYSICONINDEX or SHGFI_LARGEICON);
    end;function TForm1.GetFileInfo(fName: string; var fLastWriteDate: TDate;
      var fLastWriteTime: TTime): TByHandleFileInformation;
    var
      FileHandle: HWND;
      FileInfo: TOFStruct;
      LocalTime: TFileTime;
      ReturnTime: _SYSTEMTIME;
    begin
      FileHandle := Windows.OpenFile(PChar(fName), FileInfo, OF_READ);
      if FileHandle = 0 then
      begin
        ShowMessage('Can not locate the specified file.');
        Exit;
      end;
      try
        GetFileInformationByHandle(FileHandle, Result);
        FileTimeToLocalFileTime(Result.ftLastWriteTime, LocalTime);
        FileTimeToSystemTime(LocalTime, ReturnTime);
        fLastWriteDate := EncodeDate(ReturnTime.wYear, ReturnTime.wMonth, ReturnTime.wDay);
        fLastWriteTime := EncodeTime(ReturnTime.wHour, ReturnTime.wMinute,
                                     ReturnTime.wSecond, ReturnTime.wMilliseconds);
      finally
        Windows.CloseHandle(FileHandle);
      end;
    end;procedure TForm1.FormShow(Sender: TObject);
    begin
      if ListView1.HandleAllocated then
      begin
        if SmallImgListHandle <> 0 then
          SendMessage(ListView1.Handle, LVM_SETIMAGELIST, LVSIL_SMALL, SmallImgListHandle);
        if LargeImgListHandle <> 0 then
          SendMessage(ListView1.Handle, LVM_SETIMAGELIST, LVSIL_NORMAL, LargeImgListHandle);
      end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      with ListView1 do
        case ViewStyle of
          vsIcon: ViewStyle := vsSmallIcon;
          vsSmallIcon: ViewStyle := vsList;
          vsList: ViewStyle := vsReport;
          vsReport: ViewStyle := vsIcon;
        end;
    end;end.
      

  8.   

    csdn有bug,这个问题不是我提的,为什么在列表后面的名字是我?
    ? TListView里怎么显示文件的图标、大小、类型、修改时间? (happyjoe )