Продолжаю мучить 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;
типа того.
Заранее благодарю всех за помощь.