Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ещё раз о создании.... как добавить иконку в попап меню? 
:(
    Опции темы
X-Vlad
  Дата 11.11.2002, 02:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 570
Регистрация: 10.4.2002
Где: Украина, Львов

Репутация: 1
Всего: 5



У меня вопрос... я создаю программно попап меню, в меню - ссылки на файлы.. тоисть я на онклик запускаю файл, как мне добавить соответствующему пункту иконку которая есть у ехе-шника?


--------------------
Хорошая штука - комп..:)
www.x-vlad.com
PM MAIL WWW ICQ   Вверх
Borland_Delphi_6
Дата 11.11.2002, 02:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


LoneLINEss
****


Профиль
Группа: Участник Клуба
Сообщений: 2509
Регистрация: 5.11.2002
Где: in fortune dreams ...

Репутация: нет
Всего: 20



Если иконка у екзешника, извлеки ее кода нибудь во времменую папку и установи у строки меню свойство bitmap. но для этого придется переконвертить иконку в bmp при помощи проги IconToAny. Скачать отсюда


--------------------
Blind Guardian Fan :: BMSTU Student :: A polar bear is a rectangular bear after a coordinate transform.

Мои фотографии
PM MAIL WWW   Вверх
Song
Дата 11.11.2002, 02:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



ExtractIcon()
Рисовать - DrawIconEx() в TMenuItem.onDrawItem (OwnerDraw конечно же надо не забыть)


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
X-Vlad
  Дата 11.11.2002, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 570
Регистрация: 10.4.2002
Где: Украина, Львов

Репутация: 1
Всего: 5



привет всем...
вот код:

Код
procedure add_link2;
var
 dir:string;
 mi:TMenuItem;
 ini:Tinifile;
 i:integer;
begin
 form1.popupmenu2.Items.Clear;
 dir:=paramstr(0);
 Ini:= TIniFile.Create(dir+'\link.ini');
 form1.listbox1.Clear;
 ini.ReadSection('link2',form1.listbox1.Items);
 Ini.Free;
 for i:=0 to form1.listbox1.Items.Count-1 do
  begin
   mi:=TMenuItem.Create(form1.popupmenu2);
   mi.Caption:=form1.listbox1.Items[i];
   form1.popupmenu2.Items.Add(mi);
   form1.popupmenu2.Items[i].OnClick:=form1.menuclick2;
  end;
 form1.listbox1.Clear;
end;


Вопрос:

какой код надо дописать что-бы добавлять иконку с ЕХЕ-шника к каждому пукту меню?

спасибо....


--------------------
Хорошая штука - комп..:)
www.x-vlad.com
PM MAIL WWW ICQ   Вверх
rhf
Дата 12.11.2002, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 13.8.2002

Репутация: нет
Всего: нет



2 X-Vlad, уважаемый :) да вы так никогда раскладку на клавиатуре не выичите

ExtractAssociatedIcon()
а как рисовать уже сказал Song....
Если не хотите возиться с OwnerDraw, то иконку надо конвертнуть в bmp засунуть в tPopupMenu.Images а потом поставить нужный индекс у  tMenuItem.ImageIndex
PM MAIL   Вверх
X-Vlad
Дата 12.11.2002, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 570
Регистрация: 10.4.2002
Где: Украина, Львов

Репутация: 1
Всего: 5



вы можете написать мне код -  ну что-бы только вставить? а то у меня голова уже от етого болит.... всё накучу и учёба и работа.....
помогите плз..... оччччень нужно...
спасибо.....


--------------------
Хорошая штука - комп..:)
www.x-vlad.com
PM MAIL WWW ICQ   Вверх
Song
Дата 12.11.2002, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



Rhf, ExtractAssociatedIcon - это не та иконка получится.


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
rhf
Дата 12.11.2002, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 13.8.2002

Репутация: нет
Всего: нет



2 Song как не та ??? если подсунуть exe-шник то получим его иконку, если протсой файл, то иконку ассоциированую с этим файлом.... или я всегда не правильно понимал назначение этой функции ???
PM MAIL   Вверх
Vit
Дата 12.11.2002, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Можно так же:

Код
Icon := TIcon.Create;
try
  SHGetFileInfo(PChar(filename), 0, FileInfo, SizeOf(FileInfo), SHGFI_ICON);
  icon.Handle := FileInfo.hIcon;
 ...........
  DestroyIcon(FileInfo.hIcon);
finally
  Icon.Free;
end;



--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Song
Дата 12.11.2002, 01:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



Цитата(rhf @ 11.11.2002, 16:51)
2 Song как не та ??? если подсунуть exe-шник то получим его иконку, если протсой файл, то иконку ассоциированую с этим файлом.... или я всегда не правильно понимал назначение этой функции ???

В твоём случае получится та иконка, которая ассоциирована с данным типом файлов в реестре. А ему, как я понял, нужна та икона, которая находится в самом файле. А это не одно и то же.


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
man2002ua
Дата 12.11.2002, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 943
Регистрация: 12.11.2002
Где: Киев

Репутация: нет
Всего: 2



:baaa
вопрос в получении иконки, к-я явл. ресурсом ЕХЕшника?
Тогда необх. исп. FindResourse


--------------------
"Нет ничего более постоянного, чем временное"
PM MAIL   Вверх
rhf
Дата 12.11.2002, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 13.8.2002

Репутация: нет
Всего: нет



Цитата(Song @ 11.11.2002, 17:32)
В твоём случае получится та иконка, которая ассоциирована с данным типом файлов в реестре. А ему, как я понял, нужна та икона, которая находится в самом файле.

Так если передатся испольняемый файл, то иконка как раз будет извлечена из него самого. А для неисполняемых уже будет иконка из файлов с которыми они асоциированы в реестре.
PM MAIL   Вверх
Song
Дата 12.11.2002, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



Если в ini файле будет иконка с шестерёнкой - то это просто оттого что она там есть, заложена кем-то. Однако это вовсе не факт, что так всегда должно быть. Запросто может быть ini файл с иконкой в виде листка бумаги (который для txt). В этом случае ExtractAssciatedIcon() - вернёт шестерёнку, а ExtractIcon() - бумагу.


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
X-Vlad
  Дата 13.11.2002, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 570
Регистрация: 10.4.2002
Где: Украина, Львов

Репутация: 1
Всего: 5



я читаю с ехе-шника иконку и конвертирую её в бмп потом кидаю в попап меню но у меня  выпадает какая-то ошибка....
вот код:
Код

var
Icon   : TIcon;
Bitmap : TBitmap;
begin
if opendialog1.Execute then
begin
popupmenu1.Items.Bitmap.CleanupInstance;
Icon   := TIcon.Create;
Bitmap := TBitmap.Create;
image1.Picture.Icon.Handle:=ExtractIcon(HInstance, PChar(opendialog1.FileName), 0);
showmessage(extractfileext(opendialog1.FileName));
Icon:=image1.Picture.Icon;
Bitmap.Width := Icon.Width;
Bitmap.Height := Icon.Height;
Bitmap.Canvas.Draw(0, 0, Icon);
popupmenu1.Items[0].Bitmap:=bitmap;
Icon.Free;
Bitmap.Free;
end;
end;

в чем дело?


--------------------
Хорошая штука - комп..:)
www.x-vlad.com
PM MAIL WWW ICQ   Вверх
Song
Дата 13.11.2002, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



Ну нагородил.. :-)
Используй DrawIcon(Ex)


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0633 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.