Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 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, а в каком есть?
mrandrey вне форума Ответить с цитированием
Старый 16.04.2007, 15:32   #3
mrandrey
Форумчанин
 
Регистрация: 30.03.2007
Сообщений: 124
По умолчанию

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

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

и появляется событие, розберешься?
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 и допиши что должен делать

Последний раз редактировалось 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 вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


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


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS