Показать сообщение отдельно
  #8  
Старый 09.04.2013, 18:08
Corwin13 Corwin13 вне форума
Прохожий
 
Регистрация: 05.04.2013
Сообщения: 20
Версия Delphi: Enterprise 7.0
Репутация: 10
По умолчанию

Продолжаю мучить listview. В процедуре добавления файлов есть 6 колонок:
1. Имя
2. Описание
3. Путь
4. Размер
5. Дата
6. Тип

все данные вычитываются из файла, хочу сделать добавление описания к файлу. Сам код добавления файлов:

Код:
procedure LV_InsertFiles(strPath: string; ListView1: TListView; ImageList1: TImageList);
 var
   Icon: TIcon;
   ListItem: TListItem;
   FileInfo: SHFILEINFO;
   sr: TSearchRec;



  NewColumn: TListColumn;

   FilePath: string;
   ext: string;
   IconIndex: word;
   ImageList: TImageList;
   FileName: String;
   SysIL   : THandle;
 SysSIL  : THandle;
 SFI     : TSHFileInfo;
  D : TDateTime;
   i, f: Integer;
  APath: string;
  Descrition: string;
begin

        
  Icon := TIcon.Create;
   ListView1.Items.BeginUpdate;
   i := FindFirst(strPath + '*.*', faAnyFile, SR);

   ListItem := ListView1.Items.Add;
         
          SHGetFileInfo(PChar(strPath), 0, FileInfo,
             SizeOf(FileInfo), SHGFI_DISPLAYNAME);
          Listitem.Caption := FileInfo.szDisplayName;
          
          ListItem.SubItems.Add(Descrition);
          SHGetFileInfo(PChar(strPath), 0, FileInfo,SizeOf(FileInfo), SHGFI_TYPENAME);

           ListItem.SubItems.Add(strPath);

            if sr.Size < 1024 then
        ListItem.SubItems.Add(IntToStr(sr.Size) + ' Байт')
      else
      if sr.Size < 1024 * 1024 then
        ListItem.SubItems.Add(IntToStr(round(sr.Size / 1024)) + ' KБайт')
      else
        ListItem.SubItems.Add(IntToStr(round(sr.Size / (1024 * 1024))) + ' MБайт');
          ListItem.SubItems.Add(DateToStr(FileDateToDateTime(SR.Time)));

           SHGetFileInfo(PChar(strPath), 0, FileInfo,
             SizeOf(FileInfo), SHGFI_TYPENAME);
           ListItem.SubItems.Add(FileInfo.szTypeName);
          

          SHGetFileInfo(PChar(strPath ), 0, FileInfo,
             SizeOf(FileInfo), SHGFI_ICON or SHGFI_SMALLICON);
           icon.Handle := FileInfo.hIcon;
           ListItem.ImageIndex := ImageList1.AddIcon(Icon);

         
     ListView1.Items.EndUpdate;

     
     end;

Пока что добавил ListItem.SubItems.Add(Descrition); чтобы колонки не съезжали. Пробую добавить описание такой процедурой:

Код:
procedure TDialog.OKBtnClick(Sender: TObject);


begin
form1.ListView1.Selected.SubItems.Text:=Edit1.Text;

Close;
end;
,
описание добавляется, но при этом удаляются все остальные колонки кроме названия файла. Не могу найти как делать вставку, а получается замена колонок.

И ещё вопрос, как составить условие на открытие файлов? Скажем:

if Listview1.Selected.SubItems не открывается then
begin
MessageDlg('Нет доступа к файлу!');
exit;
типа того.
Заранее благодарю всех за помощь.
Ответить с цитированием