Главная страница
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-60733
bobr12
2002-08-07 10:12
2002.08.19
Как узнать имя компьютера на котором запущена программа?


6-60766
Guardian
2002-06-05 06:41
2002.08.19
NMFTP


1-60689
Брат
2002-08-06 09:57
2002.08.19
Компонента


3-60512
bardi
2002-07-29 11:29
2002.08.19
UpdateSQL and Query


4-60920
Izyum
2002-06-13 22:47
2002.08.19
Как программно закрыть окно