老大你真厉害.第二个问题,我写了个通用的退出的函数.
我有很多个窗口,有的窗口是有窗口表,有的是没有窗口表,我想不管是窗口表修改还是主表修改,退出时都有对话框提示是否保存什么的?代码如下:
Dim e As FormEventArgs = args(0)
Dim Result As DialogResult
If Vars("开关") = True Then
MessageBox.Show(1)
If Tables(e.form.Name).DataTable.HasChanges Then
Result = MessageBox.Show("是否将更改并保存本单据?", "提示!", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)
If Result = DialogResult.Yes Then
If Tables(e.form.Name).Rows.Count>0 Then
Tables(e.form.Name).Current("修改人") = _UserName
Tables(e.form.Name).Current("修改时间") = Date.Now()
Tables(e.form.Name).DataTable.Save()
If e.form.ExistControl("Table1") =True Then
If Tables(e.form.Name & "_Table1").DataTable.DataRows.Count>0 Then
Tables(e.form.Name & "_Table1").DataTable.Save
End If
End If
End If
MessageBox.show(2)
ElseIf Result = DialogResult.No Then
If Tables(e.form.Name).DataTable.HasChanges Then
Tables(e.form.Name).DataTable.RejectChanges()
If e.form.ExistControl("Table1") =True Then
If Tables(e.form.Name & "_Table1").DataTable.DataRows.Count>0 Then
Tables(e.form.Name & "_Table1").DataTable.RejectChanges()
End If
For Each re As Relation In Relations
Tables(Re.ChildTable.Name).DataTable.RejectChanges()
Next
End If
Else
e.Cancel=True
End If
End If
End If
Else '如果不是新单
If e.form.ExistControl("Table1") =True Then
If Tables(e.form.Name & "_Table1").DataTable.HasChanges Then '如果子表有变动
Result = MessageBox.Show("是否将更改并保存本单据?", "提示!", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)
If Result = DialogResult.Yes Then
Tables(e.form.Name & "_Table1").DataTable.Save '则无条件保存
ElseIf Result = DialogResult.No Then
Tables(e.form.Name & "_Table1").DataTable.RejectChanges()
Else
e.Cancel=True
End If
vars("开关") = False
End If
End If
End If
本来C版帮我加了个开关,当时测试没有问题. 现在测试下来居然主表修改不提示,窗口表修改会提示.
在窗口事件中vars("开关") = False 我加了这个,在新增按钮中加了先开后关的设置.
不知道问题出在什么地方,这个通用代码有没有简单的写法.