Форум: "Основная";
Текущий архив: 2002.08.19;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c