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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2009, 16:12   #1
mavlon_m
Форумчанин
 
Регистрация: 04.08.2009
Сообщений: 101
По умолчанию Как дезактивировать Alt+F4

Привет всем!

Скажите пожалуйста, как сделать чтобы пользователь не смог закрыть программу с клавиш Alt + f4
mavlon_m вне форума Ответить с цитированием
Старый 13.11.2009, 16:14   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

обрабатывать сообщение формы onclosequery


UPD
---------------
ot mihali4
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 13.11.2009 в 17:05.
raxp вне форума Ответить с цитированием
Старый 13.11.2009, 16:31   #3
Alex2009
Proger Man
Форумчанин
 
Аватар для Alex2009
 
Регистрация: 07.03.2009
Сообщений: 584
По умолчанию

Как отключить Alt+F4
1)В событие формы OnCloseQuery задайте CanClose := false
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := false;
end;
2)
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if my_flag = false then CanClose := false;
end;
где my_flag - глобальная переменная. Она всегда false, а в true устанавливается только в событии нажатия кнопки "Отмена".
3)
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if my_flag = false then CanClose := false;
end;
CanClose := my_flag;
4)
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Shift = [ssAlt]) and (Key = VK_F4) then Key := 0;
end;
5)
TForm2 = class....
...
procedure WMSYSCOMMAND(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
...
procedure TForm2.WMSYSCOMMAND(var Msg: TWMSysCommand);
begin
if Msg.CmdType <> SC_CLOSE then inherited;
end;
ShowMessage('Добро пожаловать!');
Alex2009 вне форума Ответить с цитированием
Старый 13.11.2009, 17:01   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Да что ж вы звереете-то?
Это же делается элементарно:
Код:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if ((ssAlt in Shift) and (Key = VK_F4)) then
Key := 0;
end;
З.Ы. Пардон, не заметил... Alex2009 уже привел такой вариант.
Просто с первого взгляда я подумал, что это он по шагам расписал

Последний раз редактировалось mihali4; 13.11.2009 в 17:03.
mihali4 вне форума Ответить с цитированием
Старый 02.04.2010, 19:25   #5
Dj_SheLL
Форумчанин
 
Аватар для Dj_SheLL
 
Регистрация: 14.10.2009
Сообщений: 128
По умолчанию

А как сделать на сочетание вызвать обработку чего-то?Только через хук или можно через procedure TForm1.FormCloseQuery?
Dj_SheLL вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заблокировать горячие клавиши Alt+F11 kovalevskivf Microsoft Office Excel 2 20.05.2009 11:26
Alt+F4 ruavia3 Microsoft Office Excel 3 24.04.2009 15:40
не получается отключение CTRL+alt+del? Alt+TAb, часов с панели задач и Крестик окна Reds Общие вопросы Delphi 1 30.09.2008 10:37
Alt+F4 как отключить работу этой комбинации??? PROGR Общие вопросы Delphi 46 17.07.2007 14:18