Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2008.07.06;
Скачать: [xml.tar.bz2];

Вниз

Вопрос по 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 вся ветка

Форум: "KOL";
Текущий архив: 2008.07.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.039 c
2-1212657135
atomAltera
2008-06-05 13:12
2008.07.06
Самопроизвольная прокрутка в редакторе.


2-1212738159
GreyWolf
2008-06-06 11:42
2008.07.06
Архитектура приложения


2-1213017952
tytus
2008-06-09 17:25
2008.07.06
AV при Synchronize в модальной форме.


2-1212756449
tytus
2008-06-06 16:47
2008.07.06
Как оптимизировать код?


2-1212732220
кот
2008-06-06 10:03
2008.07.06
создание компонента





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский