如何在ListView中显示数据库中存放的文件(以word、excel、jpg图标显示)???请尽快回复,小弟感谢!!!!

解决方案 »

  1.   

    不怎么明白你的意思?请具体说明你的意思阿。 
    我今天也写了两个listview程序,你看看吧。 SaveMappingFile是将listview中的值写入文件中,LoadMappingFile是将文件数据导入listview中。 你要从数据库中导入数据,操作类似。function TMycommon.SaveMappingFile(myListView:TListView):boolean;   //保存listview里的数据
    var
      tmplist:TStringlist;
      saveDlg:TSaveDialog;
      FileName:string;
      i:integer;
      j:integer;
      tmpstr:string;
    begin
      tmplist:=TStringlist.Create;
      saveDlg := TSaveDialog.Create(Application);
      saveDlg.Filter:='bbf files (*.bbf)|*.bbf';
       if saveDlg.Execute then
      begin
        FileName := ExtractFileName(saveDlg.FileName);
        FileName := ChangeFileExt(FileName, '.bbf');
      
        //filename:=ExtractFileName(saveDlg.FileName);
        if FileExists(FileName) then
        begin
          if DeleteFile(FileName) = false then
            begin
              MessageDlg('文件可能正在使用,请检查...', mtInformation, [mbYes,mbNo],0);
              result := false;
              exit;
            end;
        end;     
              
        if mylistview.Items.Count = 0 then
        begin
          MessageDlg('没有数据,请检查...', mtInformation, [mbYes,mbNo],0);
          result := false;
          exit;
        end;
        
        for i:=0 to mylistview.Items.Count-1 do
         begin
           tmpstr:='';
           tmpstr:=mylistview.Items.Item[i].Caption;
           for j:=0 to mylistview.Items.Item[i].SubItems.Count-1 do
             tmpstr:=tmpstr+'$'+mylistview.Items.Item[i].SubItems.Strings[j];              
           tmplist.Add(tmpstr);
         end; //for loop
          
          tmplist.SaveToFile(filename);
          result:=true;
          exit;
        end  //if loop
       else
         result:=false;
         saveDlg.Free;
         tmplist.free;
    end;
          function TMyCommon.LoadMappingFile(myListView:TListView):boolean;
    var
      LoadDlg:TOpenDialog;
      tmplist:TStringList;  
      FileName:string;
      iPos,j:integer;         //文件位置标志变量
      tmpLine,tmpstr:string;          //存储读的每一行字符串
      tmpListItem:TListItem;  
    begin
      tmplist := TStringList.create;
      LoadDlg := TOpenDialog.Create(Application);
      LoadDlg.Filter:='bbf files (*.bbf)|*.bbf' ;
      if loaddlg.Execute then
        FileName := loaddlg.Filename;
      if FileName = '' then
      begin
        result := false;
        MessageDlg('文件不存在或者运行期错误', mtError, [mbYes,mbNo], 0);
        exit;
      end
      else
      begin
        tmplist.LoadFromFile(filename);
        myListView.Items.Clear;
        if tmplist.count > 0 then
        begin
          for j:=0 to tmplist.count-1 do
          begin
            tmpListItem := myListView.Items.Add;
            iPos := 0;
            tmpLine := tmplist.strings[j];
            iPos := pos('$', tmpLine);
            tmpstr := midstr(tmpline, 1, iPos-1);
            tmpListItem.caption := tmpstr;
            Delete(tmpline,1, iPos);        iPos := pos('$', tmpLine);
            while (iPos > 0) do
            begin
              tmpstr := midstr(tmpline, 1, iPos-1);
              tmpListItem.SubItems.Add(tmpstr);
              Delete(tmpline,1, iPos);
              iPos := pos('$', tmpLine);
            end; //while         
           end;  //for    
        end;    //the second if
        result := true;
      end;       //else
      
      tmplistItem.Free;
      tmplist.Free;
     
      
          
      
    end;        
    end.