Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.14;
Скачать: [xml.tar.bz2];




Вниз

Запрещение Alt + F4 


Lord BDV   (2002-01-28 20:15) [0]

Приветствую, Мастера.
Подскажите, пожалуйста, как сделать так, чтобы форму моей программы нельзя было закрыть стандартными средствами с клавиатуры (например, такими, как Alt + F4).



DeCompiler   (2002-01-29 00:06) [1]

На событие OnKeyPress (или OnKeyDown? память никуда :) отлавливай следующее:


if (Key = VK_F4) and (ssAlt in Shift) then
//FuckUP :)
Key := 0;


Впрочем, если очень надо, прогу можно затерминатить из великой комбинации из трех пальцев... Смотри в SystemParametersInfo, дальше параметр SPI_SCREENSAVER_RUNNING...

Успехов.



Back   (2002-01-29 00:09) [2]

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;

ну вот и всё






Kirill   (2002-01-29 12:19) [3]

Можно без
Application.Terminate;
на событии OnCloseQuery() ставишь CanClose:=Mona;
В обработчике меню или на кнопке где выключаете прогу Mona:=true;



novomod   (2002-01-31 14:56) [4]

при событии OnCloseQuery пишешь CanClose:=false; и всё!!!



kaif   (2002-01-31 15:09) [5]

Можно круче:
в OnCloseQuery вписать:
raise Exception.Create(
"Кто это тут мою форму пытается закрыть?"+#13+
"Для закрытия формы обратитесь к системному администратору");



Johnmen   (2002-01-31 15:09) [6]

>Back & >Kirill & >novomod : мужики, надо же отвечать на поставленный вопрос !, как это сделал DeCompiler, забыв упомянуть, что Form1.KeyPreview:=True;



Johnmen   (2002-01-31 15:11) [7]

>>>kaif : кайфово !!!!!!!!!!!!!!!



Kirill   (2002-01-31 16:32) [8]

2Johnmen:
А на что я по-вашему ответил?



Johnmen   (2002-01-31 16:54) [9]

>Kirill : по-моему, вы ответили на вопрос, как предотвратить закрытие формы по любому, причем еще и заводя переменную Mona,
а изначальный вопрос...
нельзя было закрыть стандартными средствами с клавиатуры (например, такими, как Alt + F4).



Kirill   (2002-01-31 17:32) [10]

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 17:43) [11]

> Kirill : да я не спорю, что так можно и так работает,
я просто говорю, что было Запрещение Alt + F4 (см. заголовок вопроса), а это лучше делать см. DeCompiler



Kirill   (2002-01-31 17:57) [12]

Я развил ответ Back"а!
Мой ответ тоже подходит. А какой использовать - выбор автора. :-)



Back   (2002-02-01 00:27) [13]

Нифига себе, пока меня небыло вы тут такое ..... ТАКОЕ развернули. Я просто предложил, сам так делаю, а вы ???
Давайте смотреть проще




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.14;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.032 c
4-42899           Вовка                 2001-12-16 21:37  2002.02.14  
WinAPI


1-42800           Lord BDV              2002-01-28 20:15  2002.02.14  
Запрещение Alt + F4


6-42819           _Voodsboro_           2001-11-25 13:55  2002.02.14  
NMSMTP/ КАК написать анонимный маил


14-42849          fliz                  2001-12-25 10:32  2002.02.14  
Кто какие елки ставить будет - натуральные или исскуственные ?


1-42795           Tomvitas              2002-01-30 23:47  2002.02.14  
Как в TStringGrid програмно перенести Selection с одной строки в другую?