Форум: "Основная";
Текущий архив: 2002.08.29;
Скачать: [xml.tar.bz2];
ВнизВопросик??? Найти похожие ветки
← →
Brand (2002-08-01 22:45) [0]У меня в программе используется много фалов с иконками (порядка 20). Все они у меня лежат в отдельном каталоге и подгружаются оттуда. Хотелось-бы как-нибудь добавить эти иконки себе в проект (на форму или еще как) и вообще стереть их с диска. Как это сделать?
← →
DiamondShark (2002-08-01 22:52) [1]Использовать ресурсы.
Файл ресурса (.res) можно создать Image Editor-ом
Или руками набрать текст ресурса (.rc) и скомпилить его brcc32
В программе в любом месте напишите
{$R MyIcons.RES}
← →
Brand (2002-08-01 23:43) [2]Вот только у меня иконки 256-цветные, а Image Editor работает только с 16-ю.
← →
Almaz (2002-08-02 02:37) [3]Существует еще Resource Workshop - он работает с любыми иконками, в т.ч. и 256 цветными.
Удачи.
← →
Юрий Зотов (2002-08-02 08:41) [4]Если иконок много, то гораздо быстрее получится так.
1. Все нужные файлы иконок соберите в каком-нибудь каталоге, например C:\MyIcons. Ненужных иконок в нем быть не должно.
2. Следующий текст сохраните в файле ResMaker.dpr и загрузите этот проект в Delphi.
program ResMaker;
uses
Windows,
SysUtils;
const
Dir = "С:\MyIcons"; // Каталог с нужными файлами
Ext = "ico"; // Расширение имен файлов
ResType = " ICON "; // Тип ресурса с пробелами перед ним и после него
RcExt = ".rc";
Msg = "OK."#13#10"Include string: {$R %s.RES}";
var
SR: TSearchRec;
ExtLen: integer;
RcFile: string;
F: TextFile;
begin
ChDir(Dir);
if FindFirst("*." + Ext, 0, SR) = 0 then
try
ExtLen := Length(Ext) + 1;
RcFile := Ext + RcExt;
AssignFile(F, RcFile);
Rewrite(F);
repeat
WriteLn(F, AnsiUpperCase(Copy(SR.Name, 1, Length(SR.Name) - ExtLen)), ResType, SR.Name)
until FindNext(SR) <> 0;
CloseFile(F);
Win32Check(WinExec(PChar("brcc32.exe " + RcFile), SW_HIDE) > 31);
MessageBox(0, PChar(Format(Msg, [AnsiUpperCase(Ext)])),
"ResMaker", MB_OK or MB_ICONINFORMATION or MB_TASKMODAL)
finally
FindClose(SR)
end
end.
3. Отредактируйте константу Dir (в приведенном виде проект настроен на иконки, но умеет строить и любой другой тип ресурсов - для этого требуется соответственно отредактировать константы Ext и ResType).
4. Выполните эту программу. В каталоге с иконками появятся 2 файла: ICO.RC и ICO.RES. Первый можно удалить, а второй перенесите в каталог с Вашим проектом.
5. В текст Вашего проекта вставьте строку: {$R ICO.RES} - например, в модуль его главной формы после строки {$R *.DFM}.
Теперь все иконки будут содержаться в ресурсах Вашего проекта. Извлекать их можно по именам ресурсов - имя ресурса каждой иконки совпадает с именем ее исходного файла (в верхнем регистре и без расширения .ICO).
← →
Brand (2002-08-03 00:36) [5]>Юрий Зотов
Все вроде получилось с большими боями. Но, я извеняюсь, но как извлекать их из ico.RES
Раньше делал так:
Application.Icon.LoadFromFile("C:/ico.ico");
А как теперь?
← →
Suntechnic (2002-08-03 00:53) [6]Не надо их извлекать из ico.RES Подключи этот файл к проекту и делай LoadIcon.
← →
Nemo II (2002-08-03 03:23) [7]Удалено модератором
← →
Brand (2002-08-03 12:48) [8]>Suntechnic
Не получается.
Ну вот как мне надо записать вместо Application.Icon.LoadFromFile("C:/ico.ico");
???
← →
Malder (2002-08-03 13:50) [9]вероятно,
Application.Icon:=XXX
где xxx.ico - название файла, где до компиляции хранилась иконка.
← →
Юрий Зотов (2002-08-03 14:09) [10]> Nemo II (03.08.02 03:23)
См. ExtractIcon в справке API.
> Brand (03.08.02 12:48)
Готовому проекту файл ICO.RES уже не нужен - иконки будут зашиты в самом EXE. А вместо LoadFromFile либо используйте LoadFromStream и TResourceStream (см. в справке), либо просто API-шную LoadIcon:
Application.Icon.Handle := LoadIcon(hinstance, "ИМЯ_ИКОНКИ");
← →
Brand (2002-08-13 00:36) [11]Гыгыгы, а в SysTray иконка получилась с немножко искаженными цветами. Вот так...:(((
← →
Юрий Зотов (2002-08-13 00:58) [12]Вероятно, это как-то должно зависеть от цветового разрешения видеокарты и самой иконки? Да и цветовая схема монитора, видимо, тоже должна как-то влиять?
← →
Brand (2002-08-18 00:52) [13]но без использования ресурсов все нормально!!!
← →
Юрий Зотов (2002-08-18 01:20) [14]OK. Код - в студию.
Pls.
← →
Brand (2002-08-18 15:48) [15]А, собственно, код чего в студию???
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.08.29;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c