我的应用程序采用MDI设计,子窗体是一些数据窗体,包含ado data控件和一些绑定到数据源的控件什么的,起初我的ADD,DELETE,UPDATE等按钮是按照VB DATA FORM WIZARD生成的,也就是说放在子窗体上,但我想把她们放到MDI父窗体的工具栏按钮上,这样不必每个子窗体都放按钮,显的累赘。
但现在有一个问题,就是比如EDIT按钮,原先放在子窗体上的功能是当按下EDIT按钮时就进入recordset的编辑状态,此时如果进行了修改,但按下 cancel键则记录恢复到按下EDIT前的状态,就是忽略改动,如果按下update则保存改动后的结果。
当我把这些按钮改为设置到父窗体的工具栏上,代码基本一致,但进入EDIT状态并进行了改动后如果按下CANCEL,程序并没有忽略改动而是记录下了改动后的结果。我猜想这大概是因为我在改动后按下CANCEL时,焦点已经由子窗体转移到了MDI父窗体,内部的某个机制使得程序自动保存下了改动后的结果。MSDN上说只有父窗体才接受ACTIVE和DEACTIVE事件,我试了一下,其间并不发生父窗体的ACTIVE和DEACTIVE事件,不知道这种情况是什么触发了子窗体保存结果,如何避免呢?
但现在有一个问题,就是比如EDIT按钮,原先放在子窗体上的功能是当按下EDIT按钮时就进入recordset的编辑状态,此时如果进行了修改,但按下 cancel键则记录恢复到按下EDIT前的状态,就是忽略改动,如果按下update则保存改动后的结果。
当我把这些按钮改为设置到父窗体的工具栏上,代码基本一致,但进入EDIT状态并进行了改动后如果按下CANCEL,程序并没有忽略改动而是记录下了改动后的结果。我猜想这大概是因为我在改动后按下CANCEL时,焦点已经由子窗体转移到了MDI父窗体,内部的某个机制使得程序自动保存下了改动后的结果。MSDN上说只有父窗体才接受ACTIVE和DEACTIVE事件,我试了一下,其间并不发生父窗体的ACTIVE和DEACTIVE事件,不知道这种情况是什么触发了子窗体保存结果,如何避免呢?
实际上我原来的代码(按钮放在子窗体中时)都是用VB DATA FORM WIZARD生成的,就是project->add form 中的VB DATA FORM WIZARD。