forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Delphi (http://forum.boolean.name/forumdisplay.php?f=66)
-   -   Иконка (Icon) (http://forum.boolean.name/showthread.php?t=11731)

Winner 14.01.2010 17:09

Иконка (Icon)
 
Написал программу, которая сворачивается в трей и реагирует на горячие клавиши. Добавил кнопку включения/выключения горячих клавиш и в добавок к этому хочу еще менять иконку в трее. Т.е. если горячие клавиши включены, в трее иконка меняется на зеленую, а если отключены - на красную.

Проблема в том, что каждый раз нужно загружать зеленую и красную иконку из файла, что не очень удобно: вместе с exe-шником придется таскать иконки, либо хранить иконки в какой-то одной папке.

Нельзя как-нибудь эти обе иконки добавить в программу и чтобы их не приходилось загружать из файла?

ViNT 14.01.2010 19:11

Ответ: Иконка (Icon)
 
Простейший вариант - использовать TImageList.
Также можно прилинковать иконки к программе в виде ресурсов, и потом извлекать их, конкретного примера под рукой нет, но в инете найдется.

Winner 14.01.2010 19:48

Ответ: Иконка (Icon)
 
Промучался с ImageList - ничего не получилось, погуглил и нашел вот этот вариант.

WaReZ_MEN 15.01.2010 10:50

Ответ: Иконка (Icon)
 
есть компонента RxLIb там была такая приблуда...

Trazzy 20.01.2010 08:40

Ответ: Иконка (Icon)
 
Вот еще вариант. Думаю тебе подойдет в самый раз...

...то, о чем говорил ViNT
Цитата:

Сообщение от ViNT (Сообщение 133484)
Также можно прилинковать иконки к программе в виде ресурсов, и потом извлекать их, конкретного примера под рукой нет, но в инете найдется.

Пример (c) ArtikZ

Создаешь обычный текстовый документ с расширением .rc и помещаешь в него свои "иконки". Пример файла "sample.rc":

Код:

imya1 RCDATA LOADONCALL путь_к_иконке/icon1.ico
imya2 RCDATA LOADONCALL путь_к_иконке/icon2.ico
imya3 RCDATA LOADONCALL путь_к_иконке/icon3.ico

потом через brcc32.exe делаешь .res файл..
через коммандную строку это будет выглядеть так:

Код:

brcc32.exe путь_к_файлу/sample.rc
получаешь файл "sample.RES"... Подключаешь его к своей программе и берешь из него иконки. Примерно так:

Код:

...
var
  Form1: TForm1;
  Res: TResourceStream;

implementation

{$R *.dfm}
{$R sample.RES}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Res := TResourceStream.Create(Hinstance, 'imya2', RT_RCDATA);
  //возьмет 2ю иконку
    try
      Image1.Picture.Icon.LoadFromStream(res);
      //рисуем иконку в TImage
    {
    Application.Icon.LoadFromStream(res);
      //делаем imya2 иконкой нашего приложения
    }

    finally
      Res.Free;
    end;
end;

...

Удачи!


Часовой пояс GMT +4, время: 13:43.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot