Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 966

/ вопрос решён /

Приветствую, уважаемые эксперты! Подскажите как мне отобразить иконку файла в ListView таким макааром:
suiListView1.Items.Item[i].ImageIndex:= ExtractAssociatedIcon.... ?

Эту функцию я использую в цикле и в ListView я хочу организовать отображение сперва иконки файла с именем а потом всё остальное.

eclipse Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: 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™

min@y™ (статус: Доктор наук), 26 января 2011, 16:52 [#1]:

Могу дать компонент TSysImageList. Он как раз этим занимается.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

26 января 2011, 17:13: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Работа с компонентами и библиотеками модератором Ерёмин А.А. Причина: TListView — компонент.

eclipse

eclipse (статус: Посетитель), 26 января 2011, 18:48 [#2]:

Был бы не против :)
eclipse

eclipse (статус: Посетитель), 27 января 2011, 10:46 [#3]:

Блин min@y™ покажи пример как добавить иконку в listview, чёт не могу разобраться. vsReport стоит.
min@y™

min@y™ (статус: Доктор наук), 27 января 2011, 10:54 [#4]:

Цитата (eclipse):

покажи пример как добавить иконку в listview, чёт не могу разобраться. vsReport стоит.

Поставь ListView.Images:= SysImageList; затем при создании нового Item присваивай ему:
Item.ImageIndex:= SysImageList.ImageIndexOf(<имя соотв. файла>);
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
eclipse

eclipse (статус: Посетитель), 27 января 2011, 11:14 [#5]:

Понятно! Слушай чёт не компилится... указывает на строчку {$I DELPHIAREA.INC} ... орёт типа файл не найден. Хотя скинул оба файла в C:\Program Files\Borland\Delphi7\Lib и C:\Program Files\Borland\Delphi7\Projects\Bpl

ну скорее всего ты мож не всё кинул.
min@y™

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

eclipse (статус: Посетитель), 27 января 2011, 16:23 [#7]:

О! Всё путём! Спасибо!
eclipse

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™

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

eclipse (статус: Посетитель), 27 января 2011, 17:11 [#10]:

Слушай... А нафига эта строчка - FilesListView.Items.BeginUpdate();?
min@y™

min@y™ (статус: Доктор наук), 27 января 2011, 17:50 [#11]:

Цитата (eclipse):

Слушай... А нафига эта строчка - FilesListView.Items.BeginUpdate();?

Чтобы компонент 100500 раз не перерисовывался при добавлении пачки Item'ов. Но это не имеет отношения к твоему вопросу.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
eclipse

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™

min@y™ (статус: Доктор наук), 27 января 2011, 18:13 [#13]:

Да никакого.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
eclipse

eclipse (статус: Посетитель), 27 января 2011, 18:53 [#14]:

тогда почемуто в таком варианте вылетала ошибка? - suiListView1.Items.Item[i].ImageIndex:= ImgLst.ImageIndexOf(path+'\'+SR.Name);
min@y™

min@y™ (статус: Доктор наук), 27 января 2011, 19:04 [#15]:

Цитата (eclipse):

тогда почемуто в таком варианте вылетала ошибка?

Мне угадать, какая ошибка?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

28 января 2011, 10:32: Статус вопроса изменён на решённый (изменил автор вопроса — eclipse): помог minay

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:48
Выполнено за 0.03 сек.