Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2010, 22:48   #1
ArcaN0id
Пользователь
 
Регистрация: 03.06.2009
Сообщений: 62
По умолчанию как добавить в поп-ап меню иконки???delphi

есть меню. Подскажите как динамически добавить иконки к каждому пункту меню?

Код:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus, ExtCtrls,Math;
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FColorBackgroundClick(Sender:TObject);
    procedure FSortClick(Sender:TObject);
    procedure FScaleClick(Sender:TObject);
    procedure FRandomClick(Sender:TObject);
    procedure FByTableClick(Sender:TObject);
    procedure FByEdgesClick(Sender:TObject);
    procedure FRotateLeftClick(Sender:TObject);
    procedure FRotateRightClick(Sender:TObject);
    procedure FCheatClick(Sender:TObject);
    procedure FMoveClick(Sender:TObject);
    procedure FTurnClick(Sender:TObject);
    procedure FNeighbourClick(Sender:TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

  var
  Image1: TImage;    
  Form1: TForm1;    
  FPopupMenuForm : TPopupMenu;  
  FPopupMenuDet: TPopupMenu;    
  FColorBackground: TMenuItem;  
  FRotateLeft:TMenuItem;        
  FRotateRight:TMenuItem;        
  FScale:TMenuItem;              
  FMove:TMenuItem;               
  FTurn:TMenuItem;              
  FSort:TMenuItem;            
  FCheat:TMenuItem;             
  FRandom:TMenuItem;          
  FByTable:TMenuItem;           
  FByEdges:TMenuItem;          
  FNeighbour:TMenuItem;         

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
FPopupMenuForm:=TPopupMenu.Create(Form1);
Form1.PopupMenu:=FPopupMenuForm;
FColorBackground:=TMenuItem.Create(FPopupMenuForm);
FSort:=TMenuItem.Create(FPopupMenuForm);
FScale:=TMenuItem.Create(FPopupMenuForm);
FNeighbour:=TMenuItem.Create(FScale);
FRandom:=TMenuItem.Create(FSort);
FByTable:=TMenuItem.Create(FSort);
FByEdges:=TMenuItem.Create(FSort);

Image1:=TImage.Create(Form1);
Image1.Parent:=Form1;
Image1.Left:=5;
Image1.Top:=5;
Image1.Height:=50;
Image1.Width:=50;


FPopupMenuDet:=TPopupMenu.Create(Image1);
Image1.PopupMenu:=FPopupMenuDet;
FRotateLeft:=TMenuItem.Create(FPopupMenuDet);
FRotateRight:=TMenuItem.Create(FPopupMenuDet);
FCheat:=TMenuItem.Create(FPopupMenuDet);
FMove:=TMenuItem.Create(FCheat);
FTurn:=TMenuItem.Create(FCheat);


 with FPopupMenuForm do
 begin
  Items.Insert(0,FColorBackground);
  Items.Insert(1,FSort);
  Items.Insert(2,FScale);
 end;

 with FSort do
 begin
  Caption:='Sort';
  Insert(0,FRandom);
  Insert(1,FByTable);
  Insert(2,FByEdges);
  OnClick:=FSortClick;
 end;

 with FColorBackground do
 begin
  Caption:='Color background';
  OnClick:=FColorBackgroundClick;
 end;

 with FScale do
 begin
  Caption:='Scale';
  Insert(0,FNeighbour);
  OnClick:=FScaleClick;
 end;

 with FRandom do
 begin
  Caption:='Random sort';
  OnClick:=FRandomClick;
 end;

 with FByTable do
 begin
  Caption:='Sort by table';
  OnClick:=FByTableClick;
 end;

 with FByEdges do
 begin
  Caption:='Sort by edges';
  OnClick:=FByEdgesClick;
 end;

  with FNeighbour do
 begin
  Caption:='Show neighbour';
  OnClick:=FNeighbourClick;
 end;

 with FPopupMenuDet do
 begin
  Items.Insert(0,FRotateLeft);
  Items.Insert(1,FRotateRight);
  Items.Insert(2,FCheat);
 end;

 with FCheat do
 begin
  Caption:='Cheat';
  Insert(0,FMove);
  Insert(1,FTurn);
  OnClick:=FCheatClick;
 end;

 with FRotateLeft do
 begin
  Caption:='Rotate Left';
  OnClick:=FRotateLeftClick;
 end;

 with FRotateRight do
 begin
  Caption:='Rotate Right';
  OnClick:=FRotateRightClick;
 end;

 with FMove do
 begin
  Caption:='Move to its place';
  OnClick:=FMoveClick;
 end;

 with FTurn do
 begin
  Caption:='Tern to correct state';
  OnClick:=FTurnClick;
 end;

end;

procedure TForm1.FNeighbourClick(Sender:TObject);
begin
//
end;

procedure TForm1.FColorBackgroundClick(Sender:TObject);
begin
//
end;

 procedure TForm1.FSortClick(Sender:TObject);
 begin
//
 end;

 procedure TForm1.FScaleClick(Sender:TObject);
 begin
//
 end;

 procedure TForm1.FRandomClick(Sender:TObject);
 begin
//
 end;

 procedure TForm1.FByTableClick(Sender:TObject);
 begin
//
 end;

 procedure TForm1.FByEdgesClick(Sender:TObject);
 begin
//
 end;

procedure TForm1.FRotateLeftClick(Sender:TObject);
begin
//
end;

 procedure TForm1.FRotateRightClick(Sender:TObject);
 begin
//
 end;

 procedure TForm1.FCheatClick(Sender:TObject);
 begin
//
 end;

 procedure TForm1.FMoveClick(Sender:TObject);
 begin
//
 end;

 procedure TForm1.FTurnClick(Sender:TObject);
 begin
//
 end;

end.
ArcaN0id вне форума Ответить с цитированием
Старый 23.04.2010, 09:20   #2
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

Код:
const
  pMenuClose = WM_USER + 30;
var
  bmp: array [1 .. N] of HBITMAP;
  hPopupMenu: HMENU;

SetMenuItemBitmaps(hPopupMenu, pMenuClose, MF_BITMAP, bmp[2], bmp[2]);
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 23.04.2010, 09:56   #3
ArcaN0id
Пользователь
 
Регистрация: 03.06.2009
Сообщений: 62
По умолчанию

а откуда загружать?

можете прямо в мой код вставить как это будет а то я не понял
ArcaN0id вне форума Ответить с цитированием
Старый 23.04.2010, 10:16   #4
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

Код:
        bmUnChecked := TBitmap.Create;
        bmUnChecked.LoadFromFile('C:\Program Files\Borland\BitBtns\ALARMRNG.BMP');
        bmChecked := TBitmap.Create;
        bmChecked.LoadFromFile('C:\Program Files\Borland\BitBtns\CHECK.BMP');
        {Add the bitmaps to the item at index 1 in PopUpMenu}
        SetMenuItemBitmaps(PopUpMenu1.Handle,1,MF_BYPOSITION,BmUnChecked.Handle, BmChecked.Handle);
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 23.04.2010, 18:00   #5
ArcaN0id
Пользователь
 
Регистрация: 03.06.2009
Сообщений: 62
По умолчанию

это я и сам нашел в инете))) оно не работает....

