Вниз
Скачать: CL | DM;

TListView c графикой.   Найти похожие ветки 

 
V.Turecky   (2002-08-03 16:00) [0]

Добрый день. В компонент TListView я загружаю midi файлы со значками. Всё работает - отображаются и файлы и значки, но есть одно но. Когда запускаешь программу когда Windows уже загружена - всё нормально. Но когда программа автоматически загружается с Windows (для этого она у меня прописана в ключе реестра HКLM\Software\Microsoft\Windows\CurrentVersion\Run), тогда значки в TListView не отображаються. Может, кто-нибудь знает в чём дело и как решить проблему?

procedure UpdateFiles;
var
sr: TSearchRec;
li: TListItem;
fi: TSHFileInfo;
begin
Form1.ListView1.Items.BeginUpdate;
Form1.ListView1.Items.Clear;
if FindFirst(ExtractFilePath(Application.EXEName) + "*.mid", faAnyFile, sr) = 0 then repeat
if sr.Attr and faDirectory <> 0 then continue;
li := Form1.ListView1.Items.Add;
li.Caption := sr.Name;
ShGetFileInfo("*.mid", 0, fi, SizeOf(fi), SHGFI_SMALLICON or SHGFI_SYSICONINDEX);
li.ImageIndex := fi.iIcon;
until FindNext(sr) <> 0;
FindClose(sr);
Form1.ListView1.Items.EndUpdate;
end;

//При создании формы создаю TImageList со значками
procedure TForm1.FormCreate(Sender: TObject);
var
fi: TSHFileInfo;
begin
with ListView1 do
begin
SmallImages := TImageList.Create(nil);
SmallImages.Handle := SHGetFileInfo("*.mid", 0, FI, SizeOf(TSHFileInfo),
SHGFI_SMALLICON or SHGFI_SYSICONINDEX );
end;
UpdateFiles;
end;


 
V.Turecky   (2002-08-04 08:42) [1]

Ребята, я понимаю, что вопрос не из легких, но, может, в данном коде есть какие-то ошибки?


 
Rem ©   (2002-08-04 09:41) [2]

Ошибок в коде нет. Функция SHGetFileInfo относится к функциям оболочки, а оне-то еще не загружена.
В таком случае, наверное, единственный путь - копаться в реестре в поисках ассоциированной иконки, а потом еще и самостоятельно извлекать ее из файлового ресурса.
Можно, правда, в цикле ждать момента, когда подгрузится оболочка, и тогда пользоваться ее функциями.


 
V.Turecky   (2002-08-04 09:44) [3]

А, может, можно как-нибудь перезагрузить приложение?


 
ValeraVV ©   (2002-08-05 06:54) [4]

Попробуй поместить ярлык к своей программе в меню "Автозагрузка", по-моему, она будет грузиться после оболочки


 
Lmatveev   (2002-08-06 10:39) [5]

Попробуй в параметрах SHGetFileInfo использовать SHGFI_USEFILEATTRIBUTES



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.016 c
3-60494
Старик
2002-07-29 13:58
2002.08.19
Структура таблиц


1-60697
proc
2002-08-05 15:19
2002.08.19
if Var1(0.01) > Var2(0.01) = True


1-60615
kofman
2002-08-08 00:35
2002.08.19
Как узнать размер файла на ервере без скаивания файла


1-60685
j_onion
2002-08-06 11:16
2002.08.19
Сообщения....


3-60482
AccsProgr
2002-07-28 13:10
2002.08.19
Как программно поменять 2 записи местами (Custom сортировка)




   Наверх