|
Вопрос # 3 850/ вопрос открыт / |
|
Здравствуйте!
Собираюсь сделать для своего приложения ассоциацию, у меня будет 3 типа файлов, .waw .mp3 .ogg и на каждый своя иконка. Хранить все иконки рядом с приложением, их может удалить\заменить на свои юзер :)
код ассоциации ниже, вопрос вот в чем, как поместить все иконки в приложение, и указать каждому типу файлов следующий код
Application.ExeName+',0' первая иконка.. Application.ExeName+',1'; вторая и т д , или как это все сунуть в отдельную dll библиотеку ? попробовал в лоб создать новую dll библиотеку, в ней создать форму, а на форме разместить 3 image с загруженными иконками... dll компилится, и явно видно что все иконки в ней, т.к. размер dll >1.5 mb но иконок в ней приложение не видит... как можно засунуть в dll ресурсы, чтобы их видело приложение ? за раннее огромное спасибо :)
Приложение: Переключить в обычный режим-
- uses Registry, ShlObj;
- ...
- var Reg: TRegistry;
- ...
- procedure Associate;
- var s:string;
- begin
-
- Reg.RootKey := HKEY_CLASSES_ROOT;
-
- Reg.OpenKey('.devOpenWithProgids', true);
- Reg.WriteString('TestApplication.dev', '');
-
- Reg.OpenKey('TestApplication.devDefaultIcon', true);
- s:=Application.ExeName+',0';
- Reg.WriteString('', s);
-
- Reg.OpenKey('TestApplication.devShellOpen', true);
-
-
- Reg.OpenKey('command', true);
- s:='"'+Application.ExeName+'" "%1"';
- Reg.WriteString('', s);
-
- Reg.Free;
-
- SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
- end;
|
Вопрос задал: BloodVIRUS (статус: Посетитель)
Вопрос отправлен: 5 марта 2010, 16:59
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: Dron
Здравствуйте, BloodVIRUS!
Чтобы к иконкам можно было обращаться таким образом, они должны быть ресурсами приложения. Создайте res-файл любым доступным способом (ручным написанием RC-файла и его компиляцией brcc.exe, с помошью программ типа Resource Hacker и т.д.) и подключите его к программе строкой {$R icons.res}.
|
Ответ отправил: Dron (статус: Студент)
Время отправки: 5 марта 2010, 17:15
|
Ответ #2. Отвечает эксперт: Amidamaru
Здравствуйте, BloodVIRUS!
Добавить ресурсы можно с помощью обычного текстового файла ресурсов.
Создайте файл, например resplus.rc и запишите в нем:
ZICON1 ICON icon1.ico
ZICON2 ICON icon2.ico
ZICON3 ICON icon3.ico
...
как видно в каждой строчке находится описание добавляемого ресурса:
ИМЯ_РЕСУРСА ТИП_РЕСУРСА Имя_Файла
также не стоит забывать, что иконки в ресурсах при компиляции распределяются по алфавиту. Имя "главной" иконки, которая находится в стандартном файле ресурсов - MAINICON
Если добавить иконки с именем по алфавиту "выше" - то эта иконка и станет "главной".
После того как вы создали этот файл (желательно в той же папке что и проект), откройте менеджер проекта и добавьте этот файл в проект или добавьте в код строчку
{$R 'resplus.res' 'resplus.rc'}
|
Ответ отправил: Amidamaru (статус: 4-ый класс)
Время отправки: 5 марта 2010, 17:17
|
Мини-форум вопроса
Всего сообщений: 1; последнее сообщение — 5 марта 2010, 19:30; участников в обсуждении: 1.
|
min@y™ (статус: Доктор наук), 5 марта 2010, 19:30 [#1]:
Эх, хотел пример привести, но уже ответили...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|