![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по KOLmdvShellControls [Delphi, Windows]
SergeR © (2007-09-11 16:15:00)Понадобилось в проекте использовать сабж.
Но хотелось, чтоб в KOLmdvShellListView отображались иконки файлов и папок. Это как нибудь можно реализовать?
В демопроекте - ShellComboBox они тоже не отображаются.
SergeR (2007-10-01 18:08:00) [1]Да. Стало работать на много быстрее. Спасибо !
mdw (2007-10-01 17:21:00) [2]+ поддержка WinCE
mdw (2007-10-01 17:20:00) [3]Если интересно, обновил на kolnmck.ru. Много переделал, стало работать в разы быстрее.
SergeR (2007-09-13 15:27:00) [4]Огромадный биг сенкс )) !!!
mdw (2007-09-13 14:57:00) [5]Поставил Висту. Победил!!! :)) Сам дурак был.
> Кстати формирование списка на Висте происходит очень медленно.
И формирование быстрее стало на висте:)
Сегодня обновлю. Сейчас займусь, много чего обновить есть.
SergeR (2007-09-13 14:34:00) [6]Такой способ пробовал еще вначале. Не помогает.
Думается трабла не в GetIcons или GetIconIndexes, а где то еще.
Т.к. в комбобоксе ведь всё нормально отображается хоть со smallicon, хоть с Largeicon, а там эти функции ведь тоже используются.
Кстати формирование списка на Висте происходит очень медленно.
Я попробовал зайти в windows\system32. Всё прога задумалась надолго.
Пришлось вырубать из диспетчера.
Пробовал тоже на XP\Win2003 - читает на порядок быстрее.
mdw (2007-09-12 13:37:00) [7]В общем, пока не знаю, в чем причина. Нужно ставить висту и смотреть.
Попробуй такой вариант, может поможет, хотя врядли:
function TShellFileSys.GetIcons(Index: Integer): PImageList;
begin
case Index of
SHGFI_ICON: if FIcons <> nil then Exit;
SHGFI_SMALLICON: if FSmallIcons <> nil then Exit;
end;
Result:= NewImageList(Applet);
Result.LoadSystemIcons(SHGFI_SMALLICON = Index);
case Index of
SHGFI_ICON: FIcons:= Result;
SHGFI_SMALLICON: FSmallIcons:= Result;
end;
end;
Ну еще можно попробовать GetIconIndexs поставить SHGFI_ICON.
SergeR (2007-09-12 12:53:00) [8]
> Попрубуй все же SHGFI_LARGEICON, возможно в Висте это принципиально?
в Висте никак не отображается в LV.
> Гм . Может Висту пора поставить? типа тестировать? Мне просто
> и ХР зватает. На работе по любому XP или 2k, а дома не очень
> много мощи - Atlon XP2000...
У меня сейчас виста стоит с Весны на celeron 2.4Ghz с встроенной видюхой и 1ггб памяти (было 512 - но мало ей) + комп работает, как проксик для инета с полным протоколированием на 10 машин+ наставлено куча всяких MS SQL Server 2005 и подобной чуши.
Вроде нормально пашет.
Второй осью XP стоит.
Виста грузится быстрее, работает, субъективно, не медленнее XP.
Покрайней мере после использования XP в течение года я обычно сношу её нафик - тупить начинает страшно.
А Виста пока держится.
mdw (2007-09-11 21:54:00) [9]Попрубуй все же SHGFI_LARGEICON, возможно в Висте это принципиально?
Гм . Может Висту пора поставить? типа тестировать? Мне просто и ХР зватает. На работе по любому XP или 2k, а дома не очень много мощи - Atlon XP2000...
SergeR (2007-09-11 19:40:00) [10]
>
> посмотри тогда еще по
> Result.Handle:= SHGetFileInfo('', 0, SHFileInfo, SizeOf(SHFileInfo),
> SHGFI_SYSICONINDEX or Index);
>
Хендл возвращает + см [10], т.е. SHGetFileInfo отрабатывет нормально.
> Слошай, а VCL ShellListView работает? Если да, тогда можно
> там покопать.
Не знаю, я VCL весь с панели убрал, чтоб глаза не мозолил ))
mdw (2007-09-11 19:29:00) [11]
> > со SMALLICON работает с Large не проверял. Если надо -
> могу > проверить.Да зачем, если и так работает?
Хотя в Висте может стоит попробовать.
mdw (2007-09-11 19:13:00) [12]
> со SMALLICON работает с Large не проверял. Если надо - могу
> проверить.
Да зачем, если и так работает?
> По структуре SHFileInfo изменений нет никаких вроде.
посмотри тогда еще по
Result.Handle:= SHGetFileInfo('', 0, SHFileInfo, SizeOf(SHFileInfo), SHGFI_SYSICONINDEX or Index);
Слошай, а VCL ShellListView работает? Если да, тогда можно там покопать.
SergeR (2007-09-11 19:11:00) [13]Кстати если использовать связку ListView + imagelist
и дерево грузить вручную то всё прекрасно работает.
Т.е. SHGetFileInfo() в loadsystemicons() в KOL.pas отрабатывает нормально...
SergeR (2007-09-11 19:05:00) [14]
> Кстати, заработало с SHGFI_SMALLICON или SHGFI_LARGEICON?
со SMALLICON работает с Large не проверял. Если надо - могу проверить.
> Под Вистой возможно, у меня нет. Тестировал под XP и 2k.
> Смотри по висте MSDN, если что накопаешь, то поправим для
> универсальности.
MSDN нового нету, только 2005. Гуглю пока.
По структуре SHFileInfo изменений нет никаких вроде.
mdw (2007-09-11 18:52:00) [15]Под Вистой возможно, у меня нет. Тестировал под XP и 2k. Смотри по висте MSDN, если что накопаешь, то поправим для универсальности.
Кстати, заработало с SHGFI_SMALLICON или SHGFI_LARGEICON? Я просто не стал добавлять разную обработку SMALLICON и LARGEICON, т.к. и так SMALLICON работало...
SergeR (2007-09-11 18:26:00) [16]Хм. Перегрузился под XP. Там всё работает оказывается.
Под Вистой не работает...странно
sergeR (2007-09-11 17:59:00) [17]PS. Win Vista & XP SP2. KOL last ver
SergeR (2007-09-11 17:56:00) [18]Не помогло (.
в SHFileInfo.iIcon возвращается вроде норм - цифирь >0 ))
Result.Handle в GetIcons так же присутствует...
mdw (2007-09-11 17:34:00) [19]Посмотрел.
попробуй в процедуре GetIconIndexs SHGFI_SMALLICON заменить на SHGFI_LARGEICON
procedure GetIconIndexs(ID: PItemIDList; var Normal, Selected: integer);
...
if SHGetFileInfo(PChar(ID), 0, SHFileInfo, SizeOf(SHFileInfo), SHGFI_PIDL or SHGFI_SYSICONINDEX or {SHGFI_SMALLICON}SHGFI_LARGEICON) = 0 then Normal:= -1
else Normal:= SHFileInfo.iIcon;
if SHGetFileInfo(PChar(ID), 0, SHFileInfo, SizeOf(SHFileInfo), SHGFI_PIDL or SHGFI_SYSICONINDEX or {SHGFI_SMALLICON}SHGFI_LARGEICONor SHGFI_OPENICON) = 0 then Selected:= -1
...
У меня правда и так работает.....
Если не поможет посмотри что вообще возвращается в SHFileInfo.iIcon.
Еще можно глянуть в
function TShellFileSys.GetIcons(Index: Integer): PImageList;
что возвращается в строчке:
Result.Handle:= SHGetFileInfo('', 0, SHFileInfo, SizeOf(SHFileInfo), SHGFI_SYSICONINDEX or Index);
mdw (2007-09-11 17:15:00) [20]А вот скрин у меня
www.kolnmck.ru/img/2.jpg
Сейчас посмотрю где и куда копать.