Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загрузить иконку с ресурсов в TSpeedButton 
V
    Опции темы
Alca
Дата 21.7.2008, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Загрузить иконку с ресурсов в TSpeedButton (*.ico)?

Это сообщение отредактировал(а) Alca - 21.7.2008, 22:55


--------------------
PM WWW ICQ Skype Jabber   Вверх
THandle
Дата 21.7.2008, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 25
Всего: 372



Пример:

1. Создаешь пустой проект. Кладешь на форму TSpeedButton.
2. Сохраняешь его например в "C:\pr1\"
3. Создаешь файл Bitmap, назовем его "BMP1.bmp".
4. Создаешь файл ресурса(назовем его "a.rc").
5. Пишешь в нем:

Цитата

BMP1 BITMAP Bmp1.bmp


6. Сохраняешь его. (Теперь он: "C:\pr1\a.rc").
7. Компилируешь из командной строки:

Цитата

Brcc32 C:\pr1\a.rc


8. Подключаешь этот ресурс к проекту:

Код

#pragma resource "a.res"


На сколько помню в билдере так...(на всякий случай в Делфе - {$R a.res}).

9. В любом месте кода, при любом событии, например OnCreate формы загружаешь эту картинку в TSpeedButton.

Например так:

Код

SpeedButton1->Glyph->Handle = LoadImage(HInstance, "BMP1", IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE);


или так:

Код


SpeedButton1->Glyph->Handle = LoadBitmap(HInstance, "BMP1");



Возможно, могут потребоваться некоторые приведения типов, так как проверить в Builder возможности нету, только в Delphi. Там все работает smile 

10. Запускаем программу. Смотрим результат. smile 

Удачи. smile 

PM   Вверх
Alca
Дата 21.7.2008, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Не SomeIcon.bmp, а SomeIcon.ico (16x16, чтоб была маленькой)
Сделал так:
Код

TIcon *pIcon = new TIcon();
Icon->Handle = LoadIcon(HInstance, "RICON_FAQ");
pSpeedBtn->Glyph->Width  = Icon->Width;
pSpeedBtn->Glyph->Height = Icon->Height;
pSpeedBtn->Glyph->Canvas->Draw(0, 0, Icon);
pIcon->Free();

но иконка большая, надо маленьку.

Это сообщение отредактировал(а) Alca - 21.7.2008, 23:04


--------------------
PM WWW ICQ Skype Jabber   Вверх
THandle
Дата 21.7.2008, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 25
Всего: 372



Alca, загружай иконку в ресурс как ICON. Дальше объяви переменную типа TICon.

Загружай в нее эту иконку так:

Код

Icon->Handle = LoadIcon(HInstance, "ICON1");


Где ICON1 - имя иконки в ресурсе.

Дальше делай так:

Код

  SpeedButton1->Glyph.Height = a->Height;
  SpeedButton1->Glyph.Width = a->Width;
  SpeedButton1->Glyph->Canvas->Draw(0, 0 , a);


Не знаю, верный ли это для Билдера код...

На всякий случай делфовый:

Код

var
  a : TIcon;
begin
  a := TICon.Create;
  a.Handle := LoadIcon(HInstance, 'ICON1');
  SpeedButton1.Glyph.Height := a.Height;
  SpeedButton1.Glyph.Width := a.Width;
  SpeedButton1.Glyph.Canvas.Draw(0, 0 , a);
  a.free;
end;



Это сообщение отредактировал(а) THandle - 21.7.2008, 23:11
PM   Вверх
Alca
Дата 21.7.2008, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Нужна маленькая иконка


--------------------
PM WWW ICQ Skype Jabber   Вверх
THandle
Дата 21.7.2008, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 25
Всего: 372



Код

var
  a : TIcon;
begin
  a := TICon.Create;
  a.Handle := LoadImage(HInstance, 'ICON1', IMAGE_ICON, 8, 8, LR_COPYFROMRESOURCE);
  SpeedButton1.Glyph.Height := a.Height;
  SpeedButton1.Glyph.Width := a.Width;
  SpeedButton1.Glyph.Canvas.Draw(0, 0, a);
  a.free;
end;


Добавлено через 1 минуту и 21 секунду
Извиняюсь за Делфи...

Добавлено через 4 минуты и 59 секунд
Грузит тут иконку 8х8, независимо от того какая в ресурсе...

Это сообщение отредактировал(а) THandle - 21.7.2008, 23:23
PM   Вверх
Alca
Дата 22.7.2008, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Спасибо, помогло. +1


--------------------
PM WWW ICQ Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0518 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.