Диалог выбора иконок
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
А можт кто знает как зделать диалог выбора иконок лежащих внутри Exe или Dll
такой как винда показывает при выборе иконки до нажатия "Обзор".
подробно не обязательно, хотябы направьте на идею.
зарание спасибо.
такой как винда показывает при выборе иконки до нажатия "Обзор".
подробно не обязательно, хотябы направьте на идею.
зарание спасибо.
-
- Сообщения: 230
- Зарегистрирован: 31 авг 2006, 13:11
ищи инфу по РЕ-файлам.
когда-то такое писал.
если сильно надо могу вспомнить на досуге )
когда-то такое писал.
если сильно надо могу вспомнить на досуге )
обычный listView, из перечисляй ресурсы, дергай иконки, пихай в imageList и создавай итемы 

С уважением, Lost Angel...
Спасибо ща попробую
C интерфейсной частью разобрался (попробовал imagelist и т д) получилось но вот с загрузкой иконок из DLL и EXE ни как. почитал учебники там только про загрузку иполняемого кода, форм, и строковых констант(языка), а про загрузку ресурсов типа картинок звуков и т д ни чего. Как загрузить иконки не из файла а например из
shell32.dll
shell32.dll
-
- Сообщения: 230
- Зарегистрирован: 31 авг 2006, 13:11
Ищи литературу по РЕ файлам !!!!
-
- Сообщения: 230
- Зарегистрирован: 31 авг 2006, 13:11
Процесс получения иконок из .EXE, .DLL или .ICO файлов полностью идентичен. Различие только в том, что в .ICO файле может храниться только одна иконка, а в .EXE и .DLL несколько. Для получения иконок из файлов, в модуле ShellAPI, есть функция:
где
Inst
указатель на приложение вызвавшее функцию,
FileName
имя файла из которого необходимо получить иконку,
IconIndex
номер необходимой иконки.
Если функция возвращает значение не равное нулю, то в файле есть следующая иконка.
В данном примере в компонент Image1 выводится иконка запущенного файла.
Если вы хотите создать некий браузер по иконкам, то можете воспользоваться компонентами с закладки Win3.1. Вынесите на форму компонент TFileListBox; затем TDirectoryListBox, в свойстве FileList укажите на список файлов [TFileListBox]; после этого возьмите компонент класса TDriveComboBox, указав в его свойстве DirList на список каталогов [TDirectoryListBox], ну, и, наконец, ставьте TFilterComboBox, который позволит в списке файлов отображать только те файлы, которые соответствуют маске, указанной в свойстве Filter. Здесь в качестве значения укажите следующее: ico|*.ico|dll|*.dll|exe|*.exe|all|*.ico; *.dll; *.exe ..а в свойстве FileList задайте список файлов [TFileListBox]. В обработчике OnClick компонента TFileListBox напишите такой код:
Код: Выделить всё
function ExtractIcon(Inst: THandle; FileName: PChar; IconIndex: Word): HIcon;
Inst
указатель на приложение вызвавшее функцию,
FileName
имя файла из которого необходимо получить иконку,
IconIndex
номер необходимой иконки.
Если функция возвращает значение не равное нулю, то в файле есть следующая иконка.
В данном примере в компонент Image1 выводится иконка запущенного файла.
Код: Выделить всё
uses ShellAPI;
...
procedure TForm1.FormCreate(Sender: TObject);
var
A: array [0..78] of Char;
begin
{Получение имени запущенного файла}
StrPCopy(A, ParamStr(0));
{Вывод на экран нулевой иконки из файла}
Image1.Picture.Icon.Handle := ExtractIcon(HInstance, A, 0);
end;
Код: Выделить всё
var
A: array [0..78] of Char;
begin
{Получение имени файла, указанного в списке файлов}
StrPCopy(A, FileListBox1.FileName);
{Вывод на экран нулевой иконки из файла}
Imag1.Picture.Icon.Handle := ExtractIcon(HInstance, A, 0);
Попробовал - browser по иконкам получился, работает круто!
Только когда по нажатию кнопки, ну скажем "ОК" иконка сохраняется в файл у нее с качеством кайфолом какойто (вся полу серая и в каёмочке) а на форме нормально отображается, можт ище че надо дописать???????
Только когда по нажатию кнопки, ну скажем "ОК" иконка сохраняется в файл у нее с качеством кайфолом какойто (вся полу серая и в каёмочке) а на форме нормально отображается, можт ище че надо дописать???????

вопервых загружаю:
ic:ticon;
ic:=ticon.Create;
ic.Handle:=extracticon(hinstance,'имя.exe',i);
далее идет отображение и выбор
и по нажатию кнопки
ic.SaveToFile('имя.ico');
получается следующее:
0.ico иконка вынутая прогой
1.ico икотка вынутая RESTORATORом
иконки приложены в архиве
ic:ticon;
ic:=ticon.Create;
ic.Handle:=extracticon(hinstance,'имя.exe',i);
далее идет отображение и выбор
и по нажатию кнопки
ic.SaveToFile('имя.ico');
получается следующее:
0.ico иконка вынутая прогой
1.ico икотка вынутая RESTORATORом
иконки приложены в архиве
- Вложения
-
- ico.zip
- (11.12 КБ) 19 скачиваний