如何使form窗口不可关闭(50分)

  • 主题发起人 主题发起人 小天
  • 开始时间 开始时间

小天

Unregistered / Unconfirmed
GUEST, unregistred user!
我希望用户只能用按钮关闭当前窗口
能不能使form上的关闭的那个差差
和windows的Alt+F4等无效呢?
 
你可以试验一下这个API
EnableMenuItem(GetSystemMenu(Handle, FALSE), SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
 
将form的bordericons中的bisystemmenu设为false即可
至于屏蔽alt+f用systemparamterinfo好像不行
 
你可以这样实现:
设定一个布尔变量 cancloseform :=false

按关按钮后 cancloseform:=true

在form 的 onclose事件中
if cancloseform
then Action:=caFree
else Action:=caNone
 
Form.OnClose里不行吗?
begin
if CANCLOSE
Action := caFree
else
Action := caNone;
end;
 
喔,我忘记屏蔽Alt_F4,了,你只需要在
Form.FormClose事件里加一句
Abort;即可
再加上
EnableMenuItem(GetSystemMenu(Handle, FALSE), SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
恐怕只有你能关闭这个窗口了。
 
当然关闭按钮代码别忘了加上 form1.close :)
 
应该将这些处理放在form.onclosequery中
 
closequery事件中
canclose:=false;
 
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if ActiveControl<>Button2 then
CanClose:=false;
end;
button2里写有关FORM关闭的代码.
 
colinyan:你的API不管用,但如果加了abort,我连按钮也关了窗口了 :(
cytown: ActiveControl好象好没用
 
多人接受答案了。
 
这个Api可以在任何时候使右上角的关闭按键失效,即使程序启动时它还存在。
关闭在FormClose事件里加了Abort,在程序里关闭窗口需要使用
Form1.Destory;
 
呵呵,我保证可以通过,你用的是D4吗?我已经测过了。
 
后退
顶部