社区
C++ Builder
帖子详情
已经动态生成的窗体,怎样在按钮里关闭?
gxsky
2004-12-24 02:14:31
比如,生成时
TForm *Form3=new TForm3(this);
Form3->ShowModal();
delete Form3;
但在点击这个窗体的弹出信息按钮的同时想关闭这个窗体并释放,怎么办呢
ShowMessage("注册成功!");
Form3->Close();---总是出错
...全文
156
14
打赏
收藏
已经动态生成的窗体,怎样在按钮里关闭?
比如,生成时 TForm *Form3=new TForm3(this); Form3->ShowModal(); delete Form3; 但在点击这个窗体的弹出信息按钮的同时想关闭这个窗体并释放,怎么办呢 ShowMessage("注册成功!"); Form3->Close();---总是出错
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
L·D·N
2004-12-27
打赏
举报
回复
那是否可以在真正的动态生成窗体后在这个窗体内动态生成这些控件呢?
ThinkX
2004-12-27
打赏
举报
回复
Form本身就有一个ModalResult属性的,设置这个属性就可以关闭窗体,和button的没有关系。
void __fastcall TForm2::BitBtn1Click(TObject *Sender)
{
if (注册成功)
{
// this 就是 Form2
this->ModalResult = mrOk;
}
}
gxsky
2004-12-27
打赏
举报
回复
看样子式我没说明白,情况是这样的,我把注册的窗体(窗体1)做成动态生成的了,在该窗体里面有一个注册的按钮,如果上面的Edit里输入的注册码正确,点击这个按钮,弹出显示注册成功信息窗(窗体2,我使用的是showmessage),然后点击显示注册成功窗体(窗体2)的按钮后,同时也关闭注册的窗体(窗体1),如果注册失败,弹出显示注册失败信息窗(窗体2,我使用的是showmessage),然后点击显示注册失败窗体(窗体2)的按钮后,不关闭注册的窗体。
不知道这回能不能说明白,我自己都觉得罗里罗唆的,请大侠赐教!
真如实观
2004-12-27
打赏
举报
回复
如果 lswhome(Borland C++初学者) 不是楼主,下面可以,因为
感觉窗体并不是真正动态创建的,当然你可以先设计好,不使
窗体在程序就创建(在Project Option里设定)如果
lswhome(Borland C++初学者) 和楼主是同一个人,那么你一开始
动态生成的窗体都有问题,窗体上的按钮、TEdit及事件的定义等
都没有。
///////////////////////////////////////////////////////////
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TForm2 *Form2=new TForm2(Application);
//改成下面这样:
TForm2 *Form2=new TForm2(this);//离开"可视范围"后自动释放
Form2->ShowModal();
delete Form2;
}
////////////////////////////////////////////////////////
void __fastcall TForm2::BitBtn1Click(TObject *Sender)
{
...
if(...)
{
ShowMessage("注册成功!");
this->Close();
}
else
{
ShowMessage("注册失败,重新输入注册码!");
Edit1->SetFocuse();
return;
}
...
}
L·D·N
2004-12-27
打赏
举报
回复
郁闷!请问,这样生成的窗口上面是不是什么控件都没有?
如果我要在生成的这个窗口上生成一些控件,比如按钮,Edit等等,我该怎么做呢?
谢谢!
gxsky
2004-12-27
打赏
举报
回复
上面的描述也不准确,好想我只能再up这一次了,头都大了
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TForm2 *Form2=new TForm2(Application);
Form2->ShowModal();
delete Form2;
}
我想通过在这个Form2上的一个按钮关闭Form2,并最终释放空间。
void __fastcall TForm2::BitBtn1Click(TObject *Sender)
{
...
if(...)
{
ShowMessage("注册成功!");
}
else
{
ShowMessage("注册失败,重新输入注册码!");
}
...
}
}
如果使用bitbtn按钮ModalResult = mrOK 时,注册失败也关闭Form2窗体,而我只想注册成功时关闭,失败时不关,给用户重新输入的机会。
怎么来做到呢?或许我的做法本来就是错的???
gxsky
2004-12-27
打赏
举报
回复
感谢各位的回答,帮我解决了问题!
也谢谢 lswhome(Borland C++初学者)的参与,但我希望你的问题能在另一个贴子里发布,并给于给你正确答案的人一个分数上的肯定,幸好ThinkX(思·秋天的树·求职中)给我正确的答案,否则我的贴子主题整个就会发生变化,我也就会得不到我的答案,我想这是一个道德的问题吧,对于这个问题我已经等了好几天了。先不结贴,对我的说法有意见可以提出来。
谢谢ThinkX(思·秋天的树·求职中)、xuby5228(潇湘大少) 、milkwayhong(自在)、qibo999(行路者) 、 tiegerium(/*唐秀观*/) 、 chiengod(钱神爷) ,我并不知道Form也有ModalResult属性,只知道bitbtn有,所以弄了个笑话,呵呵!
gxsky
2004-12-27
打赏
举报
回复
说得还是有点复杂了,应当是这样的:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TForm2 *Form2=new TForm2(Application);
Form2->ShowModal();
delete Form2;
}
这没问题。
我想通过在这个Form2上的一个按钮关闭Form2,并最终释放空间。
void __fastcall TForm2::Button1Click(TObject *Sender)
{
Form2->Close();
}
如果直接点窗体的X关闭Form2则没问题,但是我需要用按钮来完成的。
怎么写才对?
ThinkX
2004-12-27
打赏
举报
回复
当然可以窗体中动态生成控件了。
qibo999
2004-12-24
打赏
举报
回复
我大致明白了你的意思,为什么要那样做呢?直接在当前窗体中用ShowMessage()不行吗?为什么要新建一个?如果你将代码不加到Form3的OnShow OnCreate里,应该没问题(参照上面说法),否则会有问题的。
milkwayhong
2004-12-24
打赏
举报
回复
同意楼上同意ThinkX的观点
呵呵
xuby5228
2004-12-24
打赏
举报
回复
同意ThinkX(思·秋天的树·求职中)的看法!
ThinkX
2004-12-24
打赏
举报
回复
Modal窗体最好不要action=cafree,
如果要关闭窗体,一个办法是ModalResult = mrOK // or mrCancel
chiengod
2004-12-24
打赏
举报
回复
在onclose 事件里加action=cafree;
visual c++ 程序开发范例宝典 随书CD 源码
窗体
与界面设计
9、
窗体
标题栏应用实例,包括:闪烁的
窗体
标题栏、拖动没有标题栏的
窗体
、禁用标题栏上的最大化、最小化或
关闭
按钮
。10、
窗体
形状及应用,包括:半透明
窗体
、创建字型
窗体
、百叶窗
窗体
、类似office助手。上面列举的...
vb禁用
窗体
最大化、最小化和
关闭
快捷菜单.rar
vb禁用
窗体
最大化、最小化和
关闭
快捷菜单,禁用最大化、最小化不可用,重点实现了禁止
关闭
窗口的功能,禁止后窗口上的
关闭
按钮
变成灰色不可点击了,在实现方面,核心代码如下: Private Sub Form_Load() ...
简单的计算器中的加法实现
1)给
窗体
增加
窗体
事件,实现当按
窗体
关闭
按键时,
窗体
能响应
关闭
事件,将
窗体
关闭
。 2)给按键增加事件,当单击数字按键1、2时能在文本框中分别显示1、2,单加号
按钮
时能实现两个数求和操作,按等号
按钮
时能把和放...
Delphi
窗体
TAB 标签化实例.rar
Delphi
窗体
TAB 标签化实例,在
窗体
上
生成
简洁、漂亮的TAB空格,目前这种
窗体
设计风格
已经
很流行了,本源码运用Raize控件的pagecontrol把
窗体
吸附到标签上,并且能够点击标签上的
关闭
按钮
,释放
窗体
标签,具体效果请...
软件界面设计工具_3款合集
此时,你可以选择打开
窗体
、打开网页、弹出对话框、修改属性值和
关闭
本身
窗体
等五种效果,这
里
我们选择“打开
窗体
”,然后在弹出的对话框
里
指向弹出
窗体
的文件。最后,点击“完成”
按钮
即可。 图八、使用UI...
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章