1.Получить системный ImageList:
| Код | SystemLargeImageList := TImageList.CreateSize(32, 32); SystemLargeImageList.ShareImages := True; SystemLargeImageList.Handle := SHGetFileInfo( PChar(''), 0, fi, SizeOf(TSHFileInfo), SystemIconsFlag or SHGFI_ICON or SHGFI_LARGEICON);
|
2.Связать его с VT 3. При каждой отрисовке (или не при каждой, а только изначально - зависит от алгоритма) - получаем индекс иконки по расширению файла:
| Код | const SystemIconsFlag = SHGFI_ADDOVERLAYS or SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES; TempFlag := SystemIconsFlag or SHGFI_LARGEICON; var fi: _SHFileInfo;
SHGetFileInfo(PChar(ExtractFileName(FileName)), FILE_ATTRIBUTE_NORMAL, fi, SizeOf(TSHFileInfo), TempFlag);
imageIndex := fi.iIcon;
|
Дальше вступает в силу задача: имея PVirtualNode, имея индекс иконки в ImageList - отрисовать ее. Или оставить это на откуп VT (если оно может само рисовать) |