|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Добавление иконки в меню
Всем доброго времени суток..!!!!
Вопрос таков: я хочу добавить в динамически созданное меню иконки, иконки в соответствии от расширения файла (например в меню 4 записи, "000.txt" "465.jpg" "999.doc" "56465.rar") Код:
procedure TMainForm.CreateMenu(Data: TListBox); var i: integer; Item: TMenuItem; ID_Icon: TIcon; begin with ListPopupMenu.Items do begin while Count > 0 do Items[0].Free; for i:=0 to Data.Count - 1 do begin ID_Icon := TIcon.Create; ID_Icon.Handle := ExtractAssociatedIcon(Hinstance, PChar (Data.Items.Strings[i]), Index); Item := TMenuItem.Create(ListPopupMenu); Item.Caption := ExtractFileName(Data.Items.Strings [i]); Item.Tag := i; Item.OnClick := ActionMenu; Add(Item); end; end; end; Пробовал вместе с этим Код:
Icon_Small.GetIcon(GetIconIndex(ExtractFileExt(list_shortcut.Items.Strings [Index]), 0,TypeFichier),Img.Picture.Icon.Create); Но результата это не принесло.... Как можно сделать чтобы у каждой строки в меню была своя иконка..!??? Последний раз редактировалось Admin, 04.05.2009 в 10:44. |
#2
|
||||
|
||||
Может, поменять строки кода местами, сначала взять расширение, а потом извлекать значок???
|
#3
|
||||
|
||||
после обдумывания вышло так:
Код:
procedure TMainForm.CreateMenu(Data: TListBox); procedure AddIcon(Data: TListBox); var ID_Icon: TIcon; i, Index: word; begin Icon_Small.Clear; ID_Icon := TIcon.Create; if Data.Items.Count > 0 then begin for i := 0 to Data.Count - 1 do begin ID_Icon.Handle := ExtractAssociatedIcon(Hinstance, PChar(Data.Items.Strings[i]), Index); Icon_Small.AddIcon(ID_Icon); end; end; end; var i, Index: Word; Item: TMenuItem; ID_Icon: TIcon; begin if FileExists(GetWinDir +'\'+ ConfigFile) and (Data.Items.Count > 0) then begin AddIcon(Data); with ListPopupMenu.Items do begin AddIcon(Data); while Count > 0 do Items[0].Free; if Data.Count > 0 then begin for i := 0 to Data.Count - 1 do begin ID_Icon := TIcon.Create; ID_Icon.Handle := ExtractAssociatedIcon(Hinstance, PChar(Data.Items.Strings[i]), Index); Item := TMenuItem.Create(ListPopupMenu); Item.Caption := ExtractFileName(Data.Items.Strings [i]); Item.Tag := i; Item.ImageIndex := i; Item.OnClick := ActionMenu; Add(Item); end; end; end; end else begin with ListPopupMenu.Items do begin while Count > 0 do Items[0].Free; Add(NewItem('Нет программ', 0, False, False, nil, 0, 'MenuItem')) end; end; end; |