|
Вопрос # 3 197/ вопрос открыт / |
|
Здравствуйте!
Подскажите пожалуйста!
я перетаскиваю файлы методом drag&drop их иконки отображаются в связке imagelist и listview. как сохранить эти иконки и их параметры в файл, чтобы при старте программы они загрузились и отобразились?
 |
Вопрос задал: grater (статус: Посетитель)
Вопрос отправлен: 16 сентября 2009, 15:46
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: min@y™
Короче, если я правильно понял...
Берёшь компонент TSysImageList и заменяешь им свой ImageList. Затем пишешь соответствующий обработчик события ListView.OnGetImageIndex, где и подставляешь нужный ImageIndex для каждого Item'a с помощью метода TSysImageList.ImageIndexOf(<имя_файла>).
Вот и всё, иконки файлов больше не надо нигде хранить.
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 16 сентября 2009, 17:50
|
Ответ #2. Отвечает эксперт: Жикльор
Здравствуйте, grater!
Насколько я знаю, если вы создаете ImageList, то он автоматически создают ресурсный файл, в котором все помещаеться, а при компиляции внедряеться в ехе-файл.
 |
Ответ отправил: Жикльор (статус: 5-ый класс)
Время отправки: 18 сентября 2009, 15:37
|
Мини-форум вопроса
Всего сообщений: 38; последнее сообщение — 22 сентября 2009, 13:57; участников в обсуждении: 3.
Страницы: [1] [2] [Следующая »]
|
Вадим К (статус: Академик), 16 сентября 2009, 15:59 [#1]:
Хочется сохранить иконки с imagelist, что бы потом можно было их загрузить в такой же последовательности? или что то более? или ещё и с ListView надо сохранить порядок.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
grater (статус: Посетитель), 16 сентября 2009, 17:16 [#2]:
в такой же последовательности и с ListView надо сохранить порядок
вот как я делаю
procedure TForm1.WMDropFiles(var Msg: TMessage);
var
FileName,ex: array[0..256] of char; i:TIcon;
itm:TListItem; c:Cardinal;w:word;
begin
DragQueryFile(THandle(Msg.WParam), 0, FileName, SizeOf(Filename));
DragFinish(THandle(Msg.WParam));
i:=TIcon.create;
c:=FindExecutable(@FileName,'',@ex);
w:=0;
i.Handle:=ExtractAssociatedIcon(HInstance,@ex,w);
ImageList1.AddIcon(i);
i.Free;
itm:=ListView1.Items.Add;
itm.ImageIndex:=ImageList1.Count-1;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Handle, true);
end;
|
|
Вадим К (статус: Академик), 16 сентября 2009, 17:39 [#3]:
можно просто сохранить пути к файлам, а иконки вытянуть уже в момент загрузки списка, не думали о таком варианте?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
grater (статус: Посетитель), 16 сентября 2009, 17:58 [#4]:
можно примерчик
|
|
grater (статус: Посетитель), 16 сентября 2009, 18:02 [#5]:
загрузки
|
16 сентября 2009, 18:13: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Взаимодействие с Windows модератором Ерёмин А.А.
|
Вадим К (статус: Академик), 16 сентября 2009, 18:16 [#6]:
припустим, что список файлов записан в файле, по одному файлу в строку. тогда
var sl:TStringList;
itm:TListItem;
i:integer;
begin
sl := TStringList.Create;
sl.LoadFromFile('filename');
for i := 0 to i < sl.count do
begin
itm:=ListView1.Items.Add;
itm.Caption := sl[i];
end;
sl.free;
end;
иконки самостоятельно думаю добавите.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
grater (статус: Посетитель), 16 сентября 2009, 18:51 [#7]:
выдает ошибку несовместимость integer и boolean
for i := 0 to i < sl.count ->do<-
|
|
Вадим К (статус: Академик), 16 сентября 2009, 19:03 [#8]:
ой. слишком много пишу последнее время на си++
там надо
for i := 0 to sl.count - 1 do
Галочка "подтверждения прочтения" - вселенское зло.
|
|
grater (статус: Посетитель), 16 сентября 2009, 19:20 [#9]:
спасибо заработало, но при загрузки почему то не иконки файла ,а папки?
|
|
grater (статус: Посетитель), 16 сентября 2009, 19:21 [#10]:
а при броске все нормально
|
|
Вадим К (статус: Академик), 16 сентября 2009, 19:26 [#11]:
А код для добавления иконок добавили? если да,показывайте.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
grater (статус: Посетитель), 16 сентября 2009, 19:29 [#12]:
procedure TForm1.FormCreate(Sender: TObject);
var sl:TStringList;
itm:TListItem;
i:integer;
FileName,ex: array[0..256] of char; f:TIcon;
c:Cardinal;w:word;
begin
DragAcceptFiles(Handle, true);
sl := TStringList.Create;
sl.LoadFromFile('C:\1.txt');
for i := 0 to sl.count - 1 do
begin
itm:=ListView1.Items.Add;
itm.Caption := sl[i];
end;
sl.free;
f:=TIcon.create;
c:=FindExecutable(@FileName,'',@ex);
w:=0;
f.Handle:=ExtractAssociatedIcon(HInstance,@ex,w);
ImageList1.AddIcon(f);
f.Free;
itm:=ListView1.Items.Add;
itm.ImageIndex:=ImageList1.Count-1
end;
|
|
Вадим К (статус: Академик), 16 сентября 2009, 19:55 [#13]:
ну так правильно. надо где то так
procedure TForm1.FormCreate(Sender: TObject);
var sl:TStringList;
itm:TListItem;
i:integer;
FileName,ex: array[0..256] of char; f:TIcon;
c:Cardinal;w:word;
begin
DragAcceptFiles(Handle, true);
sl := TStringList.Create;
sl.LoadFromFile('C:\1.txt');
for i := 0 to sl.count - 1 do
begin
itm:=ListView1.Items.Add;
itm.Caption := sl[i];
FileName := sl[i];
f:=TIcon.create;
c:=FindExecutable(@FileName,'',@ex);
w:=0;
f.Handle:=ExtractAssociatedIcon(HInstance,@ex,w);
ImageList1.AddIcon(f);
f.Free;
itm:=ListView1.Items.Add;
itm.ImageIndex:=ImageList1.Count-1
end;
sl.free;
end;
Галочка "подтверждения прочтения" - вселенское зло.
|
|
grater (статус: Посетитель), 16 сентября 2009, 20:06 [#14]:
FileName := sl[i]; несовместимые Array и string
|
|
grater (статус: Посетитель), 16 сентября 2009, 20:07 [#15]:
sl[i]:= FileName; так работает но те же папки
|
|
Вадим К (статус: Академик), 16 сентября 2009, 20:15 [#16]:
ну кто так учил объявлять.
array[0..256] of char;
там надо array[1..256] of char; или array[1..256] of char; уже не помню, помоему первый.
а sl[i]:= FileName; - это точно неверно, подумайте почему.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
grater (статус: Посетитель), 16 сентября 2009, 20:21 [#17]:
все равно FileName := sl[i]; несовместимые Array и string
и какая между ними разница
"там надо array[1..256] of char;
или array[1..256] of char;"
|
|
min@y™ (статус: Доктор наук), 16 сентября 2009, 20:32 [#18]:
Чем мой ответ-то не подошёл?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
grater (статус: Посетитель), 16 сентября 2009, 20:38 [#19]:
в sysimage нету
DsgnIntf.dcu
|
|
grater (статус: Посетитель), 16 сентября 2009, 20:39 [#20]:
не компилирует у себя не нашел
|
Страницы: [1] [2] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|