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

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

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

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

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

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

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

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

{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, 21:33   #3
Nice42ru
Форумчанин
 
Регистрация: 25.10.2009
Сообщений: 131
По умолчанию

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


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
И снова левая и правая кнопка мыши (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