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

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

Как повесить иконку на TMenuItem. Никак. Почему-то... Спасите от [D6, WinXP]


Matolch ©   (2002-12-11 20:26:00) 

сумасшествия. Может, я чего-то недоглядываю, но не получается.

procedure TMainForm.PopupMenuGetMenuItem;
var W: Word;
Item: TMenuItem;
AnIcon: TIcon;
AnImage: TBitmap;
IconInfo: TIconInfo;
begin
Item := TMenuItem.Create(Self);
with Item do
begin
Caption := FileName;
OnClick := btnOpenDBClick;
PopupMenuFileNames.Items.Add(Item);

W:=0;
AnIcon := TIcon.Create;
AnIcon.Handle := ExtractAssociatedIcon(HInstance,PChar(FileName),W);

if AnIcon.Handle 0 then
if GetIconInfo(AnIcon.Handle, IconInfo) then
begin
AnImage := TBitmap.Create;
AnImage.Handle := IconInfo.hbmColor;
if SetMenuItemBitmaps(Item.Handle,Item.Parent.Count-1,MF_BYPOSITION,AnImage.Handle,AnImage.Handle)
then
List.Add(AnImage)
else
Canvas.Draw(20,20,AnImage);//проверил - рисует
AnImage.Free;
end;
end;
AnIcon.Free;
end;

Самый прикол в том, что один раз получилось. Но мне как-то не очень внешний вид понравился (IconInfo.hbmColor only), и я решил попробовать загружать битмап, извлекаемый из иконки, в ImageList. Извлекал, нормально, но в меню - никак, и это никак с тех пор продолжается. SubImages - размер 32*32, менюитем огромен, но рисунок не рисует. Попытался вернуться к первому варианту - и все, баста. Никак.

Вопрос ещё такой - можно было бы извлечь маленькую иконку при помощи ExtractIconEx - я так понял, но где взять тогда имя приложения, из которого её извлечь (по ассоциации с файлом).
И ёще.

Извлек. Получил два битмапа: Color & Mask - как их слить в один, целый, который и выглядит, и смотрится?

И ёще: что значит :о), :)), ;), ИМХО и т.п.?


Matolch   (2002-12-13 08:57:00) [1]

Humble. А ведь я как-то наткнулся на загрузку bmp из файла и установку именно SetMenuItemBitmaps. Даже не подумал TMenuItem глядеть. Во.
> NOBODY (12.12.02 14:43)
Кстати, все-равно корявенько получается. Сравнил бы те иконки, что проводник рисует с этим подобием.


Song   (2002-12-12 16:26:00) [2]

H - humble


NOBODY   (2002-12-12 14:43:00) [3]

if GetIconInfo(AnIcon.Handle, IconInfo) then
begin
AnImage := TBitmap.Create;
try
AnImage.Handle := IconInfo.hbmColor;
AnImage.MaskHandle := IconInfo.hbmMask;
AnImage.Transparent := True;
Item.Bitmap := AnImage;
//List.Add???
finally
AnImage.Free;
end;
end;


Matolch   (2002-12-11 22:04:00) [4]

М-да.. Видимо вопрос чрезвычайно... Даже не знаю чего чрезвычайно... Как говорица, спасибо NOBODY. NOBODY всегда поможет.


BeginnerEx   (2002-12-11 20:55:00) [5]


> harismatik

Понял - In My H.. Opinion. Только что за H.. - z не помню


harismatik   (2002-12-11 20:49:00) [6]

ИМХО - означает с английского "По моему скромному мнению" (сам долгое время не знал, пока случайно на одном из форумов не наткнулся на объяснение :)


Наверх

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