Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.29;
Скачать: CL | DM;

Вниз

Вопросик???   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.01 c
1-95847
просто панк
2002-08-17 01:50
2002.08.29
Rich Edit


4-96028
BlackRaven
2002-06-18 14:54
2002.08.29
Bitmap и RGN?


1-95868
Tahion
2002-08-17 09:55
2002.08.29
как создать окно сообщения , чтоб был флажок


1-95779
Mahmud
2002-08-16 10:14
2002.08.29
Нужна помощь по QReport


14-95972
Serj'ik
2002-08-03 09:06
2002.08.29
Delphi 6 Update 2