想在点击窗体的关闭按钮时添加些操作,应该将这些操作加到哪?怎么获取窗体的关闭按钮被点击过呢?

redblues 2003-06-14 10:09:02
同上!
...全文
175 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
redblues 2003-06-21
  • 打赏
  • 举报
回复
谢谢各位,终于解决了!
redblues 2003-06-18
  • 打赏
  • 举报
回复
谢谢各位,我先试试!

是这样的,我程序中的登录窗体,除了做登录系统用,还要在其他地方用,比如,我在程序中提供了用户修改个人信息,然后以修改后的信息可以进行重新登录的功能。
wzf0312 2003-06-18
  • 打赏
  • 举报
回复
赞成在OnCloseQuery事件中处理退出时的提示,但对于如何获取杯点击按钮的焦点,我想不能完全通过mrok,mrcancle来确定,譬如,在自己做的一个MessageBox提示框中,可能会有3个按钮,怎么确定用户点击那个呢?所以建议设置变量来控制,这样不仅可以控制点击退出按钮,对于其他任何按钮都能有效的控制。
yangfan369 2003-06-18
  • 打赏
  • 举报
回复
简单点,OnClose()事件中。
defencez 2003-06-18
  • 打赏
  • 举报
回复
Application->Initialize();
Application->CreateForm(__classid(TSMainForm), &SMainForm); //主窗体
frm_Login = new Tfrm_Login(Application);
frm_Login->ShowModal(); //
if( frm_Login->NormalClose )
{
delete frm_Login;
frm_Login = NULL;
Application->Run();
}
else
{
delete frm_Login;
frm_Login = NULL;
Application->Terminate();
}

程序说明:首先创建主窗体,然后创建登陆窗体,并以模式窗体显示(这样不能对主窗体进
行任何操作,可在设计期将主窗体的VIsible设为false),若登陆成功,则程序运行,并销毁登录窗,否则退出程序运行,有关登录逻辑,可在登录窗体类中实现
jishiping 2003-06-18
  • 打赏
  • 举报
回复
1. 登陆窗口的写法。假设你的登陆窗口的class为TLoginForm,上面有2个按钮,标题分别
是“确定”和“取消”。“确定”表示进入主界面,“取消”表示不登陆(也就是退出)。
设定Form时,“确定”按钮的属性ModalResult设为mrOk,而“取消”按钮的ModalResult设
为mrCancel。这样当窗口关闭时,可以通过Form的属性ModalResult来判断用户按下的是不
是“确定”按钮。
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
TLoginForm* Form = new TLoginForm(NULL);
if (Form->ShowModal()!=mrOk) return 0;
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
return 0;
}

2. 当用户在登陆对话框里选择“取消”(或者关闭)时,你说显示一个对话框,询问是否
真的退出,在登陆对话框的OnClose里这样写就可以了:
void __fastcall TLoginForm::FormClose(TObject *Sender,
TCloseAction &Action)
{
if (ModalResult == mrOk) { //用户选择了“确定”
//这儿判断用户名和密码是否正确,
if (密码不正确,不允许进入主界面)
ModalResult = mrNone; //不让登陆对话框关闭
}
else {
if (MessageBox(Handle,"真的要退出吗?","退出",
MB_YESNO|MB_ICONQUESTION)!=IDYES)
ModalResult = mrNone; //不让登陆对话框关闭
}
}
redblues 2003-06-18
  • 打赏
  • 举报
回复
我没在这个窗体的onshow里写代码,我也很奇怪!
defencez 2003-06-18
  • 打赏
  • 举报
回复
你在OnShow事件中写代码了?置窗体的可显示属性?
如果没有应该不会出现这样的问题
redblues 2003-06-18
  • 打赏
  • 举报
回复
cannot change visible in onshow or onhide
这个是怎么造成的,当登录窗体出现时我直接点击窗体关闭按钮就会出现这个!
yhz 2003-06-17
  • 打赏
  • 举报
回复
还是不行呀!我重载WndProc,结果发现好像无论点击关闭时的询问对话框的YES或NO按钮,它都一并关掉窗体!怎么回事!各位帮帮忙呀!谢了!

如果你要实现这种功能,你就应该在OnCloseQuery事件里写上:
CanClose = false;//不关闭窗体。
CanClose = true;//关闭窗体。

OnCloseQuery和OnClose的区别是:
前者是在要关闭,而未开始关闭时触发的。所以,你要阻止窗体的关闭,就要在这里加。
而后者则是在确定关闭后触发的。例如你要在关闭前保存文件等等,就要在这里加。


redblues 2003-06-16
  • 打赏
  • 举报
回复
还是不行呀!我重载WndProc,结果发现好像无论点击关闭时的询问对话框的YES或NO按钮,它都一并关掉窗体!怎么回事!各位帮帮忙呀!谢了!
redblues 2003-06-14
  • 打赏
  • 举报
回复
谢谢各位参与!
redblues 2003-06-14
  • 打赏
  • 举报
回复
是这样的,我想实现的效果是:
同时显示了两个非MDI窗体:一个是登录窗体,一个是主窗体
首先如何做到当我在登录窗体进行操作时不可以对主窗体进行操作;
这个怎么实现?

其次当我没有输入登录信息只是通过点击登录窗口的关闭按钮时弹出对话框,问是否要退出系统,如果是就要关闭登录窗体和主窗体;

问题:我现在在主窗体和登录窗体中加入OnCloseQuery,只要是在窗体关闭,包括自动关闭窗体时都会弹出对话框,有没办法控制只有在人为点击关闭按钮时才弹出
我不懂电脑 2003-06-14
  • 打赏
  • 举报
回复
OnCloseQuery事件处理。
redblues 2003-06-14
  • 打赏
  • 举报
回复
怎么知道是否点击关闭按钮?我只要在点击关闭按钮后才执行某操作,判断语句如何写?
Thor_Cascades 2003-06-14
  • 打赏
  • 举报
回复
应该是OnCloseQuery()里面

OnClose()是在窗体关闭的时候才触发
yhz 2003-06-14
  • 打赏
  • 举报
回复
CloseQuery
redblues 2003-06-14
  • 打赏
  • 举报
回复
OnClose()好像是对所有的关闭该窗体的都响应吧,我只要在点击窗体关闭按钮时才响应
storejyjs 2003-06-14
  • 打赏
  • 举报
回复
在相对的窗体的onclose事件中编程
tinderman 2003-06-14
  • 打赏
  • 举报
回复
OnClose()事件中。
加载更多回复(3)

13,825

社区成员

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

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