点击下载此附件
3-frmyg_child窗体代码的进一步认识和理解
1, 计时触发器:
给frmyg_child添加计时触发触发器代码,此时一定要注意, frmyg_child窗体的计时器间隔值为0,表示不执行计时触发器中的代码。
代码如下:
Private Sub Form_Timer()
Acchelp_FindstrRecord (g_CurrentSelectStrID)
Me.TimerInterval = 0
End Sub
这段代码的意思是以TimerInterval值的间隔,自动执行其中的代码,既此时是在frmyg_childk中定位记录到ygId=g_CurrentSelectStrID这条记录上。
而frmyg_child_Edit窗体中的这一句代码正是被下述的过程调用:
Forms!usysfrmMain!frmChild.Form.TimerInterval = 300
如果此时将frmyg_child窗体的计时器间隔值改为1000,那么就是当一进入frmyg_child时就以1000ms刷新一次的速度执行定位到ygId=g_CurrentSelectStrID这条记录上的操作。
g_CurrentSelectStrID值是在frmyg_child_Eidt被赋予的,我在做frmyg_child和frmyg_child_Edit窗体后,如果只要是在frmyg_child_Edit中进行了更改,则再次打开frmyg_child_Add窗体时,frmyg_child窗体中的值就会定位到刚才在frmyg_child_Edit窗体上更改的那条记录上,最后才找到原因是,将frmyg_child窗体的计时器间隔值改为300的原因。
g_CurrentSelectStrID值是在frmyg_child_Eidt被赋予的代码如下:
Private Sub Form_Load()
Me.RecordSource = "SELECT * FROM tblCodeyg where ygID = '" & selectstr & "'"
g_CurrentSelectStrID = selectstr
End Sub
如图所示:
并且更改frmyg_child窗体中的计时器代码:
Private Sub Form_Timer()
Acchelp_FindstrRecord (g_CurrentSelectStrID)
Me.TimerInterval = 300(或取消这一句)
End Sub
则当在frmyg_child_ecit中修改后,每当再次进入基础数据的员工代码时,就会自动定位到ygId=g_CurrentSelectStrID这条记录上。
而且些时会每隔300ms自动执行ygId=g_CurrentSelectStrID的操作,如果此时选择了其他记录,则300ms后又回到了Y12这条记录上,此时必须在300ms内快速选择记录,并修改删除等操作,如果将计时器间隔改为1ms则刷新的速度几乎无法选择新的记录。这就深刻的了解了计时器的这些操作。
Me.TimerInterval = 0的意思是执行完一次,不再执行计时中的代码。