프로그램 종료 막기
방법 1
form의 Event 중 OnCloseQuery라는 이벤트가 있습니다.
프로그램이 종료되기 전에 일어나는 이벤트입니다.
이 이밴트 procedure를 보면
FormCloseQuery(Sender: TObject; var CanClose : Boolean); <------ 이런식으로 선언이 되어 있는데
여기서 DEFAULT 로는 Canclose := TRUE 로 되어 있습니다.
만약 종료를 못하게 하고 싶다면 CanClose := FALSE로 설정 하시면 됩니다.
EX> 1. Edit1.Text가 "사과" 종료 하고 다른 것이면 종료를 못하게 하자
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if Edit1.Text = '사과' then
CanClose := FALSE
else
Canclose := FALSE;
end;
이런식으로 코딩을 하면 됩니다.
방법2
폼의 OnClose 이벤트를 이용하는 것입니다.
이것은 단순히 ALT+F4만을 막는 것이 아니라 폼을 닫으려는 어떤 시도도 통하지 않습니다.
OnClose 이벤트 핸들러의 Action 파라미터에 어떤 값을 넣느냐에 따라 다릅니다.
Action := caNone - 폼은 절대 닫히지 않는다.
Action := caHidden - 폼은 화면에서 사라지지만 억세스 가능한채로 남아있다.
Action := caFree - 폼은 화면에서 사라지고 메모리에서도 완전히 제거된다.
Action := caMinimize - 폼이 최소화 되어 아이코닉한 형태로 변한다.
예를들어 OnClose 이벤트에 다음과 같이 넣어주면 CloseQuery의 역할을 대신합니다.
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if MessageDlg('Close application ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
Action := caFree
else
Action := caNone;
end;
다른 방법을 이용하더라도 종료시키는 방법은 있습니다.
바로 강력한 키보드인 CTRL+ALT+DEL키입니다.
그래서 마지막으로 이것을 중지 시켜놓아야합니다.
방법은
var
B: LongInt;
begin
SystemParametersInfo(97, word (True), @B, 0); // Disabled;
end;
해제할려면 True대신에 False를 사용하면 가능합니다.
'Delphi Tip > +Tip' 카테고리의 다른 글
가변 데이터의 저장 기법 (0) | 2023.07.10 |
---|---|
컨트롤의 Enter 처리 (0) | 2023.07.04 |
메모 프린터 기타 (0) | 2022.06.29 |
델파이 엑셀(Excel) 수식 포함 저장하기 (0) | 2022.04.18 |
MessageBox와 MessageDlg의 차이점 (0) | 2022.04.15 |
댓글