简单问题:怎样让窗口右上角的关闭按钮失去作用

laohai 2003-09-11 11:55:03
我在主界面上设了退出按钮,只想按这个钮退出,
怎样让窗口右上角的关闭按钮失去作用?
另:怎样让弹出的窗口无法移动,但窗口内还可正常操作
...全文
86 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
michaelpeng7799 2003-09-11
  • 打赏
  • 举报
回复
星星就是星星,用的方法就是拽 ^_^
Dlwxn 2003-09-11
  • 打赏
  • 举报
回复
form1.BorderStyle属性设置为bsNone
FrameSniper 2003-09-11
  • 打赏
  • 举报
回复
重新定义Wm_SysCommand消息,如下:

procedure TForm1.WmSysCommand(var Msg:TMessage);message WM_SYSCOMMAND;
begin
if Msg.WParam<>SC_CLOSE then
Inherited;
end;
shmilyjiujiu 2003-09-11
  • 打赏
  • 举报
回复
form1.BorderIcons设置为bisystemmemu的属性为false;
或者用
form1.BorderIcons:=BorderIcons - [biMaximize]-[biminimize];
wangguan007 2003-09-11
  • 打赏
  • 举报
回复
另:怎样让弹出的窗口无法移动,但窗口内还可正常操作

弹出窗体用showmodal,不用show
duxin 2003-09-11
  • 打赏
  • 举报
回复
搂住没有试过 fs 的方法把

procedure TForm1.WmSysCommand(var Msg:TMessage);message WM_SYSCOMMAND;
begin
if Msg.WParam<>SC_CLOSE then
//Inherited;注意这一句 如果添加系统会调用原先的功能 如果不添加 就取消系统的关闭功能
end;

把分给 fs 吧
free007 2003-09-11
  • 打赏
  • 举报
回复
天天向上说得对
FrameSniper 2003-09-11
  • 打赏
  • 举报
回复
楼主,我那个重新定义消息的方法已经给了你很明确的答案了,那样做不会让关闭按钮消失,却可以让它在被按下后不起作用!

让窗口无法移动方法很多,当然也可以使用消息,如下:

procedure TForm1.WmNcHitTest(var Msg:TMessage);message WM_NCHITTEST;
begin
Inherited;
if Msg.Result=htCaption then
Msg.Result:=htClient;
end;
delphiseabird 2003-09-11
  • 打赏
  • 举报
回复
那只能截获系统的消息了NCCLICK和SC_CLOSE 确切的我记不清了,大概是这个样子,自定义了事件处理函数,就能屏蔽他们
laohai 2003-09-11
  • 打赏
  • 举报
回复
大家可能有点误会了,我的意思是只让窗口右上角的关闭按钮失去作用(即可以看见,但不能操作,就像被enabled=false一样),最大化按钮不能用,我已经通过设置borderIcons下的bimaximize=false实现了,最小化按钮还可以用。
我试了大家的方法都是让最小化、最大化、关闭按钮消失,这不符合要求

另:怎样让弹出的窗口无法移动,但窗口内还可正常操作

ahjoe 2003-09-11
  • 打赏
  • 举报
回复
办法一:
exitclicked: Boolean = False;

implementation

{$R *.DFM}

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if not exitclicked then
Action := caNone;
end;

procedure TForm1.btnExitClick(Sender: TObject);
begin
exitclicked := True;
Close();
end;

办法二:
Form1.BorderIcons := [];
ahjoe 2003-09-11
  • 打赏
  • 举报
回复
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caNone;
end;

holy520 2003-09-11
  • 打赏
  • 举报
回复
close()
canclose:=false;
不知道是不是这样

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