Форум: "Основная";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
ВнизDll как хранилище иконок Найти похожие ветки
← →
Jioniro (2005-09-27 15:06) [0]Привет всем, такая проблема!
Есть эдемент управления при нажатии на который необходимо заменить одну иконку (на этом элементе управления) на другую. Таких элементов много.
Мне нужно хранилище этих иконок.
Подскажите какой компонент использовать как хранилище или может быть dll. Если есть идеи как использовать dll как хранилище то, пожплуйста, с примером, потому что с dll я никогда не работал.
← →
Digitman © (2005-09-27 15:30) [1]а почему именно dll возникла на горизонте ?
имей объект TImageList - и вуаля ! Просто, наглядно. эффективно, со вкусом ..
или где ?
← →
y-soft © (2005-09-27 15:30) [2]1. Создаете ресурсы из своих иконок
2. Нажимаете в Delphi File\New и выбираете в появившемя окне DLL
3. Прямо в открывшемся файле DPR в любом месте вставляете строчку{$R Путь_к_созданному_Вами_файлу_ресурсов.res}
4. Компилируете и сохраняете проект
Далее, чтобы использовать можете поступать со своей DLL следующим образом:
1.Загружаете ее
var
DllHandle : HMODULE;
DllHandle := LoadLibraryEx(Путь_к_Вашей_DLL, 0, LOAD_LIBRARY_AS_DATAFILE);
2. Загружаете свои иконки
var
Ic : TIcon;
Ic := TIcon.Create;
Ic.Handle := LoadIcon(DllHandle, Наименоване_ресурса);
Иконку можете загрузить в какой-нибудь ImageList или использовать непосредственно...
3. Когда иконки больше не нужны, освобождаете занятые ими ресурсы
Ic.Free;
4. По окончанию работы выгрузите DLL
FreeLibrary(DllHandle);
Показан только общий алгоритм, в реальном коде добавятся по крайней мере проверки на успешность вызова функций...
← →
y-soft © (2005-09-27 15:36) [3]>Digitman © (27.09.05 15:30) [1]
К сожалению, TImageList написан так, что в DFM он не схраняет 32-битные иконки с прозрачностью должным образом, поэтому приходится грузить при инициализации из ресурсов (ну и немного колдовать с WinAPI, конечно) :)
← →
OldNaum © (2005-09-27 15:51) [4]сразу вопрос есть ) есть такая штука - называется MBBuilder (визуальная среда проектирования / разработки прикладного ПО для MapInfo на MapBasic"e) - она позволяет использовать пользовательские иконки на тулбарах в проектируемом приложении.
в качестве хранилища иконок она как раз использует DLL. подскажите как можно программно заменить / добавить / удалить определенную иконку из ресурсов DLL, дабы автоматизировать сей процесс, а то с ResHacker"ом / eXeScope запаривает сидеть )
← →
rOOse © (2005-09-27 15:59) [5]
> [4] OldNaum © (27.09.05 15:51)
> а то с ResHacker"ом / eXeScope запаривает сидеть )
пользуйся Restorator"ом
← →
y-soft © (2005-09-27 16:01) [6]>OldNaum © (27.09.05 15:51) [4]
подскажите как можно программно заменить / добавить / удалить определенную иконку из ресурсов DLL
Разве что таким же путем, как это делает ResHacker - парсить ресурсы в DLL на низком уровне и затем программно создавать новые и формировать секцию ресурсов в DLL заново :(
← →
OldNaum © (2005-09-28 04:56) [7]кхе )
rOOse © (27.09.05 15:59) [5]
да ресторатор тоже самое, господи ) тут надо подвигаться все-таки к автоматизации, ну их, эти редакторы (
y-soft © (27.09.05 16:01) [6]
может быть есть инфа / примеры? чтение ресурсов часто вижу, а вот далее... Мастер, неужели никто ни сталкивался с записью и прочими операциями?
← →
Джо © (2005-09-28 05:04) [8]
> [7] OldNaum © (28.09.05 04:56)
Наверное, копать нужно в сторону BeginUpdateResource/UpdateResource/EndUpdateResource.
← →
y-soft © (2005-09-28 07:23) [9]>Джо © (28.09.05 05:04) [8]
Наверное, копать нужно в сторону BeginUpdateResource/UpdateResource/EndUpdateResource
Поддерживается только в NT-системах или в Win9X с установленным Microsoft Layer for Unicode on Windows 95/98/Me Systems
В MSDN есть пример использования, только вот эти функции сами ресурсы не строят, а только позволяют уменьшить геморрой по переформатированию PE...
Осложняет дело то, что в MSDN информация по внутренней структуре разных видов ресурсов разрознена и содержит много ошибок :(
>OldNaum © (28.09.05 04:56) [7]
может быть есть инфа / примеры? чтение ресурсов часто вижу, а вот далее...
Посмотрите здесь утилиты, написанные на Delphi:
http://www.wilsonc.demon.co.uk/files/d9/resourceutils/resourceutils.zip
Вроде бы что-то было и в JEDI Code Library
А примеров на C и C++ в инете вообще много...
← →
y-soft © (2005-09-28 07:30) [10]>OldNaum © (28.09.05 04:56) [7]
Исходники редактора ресурсов, написанного Colin Wilson на Delphi:
http://www.btinternet.com/~wilsoncpw/xn_resourceeditor_source.zip
Код всех используемых компонентов и библиотек находится на
http://www.wilsonc.demon.co.uk/delphi.htm
← →
OldNaum © (2005-09-28 11:37) [11]y-soft я тя расцелую при встрече ))) спасибо огромное!
← →
y-soft © (2005-09-28 11:54) [12]>OldNaum © (28.09.05 11:37) [11]
Да не за что, просто я сам сталкивался с похожей проблемой и провел некоторые изыскания... А целует меня уже внучка :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.04 c