![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | 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, спасибо, работает!  
		
	
		
		
		
		
		
	
		
		
	
	
	![]()  |