![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Доброго времени суток!
Использую ImageList, который пополняется так: Код:
procedure ProcName(FName: String); var Icon: TIcon; Icon32,Icon16: HICON; begin if Integer(ExtractIconEx(PWideChar(FName), i, Icon16, Icon32, 1) >0 then begin Icon := TIcon.Create; Icon.Handle := Icon16; ImageList.AddIcon(Icon); Icon.Free; end; end; Кинул на форму TImage, выгрузил иконку в него - все ОК, красиво и без контуров. Поискав в Гугле узнал, что ImageList у многих портит иконки, как-то криво меняя глубину цвета поциентов. Увы, Гугл не дал ответа как с этим бороться... Собственно, в этом и вопрос. Последний раз редактировалось Agat330, 20.04.2014 в 17:04. |
#2
|
||||
|
||||
![]() А если так попробовать
Код:
procedure TForm1.FormCreate(Sender: TObject); var SysIL, SysSIL : THandle; SFI : TSHFileInfo; begin SysImageList1 := TImageList.Create(self); with SysImageList1 do begin Width := 16; Height:= 16; SysSIL:= SHGetFileInfo('', 0, SFI, SizeOf(SFI), SHGFI_SYSICONINDEX or SHGFI_SMALLICON); if SysSIL <> 0 then begin SysImageList1.Handle := SysSIL; ShareImages := True; end; end; SysImageList2 := TImageList.Create(self); with SysImageList2 do begin Width:= 32; Height:= 32; SysIL:= SHGetFileInfo('', 0, SFI, SizeOf(SFI), SHGFI_SYSICONINDEX or SHGFI_LARGEICON); if SysIL <> 0 then begin SysImageList2.Handle := SysIL; ShareImages := True; end; end; end; function GetIconIndex(const AFile: string; Attrs: DWORD): integer; var SFI: TSHFileInfo; begin SHGetFileInfo(PChar(AFile), Attrs, SFI, SizeOf(TSHFileInfo), SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES); Result := SFI.iIcon; end; ... with ListView.Items.Add do begin Caption := FName; ImageIndex := GetIconIndex(Caption, FILE_ATTRIBUTE_NORMAL); SubItems.Add(FSize); SubItems.Add(FType); SubItems.Add(FDateTime); end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#3
|
||||
|
||||
![]() добавь на создание формы:
Код:
ImageList.Handle:=ImageList_Create(ImageList.Width, ImageList.Height, ILC_COLOR32 or ILC_MASK, ImageList.AllocBy, ImageList.AllocBy); Пишу программы за еду. __________________ |
#4
|
|||
|
|||
![]() NumLock, пробую твой вариант. Ругается на ILC_COLOR32 or ILC_MASK - Undeclarated identifier. Чую, нужно что-то в Uses добавить.
Alegun, можно по-подробнее, что делает твой код? Забыл сказать - мой бук пока в ремонте, выдали другой. На нем RAD Studio XE3, пишу в нем. Может, беда в том, что другая версия и некоторые компоненты могут работать иначе? Последний раз редактировалось Agat330, 20.04.2014 в 17:50. |
#5
|
||||
|
||||
![]() >> CommCtrl
Пишу программы за еду. __________________ |
#6
|
|||
|
|||
![]() NumLock, спасибо, работает!
![]() |