есть реально проверенный рабочий код?
ArcaN0id вне форума Ответить с цитированием
Старый 23.04.2010, 18:08   #6
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

во вложении реально работающий код, только написано на чистом апи
Вложения
Тип файла: zip windowAPI.zip (2.1 Кб, 31 просмотров)
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 23.04.2010, 20:31   #7
ArcaN0id
Пользователь
 
Регистрация: 03.06.2009
Сообщений: 62
По умолчанию

а файл res не прилагается?

и все же хочется увидеть реализацию в коде выложенном мною в первом сообщении.
ArcaN0id вне форума Ответить с цитированием
Старый 23.04.2010, 20:55   #8
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

гугли TPopupmenu
Вложения
Тип файла: zip res.zip (715 байт, 25 просмотров)
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 24.04.2010, 09:47   #9
ArcaN0id
Пользователь
 
Регистрация: 03.06.2009
Сообщений: 62
По умолчанию

если бы я нашел в гугле то тут бы не спрашивал))

неужели никто не делал такого?
ArcaN0id вне форума Ответить с цитированием
Старый 24.04.2010, 16:19   #10
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

лучше юзай winapi
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызвать меню из чужой иконки с помощью отсылки сообщения Crivel Win Api 4 20.10.2009 22:24
Контекстное меню для иконки в трее через WinApi 3D Hunter Win Api 3 24.09.2009 08:13
Как добавить свой раздел в стандартное контекстное меню yaver Общие вопросы Delphi 2 26.11.2008 19:44
Как добавить подменю в системное контекстное меню Lucky13 Win Api 5 19.03.2007 20:17