Форум: "Основная";
Текущий архив: 2002.12.23;
Скачать: [xml.tar.bz2];
ВнизКак повесить иконку на TMenuItem. Никак. Почему-то... Спасите от Найти похожие ветки
← →
Matolch (2002-12-11 20:26) [0]сумасшествия. Может, я чего-то недоглядываю, но не получается.
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 - как их слить в один, целый, который и выглядит, и смотрится?
И ёще: что значит :о), :)), ;), ИМХО и т.п.?
← →
harismatik (2002-12-11 20:49) [1]ИМХО - означает с английского "По моему скромному мнению" (сам долгое время не знал, пока случайно на одном из форумов не наткнулся на объяснение :)
← →
BeginnerEx (2002-12-11 20:55) [2]
> harismatik
Понял - In My H.. Opinion. Только что за H.. - z не помню
← →
Matolch (2002-12-11 22:04) [3]М-да.. Видимо вопрос чрезвычайно... Даже не знаю чего чрезвычайно... Как говорица, спасибо NOBODY. NOBODY всегда поможет.
← →
NOBODY (2002-12-12 14:43) [4]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;
← →
Song (2002-12-12 16:26) [5]H - humble
← →
Matolch (2002-12-13 08:57) [6]Humble. А ведь я как-то наткнулся на загрузку bmp из файла и установку именно SetMenuItemBitmaps. Даже не подумал TMenuItem глядеть. Во.
> NOBODY (12.12.02 14:43)
Кстати, все-равно корявенько получается. Сравнил бы те иконки, что проводник рисует с этим подобием.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.12.23;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c