Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

listview + ShGetFileInfo [D7, WinXP]


Redlord ©   (2004-10-28 20:38:00) 

всем приве
искал инфу по listview  +  ShGetFileInfo
в инете тока этот пример везде лежит.
но он у меня не пашет (windows XP).
точнее пашет тока иконок от него не дождешся  
подскажите в чом ошибка ???
буду рад рабочему примеру  

procedure TForm1.FormCreate(Sender: TObject);
var
 fi: TSHFileInfo;
 lc: TListColumn;
ImageListHandle:thandle;
 begin
 DriveComboBox1.DirList := DirectoryListBox1;

listview1.SmallImages := TImageList.Create(nil);
listview1.SmallImages.Handle := ShGetFileInfo('*.*', 0, fi,
     SizeOf(fi), SHGFI_SYSICONINDEX or SHGFI_SMALLICON);

listview1.LargeImages := TImageList.Create(nil);
listview1.LargeImages.Handle := ShGetFileInfo('*.*', 0, fi,
     SizeOf(fi), SHGFI_SYSICONINDEX or SHGFI_SMALLICON);

   lc := listview1.Columns.Add;
   lc.Caption := 'Name';
   lc := listview1.Columns.Add;
   lc.Caption := 'Size';

 UpdateFiles;
end;


VMcL   (2004-10-29 07:46:00) [1]

>> Redlord  (29.10.04 00:36) [2]

> всегда отображается одна и таже на все типы файлов

А знаешь почему? Потому что тебе лень нажать F1.

procedure TForm1.Button1Click(Sender: TObject);
var
 fi: TSHFileInfo;
begin
 ImageList1.Handle := ShGetFileInfo(
   'C:\1.doc',
   0, fi,
   SizeOf(fi), SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
 ListView1.Items[0].ImageIndex := fi.iIcon;
end;


Форма:
object Form1: TForm1
 Left = 1
 Top = 106
 Width = 716
 Height = 414
 Caption = 'Form1'
 Color = clBtnFace
 Font.Charset = DEFAULT_CHARSET
 Font.Color = clWindowText
 Font.Height = -11
 Font.Name = 'MS Sans Serif'
 Font.Style = []
 OldCreateOrder = False
 PixelsPerInch = 96
 TextHeight = 13
 object ListView1: TListView
   Left = 5
   Top = 10
   Width = 661
   Height = 321
   Columns = <>
   Items.Data = {
     210000000100000000000000FFFFFFFFFFFFFFFF000000000000000004746573
     74}
   SmallImages = ImageList1
   TabOrder = 0
   ViewStyle = vsSmallIcon
 end
 object Button1: TButton
   Left = 5
   Top = 340
   Width = 75
   Height = 25
   Caption = 'Button1'
   TabOrder = 1
   OnClick = Button1Click
 end
 object ImageList1: TImageList
   Left = 40
   Top = 115
 end
end


Естественно, чтобы пример функционировал, нужно чтобы существовал файл "C:\1.doc".


Redlord   (2004-10-29 00:36:00) [2]

при указании любого существующего файла (shell32.dll)  иконка всегда отображается одна и таже на все типы файлов (знак расшаренного ресурса)


VMcL   (2004-10-28 23:57:00) [3]

>> Redlord  (28.10.04 20:38)

> подскажите в чом ошибка ???

Во-первых, в слове "чом".
Во-вторых, в том, что нет такого файла *.*


Наверх

Титульная страница Поиск, карта сайта Написать письмо