Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.19;
Скачать: 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 вся ветка

Текущий архив: 2002.08.19;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.017 c
1-60632
иван61
2002-08-04 13:06
2002.08.19
Надоел ящик с песком. Помогите!


3-60480
DmitryS
2002-07-27 03:18
2002.08.19
Из-за чего возникает


14-60813
Clon
2002-07-22 18:47
2002.08.19
Как работает компилятор?


6-60795
Wather
2002-06-05 23:47
2002.08.19
Помогите разобраться!


3-60548
lety
2002-07-29 22:51
2002.08.19
Filter и строковые поля