|  | 
 
 | 
| 
 | |||||||
| Регистрация | << Правила форума >> | 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; |