Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.07.06;
Скачать: CL | DM;

Вниз

Вопрос по KOLmdvShellControls   Найти похожие ветки 

 
SergeR ©   (2007-09-11 16:15) [0]

Понадобилось в проекте использовать сабж.
Но хотелось, чтоб в KOLmdvShellListView отображались иконки файлов и папок. Это как нибудь можно реализовать?
В демопроекте - ShellComboBox они тоже не отображаются.


 
mdw ©   (2007-09-11 16:56) [1]

Иконки системные? У меня отображаются.


 
SergeR ©   (2007-09-11 17:03) [2]

Да системные. У комбобокса иконки есть, а у Листа пусто.
Вот скрин Вашего демопроекта.
http://keep4u.ru/full/070911/923303d72a82d35cdf/jpg


 
mdw ©   (2007-09-11 17:15) [3]

А вот скрин у меня
www.kolnmck.ru/img/2.jpg

Сейчас посмотрю где и куда копать.


 
mdw ©   (2007-09-11 17:34) [4]

Посмотрел.
попробуй в процедуре 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_LARGEICON or 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);


 
SergeR ©   (2007-09-11 17:56) [5]

Не помогло (.
в SHFileInfo.iIcon возвращается вроде норм - цифирь >0 ))
Result.Handle в GetIcons так же присутствует...


 
sergeR ©   (2007-09-11 17:59) [6]

PS. Win Vista & XP SP2. KOL last ver


 
SergeR ©   (2007-09-11 18:26) [7]

Хм. Перегрузился под XP. Там всё работает оказывается.
Под Вистой не работает...странно


 
mdw ©   (2007-09-11 18:52) [8]

Под Вистой возможно, у меня нет. Тестировал под XP и 2k. Смотри по висте MSDN, если что накопаешь, то поправим для универсальности.

Кстати, заработало с SHGFI_SMALLICON или SHGFI_LARGEICON? Я просто не стал добавлять разную обработку SMALLICON и LARGEICON, т.к.  и так SMALLICON работало...


 
SergeR ©   (2007-09-11 19:05) [9]


> Кстати, заработало с SHGFI_SMALLICON или SHGFI_LARGEICON?

со SMALLICON работает с Large не проверял. Если надо - могу проверить.

> Под Вистой возможно, у меня нет. Тестировал под XP и 2k.
>  Смотри по висте MSDN, если что накопаешь, то поправим для
> универсальности.

MSDN нового нету, только 2005. Гуглю пока.  
По структуре SHFileInfo изменений нет никаких вроде.


 
SergeR ©   (2007-09-11 19:11) [10]

Кстати если использовать связку ListView + imagelist
и дерево грузить вручную  то всё прекрасно работает.
Т.е. SHGetFileInfo() в loadsystemicons() в KOL.pas отрабатывает нормально...


 
mdw ©   (2007-09-11 19:13) [11]


> со SMALLICON работает с Large не проверял. Если надо - могу
> проверить.

Да зачем, если и так работает?

> По структуре SHFileInfo изменений нет никаких вроде.

посмотри тогда еще по
Result.Handle:= SHGetFileInfo("", 0, SHFileInfo, SizeOf(SHFileInfo), SHGFI_SYSICONINDEX or Index);

Слошай, а VCL ShellListView работает? Если да, тогда можно там покопать.


 
mdw ©   (2007-09-11 19:29) [12]


> > со SMALLICON работает с Large не проверял. Если надо -
>  могу > проверить.Да зачем, если и так работает?

Хотя в Висте может стоит попробовать.


 
SergeR ©   (2007-09-11 19:40) [13]


>
> посмотри тогда еще по
> Result.Handle:= SHGetFileInfo("", 0, SHFileInfo, SizeOf(SHFileInfo),
>  SHGFI_SYSICONINDEX or Index);
>

Хендл возвращает + см [10], т.е. SHGetFileInfo отрабатывет нормально.

> Слошай, а VCL ShellListView работает? Если да, тогда можно
> там покопать.
Не знаю, я VCL весь с панели убрал, чтоб глаза не мозолил ))


 
mdw ©   (2007-09-11 21:54) [14]

Попрубуй все же SHGFI_LARGEICON, возможно в Висте это принципиально?

Гм . Может Висту пора поставить? типа тестировать? Мне просто и ХР зватает. На работе по любому XP или 2k, а дома не очень много мощи - Atlon XP2000...


 
SergeR ©   (2007-09-12 12:53) [15]


> Попрубуй все же SHGFI_LARGEICON, возможно в Висте это принципиально?

в Висте никак не отображается в LV.

> Гм . Может Висту пора поставить? типа тестировать? Мне просто
> и ХР зватает. На работе по любому XP или 2k, а дома не очень
> много мощи - Atlon XP2000...

У меня сейчас виста стоит с Весны на celeron 2.4Ghz с встроенной видюхой и 1ггб памяти (было 512 - но мало ей) + комп работает, как проксик для инета с полным протоколированием на 10 машин+ наставлено куча всяких MS SQL Server 2005 и подобной чуши.
Вроде нормально пашет.
Второй осью XP стоит.
Виста грузится быстрее, работает, субъективно, не медленнее XP.
Покрайней мере после использования XP в течение года я обычно сношу её нафик - тупить начинает страшно.
А Виста пока держится.


 
mdw ©   (2007-09-12 13:37) [16]

В общем, пока не знаю, в чем причина. Нужно ставить висту и смотреть.
Попробуй такой вариант, может поможет, хотя врядли:
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-13 14:34) [17]

Такой способ пробовал еще вначале. Не помогает.

Думается трабла не в GetIcons или GetIconIndexes, а где то еще.
Т.к. в комбобоксе ведь всё нормально отображается хоть со smallicon, хоть с Largeicon, а там эти функции ведь тоже используются.
  Кстати формирование списка на Висте происходит очень медленно.
Я попробовал зайти в windows\system32. Всё прога задумалась надолго.
Пришлось вырубать из диспетчера.
Пробовал тоже на XP\Win2003 - читает на порядок быстрее.


 
mdw ©   (2007-09-13 14:57) [18]

Поставил Висту. Победил!!! :)) Сам дурак был.

> Кстати формирование списка на Висте происходит очень медленно.

И формирование быстрее стало на висте:)
Сегодня обновлю. Сейчас займусь, много чего обновить есть.


 
SergeR ©   (2007-09-13 15:27) [19]

Огромадный биг сенкс )) !!!


 
mdw ©   (2007-10-01 17:20) [20]

Если интересно, обновил на kolnmck.ru. Много переделал, стало работать в разы быстрее.


 
mdw ©   (2007-10-01 17:21) [21]

+ поддержка WinCE


 
SergeR ©   (2007-10-01 18:08) [22]

Да. Стало работать на много быстрее. Спасибо !



Страницы: 1 вся ветка

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

Наверх




Память: 0.52 MB
Время: 0.018 c
2-1212912443
rena
2008-06-08 12:07
2008.07.06
Действия при открытии формы


15-1211091780
NailMan
2008-05-18 10:23
2008.07.06
Объясните как прога определяет музыку?


2-1213004276
n_sch
2008-06-09 13:37
2008.07.06
Загрузка данных в DBF из текстового файла


8-1182518764
Рацелий
2007-06-22 17:26
2008.07.06
Симуляция и анимация текстурой движения цвета


15-1211204001
Prohodil Mimo
2008-05-19 17:33
2008.07.06
как заставить прокрутиться закрытый ComboBox?