窗口执行顺序问题,请多帮助,谢谢

RIA1618 2001-07-22 05:43:27
是这样的,我想在主窗口FrmMain显示之后,随即显示一个"提示窗口"
比如用showmessage();或application.messagebox()
但是这个提示窗口不有任何操作触发,一旦主窗口显示完毕
就可以显示它.
我试了一下如果在FrmMain.OnCreate()函数中/末尾加入showmessage()
窗口总在主窗口之前弹出,即使在FrmMain.Onshow函数中也是率先弹出
提示窗口,这很讨厌.
不知道有没有人知道这个问题怎么解决?
还有,怎么在delphi中铺或消息,比如Oncreate()函数执行完毕发出个什么
消息,我得到了,再来触发'提示窗口'
...全文
87 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
aningstar 2001-07-22
  • 打赏
  • 举报
回复
谢了
不是我解释的清楚,我也是抄的
大家共同学习,共同进步
RIA1618 2001-07-22
  • 打赏
  • 举报
回复
和和,谢谢!aningstar您解说的非常清晰!
想想真生气,我是过oncreate(),和onshow()结果不成功
看到help,四个程序的顺序依次下来,唯独中坚缺少窗口在何时显示!
我便以为后两个方法与前面一样,没试!!!看来以后还得多动手试试才知
aningstar 2001-07-22
  • 打赏
  • 举报
回复
另外, 有一个方法您可以参考看看:


1. 利 Options | Project , 将子视窗从 Auto-Create forms 移到 Available
forms,
不要让 Delphi在程式启动时就产生 MdiChild 子视窗

2. 此时, 虽然是 MDI 架构, 但是 MDI 主视窗产生时的各事件次序与一般视窗相同,
您的检查与呼叫设定视窗的程式可以写在 OnActivate 中

3. 各子视窗的产生, 以Application.CreateForm 方法,写在您的应用程式主选单的
File | New Click 事件中,以手动的方式让子视窗出现在主视窗中


最後, 视窗内部的资料起始与设定, 我一般是写在 Form 的OnCreate 事件中.
aningstar 2001-07-22
  • 打赏
  • 举报
回复
抄来的
呵呵


解决这个问题, 首先要了解从 Form 产生的""个过程中, 各事件发生与执行的次序


如果是一般的 SDI Form, 各事件的发生次序如下:

OnCreate
OnShow
在萤幕上看到这个视窗
OnActivate
OnPaint


如果是 MDI 视窗, 而 MdiChild 的第一个子视窗是在程式启动时, 就出现在MdiForm
中的话,
那麽,各事件的次序是

主视窗的 OnCreate
子视窗的 OnCreate
子视窗的 OnShow
子视窗的 OnActivate
主视窗的 OnShow
在萤幕上看到主视窗及第一个子视窗
主视窗的 OnPaint



ok, 您发现了吗? OnShow 是在视窗被看到之前的事, 而 OnActivate 并没有发生,
因此,
您的问题中所采用的 '我试过的 OnActivate ,OnShow ....',
当然不能在视窗於'被看到後'才出现设定资料的对话盒

因此, 以您的状况, 检查与设定的程式可以写在主视窗的 OnPaint 中, 不过,
OnPaint
是一个常发生的事件,所以应该要在主视窗的类别定义中额外加上一个 private 的逻

成员资料变数,以控制不要每次视窗重画时都检查设定.

Hillside 2001-07-22
  • 打赏
  • 举报
回复
非常简单,用OnActivate
Hillside 2001-07-22
  • 打赏
  • 举报
回复
非常简单,用OnActiveate

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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