![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Делаю подобие каталогизатора файлов, большая часть готова, но застрял на обработке в listview. Смысл в том, чтобы можно было загонять файлы через Opendialog и в listview можно было бы двойным кликом открывать файлы.
1. Файлы закидываются. 2. Двойным кликом открываются. 3. Список файлов сохраняется в файл. А вот при следующем запуске программы и загрузке списка файлов из файла - всё подгружается, но двойной клик не работает. Выкладываю часть проги, которая относится именно к listview. Прошу помощи, listbox на форме чисто для проверки. |
|
#2
|
||||
|
||||
|
Цитата:
Код:
procedure TForm1.ListView1DblClick(Sender: TObject); begin ShellExecute(Application.MainForm.Handle,'Open',PChar(ListView1.Selected.SubItems[0]),Nil,Nil,SW_SHOW); end; |
| Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Corwin13 (09.04.2013)
| ||
|
#3
|
|||
|
|||
|
Цитата:
|
|
#4
|
|||
|
|||
|
Почему-то не сохраняются, и не загружаются иконки файлов. Пробовал сохранять поток тоже не выходит:
Код:
var Writer : TWriter; FileStream : TFileStream; begin if SaveDialog1.Execute then begin FileStream:=TFileStream.Create(SaveDialog1.FileName,fmOpenWrite or fmCreate); Writer := TWriter.Create(FileStream, SizeOf(ListView1)); Writer.WriteRootComponent(ListView1); Writer.Free; FileStream.Free; Загрузка: Код:
var reader : TReader; FileStream : TFileStream; begin if OpenDialog1.Execute then begin FileStream:=TFileStream.Create(OpenDialog1.FileName,fmOpenread); Reader := TReader.Create(FileStream, SizeOf(ListView1)); Reader.ReadRootComponent(ListView1); Reader.Free; FileStream.Free; |
|
#5
|
||||
|
||||
|
Цитата:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
FStr: TFileStream;
MemStr: TMemoryStream;
i: integer;
begin
FStr:= TFileStream.Create('c:\ImageList1.sav', fmCreate);
MemStr:= TMemoryStream.Create;
MemStr.WriteComponent(ImageList1);
MemStr.Position:= 0;
ObjectBinaryToText(MemStr, FStr);
MemStr.Free;
FStr.Free;
SaveListViewToFile1(ListView1, 'C:\1.sav');
ListBox1.Items.SaveToFile('c:\lisbox.txt');
end;
procedure TForm1.Button2Click(Sender: TObject);
var
FStr: TFileStream;
MemStr: TMemoryStream;
ListItem: TListItem;
begin
FStr:= TFileStream.Create('c:\ImageList1.sav', fmOpenRead);
MemStr:= TMemoryStream.Create;
ObjectTextToBinary(FStr, MemStr);
MemStr.Position:= 0;
MemStr.ReadComponent(ImageList1);
MemStr.Free;
FStr.Free;
ListView1.SmallImages:= ImageList1;
ListView1.Items.BeginUpdate;
LoadListViewToFile1(ListView1, 'C:\1.sav');
ListBox1.Items.LoadFromFile('c:\lisbox.txt');
ListView1.Items.EndUpdate;
end; |
|
#6
|
|||
|
|||
|
Спасибо, все получилось, а с файлами потом разбираться буду, пока так быстрей.
|
|
#7
|
||||
|
||||
|
Большой сюрпиз вам приподнесет OpenDialog. Попробуйте выделить в нем скажем 1000 файлов и загнать в ваш ListView.
![]() |