Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.006 c
1-95904
stany
2002-08-18 21:55
2002.08.29
Как изменять только Width компонента Panel мышью в Runtime?


8-95912
som
2002-04-22 13:33
2002.08.29
PCX - файлы...


1-95766
-= Like =-
2002-08-19 15:21
2002.08.29
Как проверить, есть ли строка в INI файле?


1-95903
VSergeySPB
2002-08-17 22:48
2002.08.29
Ошибка в Хелпе.


1-95763
Olorin
2002-08-19 13:59
2002.08.29
Как реагировать на хот кей только при активной форме?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский