![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Извлечение иконки [D7, WinXP]
dimon_programmer © (2004-06-30 10:14:00)Здраствуйте мастера!
Подскажите как извлечь из ЛЮБОГО файла или папки иконку и добавать её в ImageList???
Nomolos (2004-07-06 19:54:00) [1]Для получения иконки 16x16 нужно использовать ExtractIconEx (информация есть в Platform SDK), но существует масса проблем, связаных с её использованием. Если Вам необходимо создать что-то вроде эксплорера файлов, то легче сделать так:
- добавить на форму ImageList
- установить его свойство ShareImages в True
- добавить в usesбиблиотеку ShellAPI
- в обработку OnCreate добавить переменную Info типа TShFileInfo, а в код командуImageList1.Handle := SHGetFileInfo('', 0, Info, SizeOf(TShFileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
- При создании новой ячейки списка (например, в TreeView) выполнить
SHGetFileInfo(PChar(FilePath), 0, Info, SizeOf(TShFileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
NewNode.ImageIndex := Info.iIcon;
NewNode.SelectedIndex := Info.iIcon;
В FilePath должно содержаться полное имя (с путём) файла. Если оно задаётся явно, то PChar() нужно убрать.
grom (2004-07-06 17:49:00) [2]a какую надо иконку 16х16?
Afteam (2004-07-06 09:20:00) [3]to Begin...End:
Я проверял. Работать будет. Только иконку даст 32х32.
begin...end (2004-07-01 09:31:00) [4]
> dimon_programmer
var
Icon: TIcon;
begin
Icon := TIcon.Create;
Icon.Handle := ExtractIcon(HInstance, 'С:\MyFile.exe', 0);
ImageListName.AddIcon(Icon);
Icon.Free;
end;
P.S. Не проверял.
grom (2004-07-01 09:18:00) [5]Image1.picture.icon.Handle:=extractIcon(hInstance,PChar('C:\file.exe'),0);
ImageList1.add(Image1.Picture.Icon.Handle);
примерно так
wisekaa (2004-06-30 13:12:00) [6]Определись что ты хочешь?
1. В D7 есть пример resxplor - посмотри.
2. Примеры есть в кулибе.
3.
- Научиться создавать TIcon и читать в него иконку.
- Научиться добавлять этот объект в ImageList.
Iconka (2004-06-30 13:04:00) [7]А ты уверен что в ЛЮБОМ файле или папке содержится иконка?