Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > PopupMenu


Автор: The MASTER 27.9.2004, 20:59
А можно спросить, возможно ли сделать чтобы в PopupMenu было как Windows 95/2000 сбоку в Пуске картинка 1 большая там ещё написано Windows 98 Second Edition, и как сделать Popupmenu такимже широким?

Автор: Ozzя 28.9.2004, 06:03
Как поместить маленькие битмапы в TPopUpMenu?

Следующий пример демонстрирует добавление битмапа в пункт PopUpMenu при помощи API функции SetMenuItemBitmaps(). Эта функция имеет следующие параметры: дескриптор всплывающего меню, номер (начиная с нуля) пункта меню в который мы хотим добаить битмап, и два дескриптора битмапов (одна картинка для меню в активном состоянии, а вторая для неактивного состояния).

Код
type
 TForm1 = class(TForm)
   PopupMenu1: TPopupMenu;
   Pop11: TMenuItem;
   Pop21: TMenuItem;
   Pop31: TMenuItem;
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
   procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
 private
   { Private declarations }
   bmUnChecked : TBitmap;
   bmChecked : TBitmap;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
 bmUnChecked := TBitmap.Create;
 bmUnChecked.LoadFromFile(
   'C:\Program Files\Borland\BitBtns\ALARMRNG.BMP');
 bmChecked := TBitmap.Create;
 bmChecked.LoadFromFile(
   'C:\Program Files\Borland\BitBtns\CHECK.BMP');
{Добавляем битмапы в пункт меню начиная с 1 в PopUpMenu}
 SetMenuItemBitmaps(PopUpMenu1.Handle,
                    1,
                    MF_BYPOSITION,
                    BmUnChecked.Handle,
                    BmChecked.Handle);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 bmUnChecked.Free;
 bmChecked.Free;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
var
 pt : TPoint;
begin
 pt := ClientToScreen(Point(x, y));
 PopUpMenu1.Popup(pt.x, pt.y);
end;

Взято с Исходников.ru http://www.sources.ru



Автор: The MASTER 28.9.2004, 14:23
Вообще-то я ЯСНО вырозился, что мне нужно сбоку 1 картинку как у Windows 98 написано Windows 98 Second Edition, а тым не даёшь пример как вообще вставлять маленькие Битмапы! У Delphi 6-9 уже и через компонент ImageList можно вставлять!

Автор: _hunter 29.9.2004, 10:50
а в чем проблема таким же макаром вставить одну большую картинку ( Rect самому вычислять придется, но это не проблема )?

Автор: Ozzя 29.9.2004, 15:59
Цитата(The @ 28.9.2004, 14:23)
Вообще-то я ЯСНО вырозился, что мне нужно сбоку 1 картинку как у Windows 98 написано Windows 98 Second Edition, а тым не даёшь пример как вообще вставлять маленькие Битмапы! У Delphi 6-9 уже и через компонент ImageList можно вставлять!

А, ну тогда научись задавать вопросы. И желательно без орфографических ошибок. А то пока через твои дебри проберешься...

Автор: The MASTER 29.9.2004, 20:02
Я всё нормально сказал! И не надо обсуждать мои ошибки, у меня инет не ризиновый я не могу сидеть а каждую букву проверять! mad.gif

Автор: p0s0l 29.9.2004, 22:59
М
 
А у нас инет, получается, резиновый! Мы должны сидеть и разбирать по буковкам, что же ты там пытался нам донести ?! Есть разница: или ты один посидишь минутку проверишь свой пост, или каждый, кто читает, должен врубаться в твои писанины ?
Тебе в каждой теме говорят об этом, но ты пропускаешь это мимо ушей...
Готовь посты заранее в блокноте, к примеру, проверяй их, а потом в инет лезь и копируй через буфер обмена сюда - так инет-время сэкономишь, и писать по-нормальному будешь...

Автор: The MASTER 30.9.2004, 06:32
Ана делать мне больше нечиго, ты это уже написал! Всё я ухожу!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)