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