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

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

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

Ответ
 
Опции темы
Старый 27.11.2009, 21:52   #1
Nice42ru
Форумчанин
 
Регистрация: 25.10.2009
Сообщений: 131
Репутация: 10
По умолчанию Горячая кнопка Delphi

Как в моём приложении написанном на Delphi сделать так чтобы при нажатии кнопки например F12 приложение закрывалось?
Nice42ru вне форума   Ответить с цитированием
Старый 27.11.2009, 21:58   #2
mihali4
*
Профессионал
 
Регистрация: 22.11.2006
Адрес: Москва
Сообщений: 9,198
Репутация: 2661
По умолчанию

Вот пример:
Цитата:
Регистрация горячих системных клавиш

{the following example demonstrates registering hotkeys with the
system to globally trap keys}

unit unit1;

interface

uses
windows, messages, sysutils, classes, graphics, controls, forms,
dialogs;

type
tform1 = class(tform)
procedure formcreate(sender: tobject);
procedure formdestroy(sender: tobject);
private
{ private declarations }
id1, id2, id3, id4: integer;
procedure wmhotkey(var msg: twmhotkey); message wm_hotkey;
public
{ public declarations }
end;

var
form1: tform1;

implementation

{$r *.dfm}

// trap hotkey messages
procedure tform1.wmhotkey(var msg: twmhotkey);
begin
if msg.hotkey = id1 then
showmessage('ctrl + a pressed !');
if msg.hotkey = id2 then
showmessage('ctrl + alt + r pressed !');
if msg.hotkey = id3 then
showmessage('win + f4 pressed !');
if msg.hotkey = id4 then
showmessage('print screen pressed !');
end;

procedure tform1.formcreate(sender: tobject);
// different constants from windows.pas
const
mod_alt = 1;
mod_control = 2;
mod_shift = 4;
mod_win = 8;
vk_a = $41;
vk_r = $52;
vk_f4 = $73;
begin
// register hotkey ctrl + a
id1 := globaladdatom('hotkey1');
registerhotkey(handle, id1, mod_control, vk_a);

// register hotkey ctrl + alt + r
id2 := globaladdatom('hotkey2');
registerhotkey(handle, id2, mod_control + mod_alt, vk_r);

// register hotkey win + f4
id3 := globaladdatom('hotkey3');
registerhotkey(handle, id3, mod_win, vk_f4);

// globally trap the windows system key "printscreen"
id4 := globaladdatom('hotkey4');
registerhotkey(handle, id4, 0, vk_snapshot);
end;

// unregister the hotkeys
procedure tform1.formdestroy(sender: tobject);
begin
unregisterhotkey(handle, id1);
globaldeleteatom(id1);
unregisterhotkey(handle, id2);
globaldeleteatom(id2);
unregisterhotkey(handle, id3);
globaldeleteatom(id3);
unregisterhotkey(handle, id4);
globaldeleteatom(id4);
end;
Тут много лишнего, но это вы уже сами уберете...
Подсказка - ваш Close нужно вписать (по аналогии) вместо
showmessage('F12 pressed !');
mihali4 вне форума   Ответить с цитированием
Старый 27.11.2009, 22:33   #3
Nice42ru
Форумчанин
 
Регистрация: 25.10.2009
Сообщений: 131
Репутация: 10
По умолчанию

ок спасибо!
Nice42ru вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
И снова левая и правая кнопка мыши (Delphi 7) alxd Помощь студентам 6 25.09.2009 14:10
Горячая кнопка для компонента TDBCheckbox Ghorik Компоненты Delphi 1 27.08.2009 11:14
Горячая клавиша на двух формах RIO Общие вопросы Delphi 2 23.08.2009 12:47
Горячая клавиша под G(п) на Delphi __@cmd@__ Свободное общение 4 17.06.2009 09:16
Кнопка не создается Манжосов Денис :) Компоненты Delphi 10 28.04.2008 17:43


00:09.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru