Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как загрузить иконку из ресурса? [D5, Win2k]


id_privin ©   (2002-10-11 12:05:00) 

Сабж у меня не получается. Делаю так

procedure TForm1.Button1Click(Sender: TObject);
var
Icon : TIcon;
ResStream : TResourceStream;
begin
Icon := TIcon.Create;
ResStream := TResourceStream.Create(HInstance,"MAINICON","RT_ICON");
Icon.LoadFromStream(ResStream);
ResStream.Free;
end;

MAINICON в ресурсе точно есть - это главная иконка приложения, но на TResourceStream.Create вылетает исключение "Не найден ресурс".

Как лечить?


id_privin   (2002-10-11 16:32:00) [1]

2Shrek
Спасибо, сработало. Осталась проблемма в том что иконку хочеться грузить по имени, тк вся работа с ней осуществляется внутри пакета и я не могу заранее сказать сколько иконок будет в приложении.


REA   (2002-10-11 15:50:00) [2]

А кстати - почему это PAnsiChar(3)? Разве число так можно к строке преобразовать? Получится ведь незавершенная 0 строка.
Или AnsiChar это такой специальный Char?


Shrek   (2002-10-11 15:16:00) [3]

IconIndex : word;
h : hIcon;
Bit: TBitmap;

Bit := TBitmap.Create;
Bit.Width := WH;
Bit.Height := WH;
h := ExtractAssociatedIcon(hInstance, PChar(FileName), IconIndex);
DrawIcon(Bit.Canvas.Handle, 2, 2, h);
Bit.Free;


REA   (2002-10-11 14:17:00) [4]

Наверно без кавычек.

RT_ICON = MakeIntResource(3)

MakeIntResourceA = PAnsiChar;
MakeIntResourceW = PWideChar;
MakeIntResource = MakeIntResourceA;


id_privin   (2002-10-11 14:00:00) [5]

Не помогает.
Последние новости : Bitmap ресурсы по именам находятся а иконки нет. Поэтому вопрос : как по простому сконвертировать Bitmap в иконку


NailS   (2002-10-11 13:49:00) [6]

Попробуй заменить ResStream := TResourceStream.Create(HInstance,"MAINICON","RT_ICON");
на ResStream := TResourceStream.Create(HInstance,"MAINICON",RT_ICON);


id_privin   (2002-10-11 13:34:00) [7]

2Pumpkin
Нет


Pumpkin   (2002-10-11 13:31:00) [8]

А у TIcon разве нет LoadFromResource (хелп посмотреть у меня нет возможности).


REA   (2002-10-11 13:26:00) [9]

Да вроде должно работать. Те параметры входные, синтаксис и т.п.?
Проверь ресурс-вьювером.
CreateFromID() тоже можно использовать.
А что такое RT_GROUP_ICON? - встречный вопрос к профи


id_privin   (2002-10-11 13:00:00) [10]

Очень надо!!!!!
Кто-нибудь ответьте. Пожалуйста!!!!!!!


Наверх

Титульная страница Поиск, карта сайта Написать письмо