我要在运行的某个时刻窗体不能最大化,最小化,关闭,应怎样做?(100分)

  • 主题发起人 主题发起人 gravel
  • 开始时间 开始时间
把Form的BorderIcons设为[](空)就行了
 
就是这样:
//禁止最大化,最小化,关闭
BorderIcons := [];
//允许最大化,最小化,关闭
BorderIcons := [biSystemMenu, biMinimize, biMaximize];
 
怎么有100分?!
 
>>ZRY
这样还不行,Alt+F4还是能关闭,
还是截获wm_syscommand处理一下.
 
>>Keyes
不用处理wm_syscommand,在此时的onColseQuery里 CanClose:=False;
 
屏蔽Alt+F4键只需在Form的CloseQuery事件中将CanClose:=False;
以后要关闭窗体时Form1.OnCloseQuery:=nil;close即可
 
还是截获wm_syscommand保险!
 
截获wm_syscommand稳定性好
 
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := MySelfCanClose;
end;
简单易行.
其中MySelfCanClose是自己定义的决定窗体是否关闭的Boolean变量.
 
procedure WndProc(var message:TMessage);override;

procedure TForm1.WndProc(var message:TMessage);
begin
if message.msg=WM_SYSCOMMAND then
begin
message.wparam:=0;
end;
end;
 
对不起,忘了写inherited
procedure WndProc(var message:TMessage);override;

procedure TForm1.WndProc(var message:TMessage);
begin
if message.msg=WM_SYSCOMMAND then
message.wparam:=0;
inherited;
end;
 
Alt+F4是Windows中关闭应用程序的组合键,如果是对主窗体的话就要截获
WM_SYSCOMMAND消息,如果是程序中的其他窗体,用BorderIcons属性就行了。
 
将窗体的borderstyle属性设置为none,即你的窗体无边框。这样最小化和最大
化及关闭都不见了。
 
结束了吧!!!!!!!!!!
 
一般要求只要 borderstyle bordericons 都设置为 none 就行了.
 
heihei
ctrl alt del 怎么办?还要让窗口成为屏保,有类似问题。
 
在Win9X下还要处理WM_QUERYENDSESSIONX消息!
To walala:
但在NT下无效.
 

Similar threads

回复
0
查看
861
不得闲
D
回复
0
查看
924
DelphiTeacher的专栏
D
D
回复
0
查看
879
DelphiTeacher的专栏
D
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
911
SUNSTONE的Delphi笔记
S
后退
顶部