程序主窗口的预操作处理应该放在哪里?

CCLIS 2004-07-07 10:19:47
目的:
在一个程序的主FORM(FormMain)中显示MyList的内容,想在一运行程序即显示MyList的内容。

本来打算在FORMMAIN的ONCREATE里来显示MYLIST的内容,但MyList中的内容需要通过DMMain和DMMyList来读取(这两个是DataModule),这两个DM又不能早于FORMMAIN来创建,只好用如下的调用顺序来显示MYLIST的内容,现觉得有些不安全。

还有,FORMMAIN的初始状态是隐藏的,MyList中有线程,必须一运行程序就执行,在FORMAIN的ONSHOW事件里处理好象也不行,

Application->Initialize();
Application->CreateForm(__classid(TFormMain), &FormMain);
Application->CreateForm(__classid(TDMMain), &DMMain);
Application->CreateForm(__classid(TDMMyList), &DMMyList);
MyList.Init();
FormMain->RefreshMyList();

请问:
不使用上面的方法,如何不在PROJECT的主CPP文件里调用相关函数(MYLIST。INIT(),REFRESHMYLIST)来显示MYLIST?

...全文
97 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
气血龙渊 2004-07-10
  • 打赏
  • 举报
回复
myy说得对:
设计程序时一般都是先有主窗体后建立DM,所以自动生成的代码一般都是:
Application->Initialize();
Application->CreateForm(__classid(TFormMain), &FormMain);
Application->CreateForm(__classid(TDMMain), &DMMain);
Application->CreateForm(__classid(TDMMyList), &DMMyList);
MyList.Init();
FormMain->RefreshMyList();

你只要将建立DM窗体的代码上移就ok :

Application->Initialize();
Application->CreateForm(__classid(TDMMain), &DMMain);
Application->CreateForm(__classid(TFormMain), &FormMain);
Application->CreateForm(__classid(TDMMyList), &DMMyList);
MyList.Init();
FormMain->RefreshMyList();

thp 2004-07-09
  • 打赏
  • 举报
回复
在两个DM中后创建的DM的OnCreate事件里面写。
thp 2004-07-09
  • 打赏
  • 举报
回复
在OnShow事件里面写嘛。
myy 2004-07-09
  • 打赏
  • 举报
回复
呃... FORMMAIN 是 MDI 窗口的主窗口这种情况没试过,
不过非MDI的,我说的肯定可以(BCB6中,5不清楚)。

不过,还可以把
Application->CreateForm(__classid(TDMMain), &DMMain);
Application->CreateForm(__classid(TDMMyList), &DMMyList);

放到

FormMain->OnCreate中,做Init之前调用。
CCLIS 2004-07-09
  • 打赏
  • 举报
回复
将DM的初始化提前后,运行不正常了。FORMMAIN为MDI窗口。
myy 2004-07-07
  • 打赏
  • 举报
回复
两个DM (确定是DM,不是普通Form)可以 早于FORMMAIN来创建:

Application->Initialize();
Application->CreateForm(__classid(TDMMain), &DMMain);
Application->CreateForm(__classid(TDMMyList), &DMMyList);
Application->CreateForm(__classid(TFormMain), &FormMain);

可以在 OnCreate中Init..

13,826

社区成员

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

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