5,914
社区成员




这次遇到一个代码BUG,进行trace into调试时发现的问题:
主窗口上有一个Button按键,代码很简单,就是一个Application.MessageBox+adoquery删除条件记录的语句;应该使用RowsAffected计数,错用了RecordCount,trace into调试时,发现执行到Application.MessageBox后居然先进入了FormActivate的事件中。但使用setp over就没有问题。
请教一下:有可能是什么代码导致其进入FormActivate事件中吗?还是这个FormActivate事件本身就是每次都执行?
我开始以为是Timer1控件的影响,但看到确实已经关闭了。
检查了很多代码,实在是看不出什么问题。
印象中以前其他调试时也会进入FormActivate事件中,当时没有在意,这次调试了几次,都是如此。
奇怪了。
在windows上,Application.MessageBox内部调用了API的MessageBox,对话框弹出的时候,你的程序窗口显示为非激活状态,关闭对话框后重新激活。
Form的onActivate事件
saint13
于 2005-08-15 01:08:00 发布
分类专栏: delphi学习经历
一个只有一个Form的应用程序,在其被最小化,然后再最大化时,Form的onActivate事件所定义的动作不会被触发.
一个有多个Form的应用程序,在不同form间切换的时候,会触发form的onActivate事件.
原文链接:https://blog.csdn.net/saint13/article/details/454615
难道是这个原因?但是Application.MessageBox也算一个窗口吗?