![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запрещение Alt + F4
Lord BDV © (2002-01-28 20:15:00)Приветствую, Мастера.
Подскажите, пожалуйста, как сделать так, чтобы форму моей программы нельзя было закрыть стандартными средствами с клавиатуры (например, такими, как Alt + F4).
Back (2002-02-01 00:27:00) [1]Нифига себе, пока меня небыло вы тут такое ..... ТАКОЕ развернули. Я просто предложил, сам так делаю, а вы ???
Давайте смотреть проще
Kirill (2002-01-31 17:57:00) [2]Я развил ответ Back"а!
Мой ответ тоже подходит. А какой использовать - выбор автора. :-)
Johnmen (2002-01-31 17:43:00) [3]> Kirill : да я не спорю, что так можно и так работает,
я просто говорю, что было Запрещение Alt + F4(см. заголовок вопроса), а это лучше делать см. DeCompiler
Kirill (2002-01-31 17:32:00) [4]2Johnmen:
Вы ошиблись. Для наглядности приведу пример:
type
Form1 = class(TForm)
...
mnExit : TMenuItem
...
procedure FormCreate(Sender: TObject);
procedure FormCloseQuery(...);
procedure mnExitClick(...);
private
Mona : boolean;
...
end;
procedure Form1.FormCreate(Sender: TObject);
begin
Mona:=false;
end;
procedure Form1.mnExitClick(...);
begin
Mona:=true;
Close;
end;
procedure Form1.FormCloseQuery(...)
begin
CanClose:=Mona;
end;
Johnmen (2002-01-31 16:54:00) [5]>Kirill : по-моему, вы ответили на вопрос, как предотвратить закрытие формы по любому, причем еще и заводя переменную Mona,
а изначальный вопрос...
нельзя было закрыть стандартными средствами с клавиатуры (например, такими, как Alt + F4).
Kirill (2002-01-31 16:32:00) [6]2Johnmen:
А на что я по-вашему ответил?
Johnmen (2002-01-31 15:11:00) [7]>>>kaif : кайфово !!!!!!!!!!!!!!!
kaif (2002-01-31 15:09:00) [8]Можно круче:
в OnCloseQuery вписать:
raiseException.Create(
"Кто это тут мою форму пытается закрыть?"+#13+
"Для закрытия формы обратитесь к системному администратору");
Johnmen (2002-01-31 15:09:00) [9]>Back & >Kirill & >novomod : мужики, надо же отвечать на поставленныйвопрос !, как это сделал DeCompiler, забыв упомянуть, что Form1.KeyPreview:=True;
novomod (2002-01-31 14:56:00) [10]при событии OnCloseQuery пишешь CanClose:=false; и всё!!!
Kirill (2002-01-29 12:19:00) [11]Можно без
Application.Terminate;
на событииOnCloseQuery()ставишьCanClose:=Mona;
В обработчике меню или на кнопке где выключаете прогуMona:=true;
Back (2002-01-29 00:09:00) [12]Mona:=Boolean;// типа закроем или нет
procedure Form1.Create()
..
Mona:=False;
..
..
Procedure ()
..
Mona:=True;// тоесть если в данном случае нам уже надо её закрыть
ну можно использовать и такое:
Application.Terminate;
..
..
procedure Form1.Close();
begin
If Mona then Action:=caFree
else Action:=caNone;
end;
ну вот и всё
DeCompiler (2002-01-29 00:06:00) [13]На событие OnKeyPress (или OnKeyDown? память никуда :) отлавливай следующее:
if (Key = VK_F4) and (ssAlt in Shift) then
//FuckUP :)
Key := 0;
Впрочем, если очень надо, прогу можно затерминатить из великой комбинации из трех пальцев... Смотри в SystemParametersInfo, дальше параметр SPI_SCREENSAVER_RUNNING...
Успехов.