基础问题(关于窗体关闭),100分

MelvinSun 2002-11-29 10:42:00
现在我有两个窗体(Form1和Form2),需要在Form1关闭的时候提出询问,已经用下面这段FormCloseQuery解决:
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
if (MessageDlg("退出",
mtConfirmation,TMsgDlgButtons()<<mbOK<<mbCancel,0)
==mrCancel )
CanClose=false;
}

现在的问题是在Form1关闭的同时要求显示Form2,请问如何解决。

另外,如何设置属性将窗体的的最大化、最小化、和关闭按钮不可用。
...全文
10 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
borland_boy 2002-11-29
  • 打赏
  • 举报
回复
要在Form1里加入Form2的头文件(.h)
#include Unit2.h

void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
if (MessageDlg("退出",
mtConfirmation,TMsgDlgButtons()<<mbOK<<mbCancel,0)
==mrCancel )
CanClose=false;
Form2->Show();
}
2
设置Form的
BorderIcons->biSystemMenu=false;//关闭
->biMinimize=false;//最小
->biMaximize=false;//最大
属性BorderStyle也能决定最大化、最小化、和关闭按钮的状态
KingOf007 2002-11-29
  • 打赏
  • 举报
回复
也可以:
HMENU menu;
menu = GetSystemMenu(this->Handle,0);
EnableMenuItem(menu,SC_CLOSE,MF_BYCOMMAND+MF_DISABLED+MF_GRAYED);
KingOf007 2002-11-29
  • 打赏
  • 举报
回复
HMENU menu;
menu = GetSystemMenu(this->Handle,0);
DeleteMenu(menu,SC_CLOSE,MF_BYCOMMAND);
bluebird97073 2002-11-29
  • 打赏
  • 举报
回复

如果Form1是主窗口,当然也可以
设置CanClose属性为false。主窗体并不会释放~
KingOf007 2002-11-29
  • 打赏
  • 举报
回复
如果Form1是主窗口,办不到,否则,直接Form2->Show()就可以了
最大化和最小化可以设BorderIcon属性,至于关闭:
土著巫师 2002-11-29
  • 打赏
  • 举报
回复
1、不大明白你说的。
2、在TForm1:FormClose(...)
{
if(!Form2->Visible) Form2->Visible = true;
}
3、如果Form1是主窗口的话,这样是不可以的。因为主窗口关了,程序就退出了。

祝你好运。
bluebird97073 2002-11-29
  • 打赏
  • 举报
回复
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
if (MessageDlg("退出",
mtConfirmation,TMsgDlgButtons()<<mbOK<<mbCancel,0)
==mrCancel )
CanClose=false;
Form2->Show();
}
2
设置Form的BorderIcons->biSystemMenu=false;
->biMinimize=false;
->biMaximize=false;
keenleung 2002-11-29
  • 打赏
  • 举报
回复
你的Form1是主Form吧?关掉的话整个程序都关了
可以把它的Visible设为false,
也可以指定其他Form为主窗体

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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