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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2007, 10:15   #1
Vadim_S
Новичок
Джуниор
 
Регистрация: 16.04.2007
Сообщений: 2
По умолчанию OnClick - правая или левая кнопка мыши

Подскажите пожалуйста как определить по событию onClick правая или левая кнопка мыши нажата?

Пытаюсь сделать PopupMenu, где по нажатию правой кнопки на пункте меню этот пункт уничтожится.
Проблема, что в PopupMenu есть только onClick, где не передается какая кнопка мыши нажата.
Vadim_S вне форума Ответить с цитированием
Старый 16.04.2007, 14:40   #2
mrandrey
Форумчанин
 
Регистрация: 30.03.2007
Сообщений: 124
По умолчанию

может, я чегото не догоню, но у Popupmenu? нет события Onclick
у меня Delphi 7, а в каком есть?
Тут без 100г не розберешся.....
Спасибо не нужно, а на весы слева кликнуть не помешает!!!
mrandrey вне форума Ответить с цитированием
Старый 16.04.2007, 15:32   #3
mrandrey
Форумчанин
 
Регистрация: 30.03.2007
Сообщений: 124
По умолчанию

создаешь новый клас с предком какой тебе нужен
и добавляшь:

procedure MDown(var val:TWMMouse); message WM_RBUTTONDOWN ;

и появляется событие, розберешься?
Тут без 100г не розберешся.....
Спасибо не нужно, а на весы слева кликнуть не помешает!!!
mrandrey вне форума Ответить с цитированием
Старый 16.04.2007, 16:19   #4
Voland
Heavy metal
Пользователь
 
Аватар для Voland
 
Регистрация: 02.04.2007
Сообщений: 42
По умолчанию

По-моему это невозможно. Ну разве только написать свою собственную реализацию меню, не связанную с системной (как в MS Office например), но это уже дебри
Voland вне форума Ответить с цитированием
Старый 16.04.2007, 17:53   #5
mrandrey
Форумчанин
 
Регистрация: 30.03.2007
Сообщений: 124
По умолчанию

Код:
TMenuIte=class(TMenuItem)
  private
  protected
  procedure MDown(var val:TWMMouse); message WM_RBUTTONDOWN;
  end;....
а затем добавляешь его вместо TMenuItem примерно так:
Код:
var h:TMenuIte;
begin
h:=TMenuIte.Create(self);
h.Caption:=timetostr(time);
pm.Items.Add(h);
end;
Ctrl+Shift+spase и допиши что должен делать
Тут без 100г не розберешся.....
Спасибо не нужно, а на весы слева кликнуть не помешает!!!

Последний раз редактировалось Stilet; 17.09.2009 в 08:42.
mrandrey вне форума Ответить с цитированием
Старый 17.04.2007, 09:08   #6
Vadim_S
Новичок
Джуниор
 
Регистрация: 16.04.2007
Сообщений: 2
По умолчанию

Да, действительно, я хочу сделать событие не в PopupMenu, а в TMenuItem.
Пишу по вашему примеру:
Код:
type
TRCMenuItem = class(TMenuItem)
private 
procedure MDown(var val: TWMMouse); message WM_RBUTTONDOWN;
end;
 
type 
TForm1 = class (TForm)
private
MI: TRCMenuItem;
end;
 
procedure TRCMenuItem.MDown(var val: TWMMouse);
begin
Caption:=inttostr(Msg.Msg);
inherited;
end;
 
TForm1.FormCreate(Sender: TObject);
begin
MI:=TRCMenuItem.Create(Self);
PopupMenu1.Items.Add(MI);
По идеи должно срабатывать, но MenuItem не получает Caption.

Последний раз редактировалось Stilet; 17.09.2009 в 08:42.
Vadim_S вне форума Ответить с цитированием
Старый 17.04.2007, 22:22   #7
Voland
Heavy metal
Пользователь
 
Аватар для Voland
 
Регистрация: 02.04.2007
Сообщений: 42
По умолчанию

Не должно срабатывать. У TMenuItem вообще нет оконной процедуры, так что такое объявление
Код:
procedure MDown(var val: TWMMouse); message WM_RBUTTONDOWN;
не имеет смысла и какого-либо эффекта. Я же говорю - в стандартной реализации меню этого не сделаешь. Можно попробовать меню из ActionBands или как их там. В них наверное можно.
Voland вне форума Ответить с цитированием
Старый 10.05.2007, 19:47   #8
Andr
Пользователь
 
Аватар для Andr
 
Регистрация: 11.04.2007
Сообщений: 75
По умолчанию

Код:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var mouseRF,mouseLF:Boolean;
begin
{твой код}
end;

Последний раз редактировалось Stilet; 17.09.2009 в 08:42.
Andr вне форума Ответить с цитированием
Старый 16.09.2009, 18:15   #9
cemen13
Пользователь
 
Регистрация: 21.07.2009
Сообщений: 19
По умолчанию

Всем привет подскажите как вызвать виндовское меню правой кнопки мыши там еще есть такое подменю Отправит---а внем --- на рабочий стол --- мои документы и т.д
cemen13 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Организация обработчика OnClick 8alig8 Помощь студентам 1 03.06.2008 05:11
OnClick для массива компонентов Dj_smart Компоненты Delphi 5 30.04.2008 14:16
какая функция определяет - была-ли нажата левая кнопка мыши, положение мышки на экране Wicing Общие вопросы Delphi 5 11.12.2007 10:17
Помогите с onClick BeeX Общие вопросы C/C++ 1 22.11.2007 02:49
нажата ли кнопка мыши? VDLab Общие вопросы Delphi 2 15.11.2006 00:59