求助:if(SettingPara->ShowModal()==mrOk)老出错

Leeheliang 2009-06-18 11:10:25
小弟刚学C++Builder.经常对着书上写点程序。每次用到if(SettingPara->ShowModal()==mrOk)时总出错。看了论坛里好多关于Show(),和ShowModal()的讨论,还是不怎么明白。我程序如下,恳请高手指点指点:
void __fastcall TMyCont::MyCone_SettingClick(TObject *Sender)
{
if(SettingPara->ShowModal()==mrOk) // A
{
Opp=1;
mypos=SettingPara->TrackBar1->Position;
youpos=SettingPara->TrackBar2->Position*10;
MyCone_StartC->Enabled=true;//341
}
}
编译没问题,就是运行时在A处出错。我已经在Form SettingPara的快速按钮Button1的 Kind 属性为 bkOK,ModalResult的属性为mrOk.是不是还有那些方面没有设定,应注意哪些问题。谢谢!
...全文
63 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Leeheliang 2009-06-19
  • 打赏
  • 举报
回复
解决了,就如jmg说的,SettingPara的visible属性为false。谢谢各位的帮仔细分析。涨见识了。
nbzip 2009-06-19
  • 打赏
  • 举报
回复
void __fastcall TMyCont::MyCone_SettingClick(TObject *Sender)
{

TSettingPara *SettingPara=new TSettingPara(Application);
if(SettingPara->ShowModal()==mrOk) // A
{
Opp=1;
mypos=SettingPara->TrackBar1->Position;
youpos=SettingPara->TrackBar2->Position*10;
MyCone_StartC->Enabled=true;//341
}
delete SettingPara; //这里删除了,在SettingPara里面只需要关闭就行,不需要删除该类了.
SettingPara=NULL;
}

还有SettingPara界面类因为用SHOWMODAL显示方式,就不能用子窗体,只能用一般窗体.显示地方就选用屏幕中央这样.
我不懂电脑 2009-06-19
  • 打赏
  • 举报
回复
确定这个对话框是否ShowModal了。
draculamx 2009-06-19
  • 打赏
  • 举报
回复
SettingPara->ShowModal()==mrOk

更准确的说,问题应该出在 “SettingPara->ShowModal()”这里。
但是你编译是通过了的,说明你的语法没有问题。
那么,答案只有一个,你的 “SettingPara”应该是一个对话框吧,你应该检查这个对话框是否在程序启动的时候已经被加载,如果没有,你就要手动加载

检查 SettingPara 对话框是否在程序启动的时候加载:
点击菜单:Project--Options,然后选择 Forms 选项卡,在左边的 Auto-create forms 里面找找,看有有没有你的 SettingPara 窗口,如果没有,那它应该出现在右边的 Available forms 里面(如果这个里面也没有,说明你没有把这个窗口添加到你的工程中。。。)
Auto-create forms:表示程序启动的时候会自动加载到内存的窗体
Available forms: 表示这些窗体由用户在程序运行中自己用代码来创建

关于用代码加载窗体到内存,网上很多代码,楼主可以自己去找,就一行而已
jmg 2009-06-19
  • 打赏
  • 举报
回复
SettingPara初始化了没有?
还有SettingPara的visible属性是不是false?
ccrun.com 2009-06-18
  • 打赏
  • 举报
回复
运行时出错? 是SettingPara对象为NULL吧?你能保证这个对象已经成功初始化了吗?

13,826

社区成员

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

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