Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.23;
Скачать: CL | DM;

Вниз

Как повесить иконку на 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
1-74796
Cherepovets
2002-12-11 12:12
2002.12.23
FDD


3-74625
dimonf
2002-12-05 14:53
2002.12.23
Статичный DBGrid.


7-75018
Youriy
2002-10-03 21:12
2002.12.23
Помогите с векторами прерываний...!


6-74868
NOE
2002-10-28 15:22
2002.12.23
Время на удаленной машине


4-75029
Frostik
2002-11-05 15:26
2002.12.23
SeDebugPrivilege