Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник
Коллекция курьезных вопросов из форумов
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Обработка нажатия правой клавиши мыши [Delphi]


BIOnik   (08.09.20 06:50

Выход из моей программы осуществляется правой клавишей мыши. Проблема в том, что после закрытия окна моей программы, нажатие на правую клавишу мыши "ещё раз" обрабатывается приложением находящимся под окном моей программы.

Другими словами, если под окном моей программы будет расположен например рабочий стол, то будет вызвано контекстное меню рабочего стола.

Подскажите, как побороть это недоразумение?

Uses Windows, Messages, KOL;
var W : PControl;
{-----------------------------------------------------------------------------}
Procedure W_MouseDown(Dummy:Pointer; Sender: PControl; var Mouse: TMouseEventData);
begin
   if (Mouse.Button = mbRight) then Halt; // Правая клавиша мыши - Выход из программы
end;
{-----------------------------------------------------------------------------}
BEGIN
   W := NewForm( Applet, '...' ).SetClientSize( 400, 400 );
   W.OnMouseDown := TOnMouse(MakeMethod(nil, @W_MouseDown));
   Run( W );
END.


RusSun ©   (08.09.20 15:59[1]

Если мне память не изменяет
У формы есть событие close. =)


DKOL   (08.09.20 17:04[2]

Например - использовать событие OnMouseUp, вместо OnMouseDown


BIOnik   (08.09.20 17:37[3]

Действительно, при использовании OnMouseUp всё работает корректно!
Большое спасибо!

Uses Windows, Messages, KOL;
var W : PControl;
{-----------------------------------------------------------------------------}
Procedure W_MouseUp(Dummy:Pointer; Sender: PControl; var Mouse: TMouseEventData);
begin
   if (Mouse.Button = mbRight) then Halt; // Правая клавиша мыши - Выход из программы
end;
{-----------------------------------------------------------------------------}
BEGIN
   W := NewForm( Applet, '...' ).SetClientSize( 400, 400 );
   W.OnMouseUp := TOnMouse(MakeMethod(nil, @W_MouseUp));
   Run( W );
END.


Dimaxx ©   (11.09.20 10:11[4]

Halt - аварийное завершение программы. Для выхода в данном случае есть, как уже сказали, Close у формы.


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо