L
lccc
Unregistered / Unconfirmed
GUEST, unregistred user!
我希望窗体的最大、最小按钮、关闭按钮一直存在,而不是成为对话框形式,
所以我直接在TForm的定义中增加五个属性,代码如下:
TForm = class(TCustomForm)
private
....
//以下是自动生成的
procedure SetCanClose(const Value: Boolean);
procedure SetCanMax(const Value: Boolean);
procedure SetCanMin(const Value: Boolean);
procedure SetCanMove(const Value: Boolean);
procedure SetCanReSize(const Value: Boolean);
protected
...
//以下是拦截菜单命令的消息处理方法:
procedure WMSysCommand(var Message: TWMSysCommand);message wm_SysCommand;
public
constructor Create(AOwner:Tcomponent);override;
...
published
....
//以下是自己定义的属性:
//CanClose:允许关闭;Canmax:允许最大化;
//CanMin允许最小化;CanMove:允许移动;
//CanReSize:允许改变大小;
property CanClose:Boolean read FCanClose write SetCanClose Default True;
property CanMax:Boolean read FCanMax write SetCanMax Default True;
property CanMin:Boolean read FCanMin write SetCanMin Default True;
property CanMove:Boolean read FCanMove write SetCanMove Default True;
property CanReSize:Boolean read FCanReSize write SetCanReSize Default True;
...
end;
实现部分:
constructor TForm.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FCanClose:=True;//设置五个属性的默认值。
FCanMax:=True;
FCanMin:=True;
FCanMove:=True;
FCanReSize:=True;
end;
procedure TForm.WMSysCommand(var Message: TWMSysCommand);
begin
case Message.CmdType of
SC_CLOSE://处理关闭系统事件
if CanClose then
inherited
else
Abort;
SC_MAXIMIZE://处理最大化系统事件
if CanMax then
inherited
else
Abort;
SC_MINIMIZE://处理最小化系统事件
if CanMin then
inherited
else
Abort;
SC_MOVE://处理移动系统事件
if CanMove then
inherited
else
Abort;
SC_SIZE://处理尺寸改变系统事件
if CanReSize then
inherited
else
Abort;
else
inherited;
end;
end;
结果:设置CanClose、CanMax、CanMin为 False 能禁止关闭、最大化、最小化,
但设置CanResize和CanMove=False 却不能禁止改变大小和移动!
另外,为什么这些属性不出现在属性监视器上?
请高手指教!
所以我直接在TForm的定义中增加五个属性,代码如下:
TForm = class(TCustomForm)
private
....
//以下是自动生成的
procedure SetCanClose(const Value: Boolean);
procedure SetCanMax(const Value: Boolean);
procedure SetCanMin(const Value: Boolean);
procedure SetCanMove(const Value: Boolean);
procedure SetCanReSize(const Value: Boolean);
protected
...
//以下是拦截菜单命令的消息处理方法:
procedure WMSysCommand(var Message: TWMSysCommand);message wm_SysCommand;
public
constructor Create(AOwner:Tcomponent);override;
...
published
....
//以下是自己定义的属性:
//CanClose:允许关闭;Canmax:允许最大化;
//CanMin允许最小化;CanMove:允许移动;
//CanReSize:允许改变大小;
property CanClose:Boolean read FCanClose write SetCanClose Default True;
property CanMax:Boolean read FCanMax write SetCanMax Default True;
property CanMin:Boolean read FCanMin write SetCanMin Default True;
property CanMove:Boolean read FCanMove write SetCanMove Default True;
property CanReSize:Boolean read FCanReSize write SetCanReSize Default True;
...
end;
实现部分:
constructor TForm.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FCanClose:=True;//设置五个属性的默认值。
FCanMax:=True;
FCanMin:=True;
FCanMove:=True;
FCanReSize:=True;
end;
procedure TForm.WMSysCommand(var Message: TWMSysCommand);
begin
case Message.CmdType of
SC_CLOSE://处理关闭系统事件
if CanClose then
inherited
else
Abort;
SC_MAXIMIZE://处理最大化系统事件
if CanMax then
inherited
else
Abort;
SC_MINIMIZE://处理最小化系统事件
if CanMin then
inherited
else
Abort;
SC_MOVE://处理移动系统事件
if CanMove then
inherited
else
Abort;
SC_SIZE://处理尺寸改变系统事件
if CanReSize then
inherited
else
Abort;
else
inherited;
end;
end;
结果:设置CanClose、CanMax、CanMin为 False 能禁止关闭、最大化、最小化,
但设置CanResize和CanMove=False 却不能禁止改变大小和移动!
另外,为什么这些属性不出现在属性监视器上?
请高手指教!