以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助:主表变化事件  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=85491)

--  作者:lzzhx
--  发布时间:2016/5/26 23:24:00
--  求助:主表变化事件
例如:
    主窗口1里的表A是Normal型的,主窗口2里的表B是SQLTablr型的,在主窗口2里将表B做了修改后,直接点选表A,如何才能将主表继续保持在主窗口2中,提示用户去保存,而不是直接转到主窗口1去?代码如何写?写到什么事件中?


--  作者:lzzhx
--  发布时间:2016/5/27 7:50:00
--  
请老师看看
--  作者:Hyphen
--  发布时间:2016/5/27 8:47:00
--  
MainTableChanging事件:http://www.foxtable.com/help/topics/1612.htm

判断DataTable的数据是否已经被修改:http://www.foxtable.com/help/topics/0387.htm


If DataTables(e.OldTableName).HasChanges Then
    If MessageBox.Show(CExp("表【{0}】已经更改,是否保存?",e.OldTableName), "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) =  DialogResult.Yes Then
        DataTables(e.OldTableName).Save
    Else
        e.Cancel = True
    End If
End If

--  作者:lzzhx
--  发布时间:2016/5/27 9:01:00
--  
主窗口2里的表B是SQLTablr型的,它修改后,表B对应的主表的.HasChanges属性不会变化,所以判断不出来主表内容变了没有
--  作者:大红袍
--  发布时间:2016/5/27 9:32:00
--  

CurrentTableChanged事件

 

static ptable As Table = Nothing

If ptable IsNot Nothing Then
    If CurrentTable.name <> ptable.name AndAlso ptable.Form IsNot Nothing AndAlso ptable.DataTable.HasChanges Then
        msgbox(ptable.name & "未保存")
        ShowAppWindow(ptable.form.Text,1)
    Else
        ptable = CurrentTable
    End If
Else
    ptable = CurrentTable
End If


--  作者:lzzhx
--  发布时间:2016/5/27 9:44:00
--  
大红袍老师:
      上述代码加入后,只是在本窗口内的表之间切换时有提示,点别的主表时没有任何提示,直接就转到别的主表了,点菜单按钮再打开这个窗口时,未保存的数据就丢了(因为我把表头隐藏了,每次要打开窗口时,都是点菜单相应按钮,重新加载表和打开窗口)

--  作者:大红袍
--  发布时间:2016/5/27 10:40:00
--  

 上面的代码,是窗口与窗口之间才有效的啊。我测试没问题。