|
Вопрос # 4 966/ вопрос решён / |
|
Приветствую, уважаемые эксперты! Подскажите как мне отобразить иконку файла в ListView таким макааром:
suiListView1.Items.Item[i].ImageIndex:= ExtractAssociatedIcon.... ?
Эту функцию я использую в цикле и в ListView я хочу организовать отображение сперва иконки файла с именем а потом всё остальное.
 |
Вопрос задал: eclipse (статус: Посетитель)
Вопрос отправлен: 26 января 2011, 16:02
Состояние вопроса: решён, ответов: 1.
|
Ответ #1. Отвечает эксперт: min@y™
Ну, раз не против, то лови. Прицепляю к ответу.
Примеров работы с ним у меня полно. К ответу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки ответа)
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 26 января 2011, 19:07
Оценка за ответ: 5
Комментарий к оценке: Держи 1 зае...сь!
|
Мини-форум вопроса
Всего сообщений: 15; последнее сообщение — 27 января 2011, 19:04; участников в обсуждении: 2.
|
min@y™ (статус: Доктор наук), 26 января 2011, 16:52 [#1]:
Могу дать компонент TSysImageList. Он как раз этим занимается.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
26 января 2011, 17:13: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Работа с компонентами и библиотеками модератором Ерёмин А.А. Причина: TListView — компонент.
|
eclipse (статус: Посетитель), 26 января 2011, 18:48 [#2]:
Был бы не против
|
|
eclipse (статус: Посетитель), 27 января 2011, 10:46 [#3]:
Блин min@y™ покажи пример как добавить иконку в listview, чёт не могу разобраться. vsReport стоит.
|
|
min@y™ (статус: Доктор наук), 27 января 2011, 10:54 [#4]:
Цитата (eclipse):
покажи пример как добавить иконку в listview, чёт не могу разобраться. vsReport стоит.
Поставь ListView.Images:= SysImageList; затем при создании нового Item присваивай ему:
Item.ImageIndex:= SysImageList.ImageIndexOf(<имя соотв. файла>);
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
eclipse (статус: Посетитель), 27 января 2011, 11:14 [#5]:
Понятно! Слушай чёт не компилится... указывает на строчку {$I DELPHIAREA.INC} ... орёт типа файл не найден. Хотя скинул оба файла в C:\Program Files\Borland\Delphi7\Lib и C:\Program Files\Borland\Delphi7\Projects\Bpl
ну скорее всего ты мож не всё кинул.
|
|
min@y™ (статус: Доктор наук), 27 января 2011, 11:36 [#6]:
Извини, забыл. Вот этот файл:
{$IFDEF VER170}
{$DEFINE DELPHI9}
{$DEFINE DELPHI9_UP}
{$DEFINE DELPHI7_UP}
{$DEFINE DELPHI6_UP}
{$DEFINE DELPHI5_UP}
{$DEFINE DELPHI4_UP}
{$DEFINE DELPHI3_UP}
{$DEFINE DELPHI2_UP}
{$DEFINE DELPHI1_UP}
{$ENDIF}
{$IFDEF VER150}
{$DEFINE DELPHI7}
{$DEFINE DELPHI7_UP}
{$DEFINE DELPHI6_UP}
{$DEFINE DELPHI5_UP}
{$DEFINE DELPHI4_UP}
{$DEFINE DELPHI3_UP}
{$DEFINE DELPHI2_UP}
{$DEFINE DELPHI1_UP}
{$ENDIF}
{$IFDEF VER140}
{$DEFINE DELPHI6}
{$DEFINE DELPHI6_UP}
{$DEFINE DELPHI5_UP}
{$DEFINE DELPHI4_UP}
{$DEFINE DELPHI3_UP}
{$DEFINE DELPHI2_UP}
{$DEFINE DELPHI1_UP}
{$ENDIF}
{$IFDEF VER130}
{$DEFINE DELPHI5}
{$DEFINE DELPHI5_UP}
{$DEFINE DELPHI4_UP}
{$DEFINE DELPHI3_UP}
{$DEFINE DELPHI2_UP}
{$DEFINE DELPHI1_UP}
{$ENDIF}
{$IFDEF VER120}
{$DEFINE DELPHI4}
{$DEFINE DELPHI4_UP}
{$DEFINE DELPHI3_UP}
{$DEFINE DELPHI2_UP}
{$DEFINE DELPHI1_UP}
{$ENDIF}
{$IFDEF VER100}
{$DEFINE DELPHI3}
{$DEFINE DELPHI3_UP}
{$DEFINE DELPHI2_UP}
{$DEFINE DELPHI1_UP}
{$ENDIF}
{$IFDEF VER90}
{$DEFINE DELPHI2}
{$DEFINE DELPHI2_UP}
{$DEFINE DELPHI1_UP}
{$ENDIF}
{$IFDEF VER80}
{$DEFINE DELPHI1}
{$DEFINE DELPHI1_UP}
{$ENDIF}
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
eclipse (статус: Посетитель), 27 января 2011, 16:23 [#7]:
О! Всё путём! Спасибо!
|
|
eclipse (статус: Посетитель), 27 января 2011, 16:34 [#8]:
Хм... фигня кака-то! Вместо значка для текстового файла вылез значёк рука (ну когда открываешь папку в общий доступ она появляется снизу).
Использовал так:
Var ImgLst: TSysImageList;
begin
ImgLst:= TSysImageList.Create(Self);
suiListView1.SmallImages:= ImgLst;
....
....
suiListView1.Items.Item[i].ImageIndex:= ImgLst.ImageIndexOf(path+'\'+SR.Name);
...
...
end;
|
|
min@y™ (статус: Доктор наук), 27 января 2011, 16:52 [#9]:
Значит ты чёйто перемудрил. У меня всё работает.
Вот кусок реальной проги:
procedure TMainForm.WmDropFiles(var Msg: TWMDropFiles);
var
HF: THandle;
FileName: string;
Buffer: array[0..511] of Char;
Index, Count: Integer;
Item: TlistItem;
CheckSumItem: TCheckSumItem;
begin
if FInProgress
then Exit;
FilesListView.Items.BeginUpdate();
try
if ImmediatelyCheckBox.Checked
then ClearFiles();
HF:= Msg.Drop;
Count:= DragQueryFile(HF, $FFFFFFFF, nil, 0);
for Index:= 0 to Count - 1 do
begin
DragQueryFile(HF, Index, Buffer, SizeOf(Buffer));
FileName:= string(Buffer);
Item:= FilesListView.Items.Add();
Item.Caption:= ExtractFileName(FileName);
Item.ImageIndex:= SysImageList.ImageIndexOf(FileName);
CheckSumItem:= TCheckSumItem.Create(FileName);
Item.SubItems.Add(CheckSumItem.FileSizeStr);
Item.SubItems.Add('?');
Item.SubItems.Add(ExtractFileDir(FileName));
//CheckSumItem.FileSize:=
Item.Data:= CheckSumItem;
// todo: отсеивать повторы
end;
DragFinish(HF);
SetForegroundWindow(Self.Handle);
finally
FilesListView.Items.EndUpdate();
if ImmediatelyCheckBox.Checked
then StartStopButton.Click();
end;
end;
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
eclipse (статус: Посетитель), 27 января 2011, 17:11 [#10]:
Слушай... А нафига эта строчка - FilesListView.Items.BeginUpdate();?
|
|
min@y™ (статус: Доктор наук), 27 января 2011, 17:50 [#11]:
Цитата (eclipse):
Слушай... А нафига эта строчка - FilesListView.Items.BeginUpdate();?
Чтобы компонент 100500 раз не перерисовывался при добавлении пачки Item'ов. Но это не имеет отношения к твоему вопросу.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
eclipse (статус: Посетитель), 27 января 2011, 18:03 [#12]:
аааааа!!!! Зашибись! Ток сам если честно не понял в чём была проблема сделал так:
procedure TForm1.DirFilePath(path:string);
Var Item: TlistItem;
ImgLst: TSysImageList;
...
...
begin
ImgLst:= TSysImageList.Create(Self);
suiListView1.SmallImages:= ImgLst;
...
...
Item:= suiListView1.Items.Add;
Item.Caption:= SR.Name;
Item.ImageIndex:= ImgLst.ImageIndexOf(path+'\'+SR.Name);
тока не пойму в чём разница между таким добавлением - suiListView1.Items.Item[i].ImageIndex:= ImgLst.ImageIndexOf(path+'\'+SR.Name);
и вот таким как сделал в последний раз? - Item.ImageIndex:= ImgLst.ImageIndexOf(path+'\'+SR.Name);
|
|
min@y™ (статус: Доктор наук), 27 января 2011, 18:13 [#13]:
Да никакого.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
eclipse (статус: Посетитель), 27 января 2011, 18:53 [#14]:
тогда почемуто в таком варианте вылетала ошибка? - suiListView1.Items.Item[i].ImageIndex:= ImgLst.ImageIndexOf(path+'\'+SR.Name);
|
|
min@y™ (статус: Доктор наук), 27 января 2011, 19:04 [#15]:
Цитата (eclipse):
тогда почемуто в таком варианте вылетала ошибка?
Мне угадать, какая ошибка?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
28 января 2011, 10:32: Статус вопроса изменён на решённый (изменил автор вопроса — eclipse): помог minay
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|