Foxtable(狐表)用户栏目专家坐堂 → 请教老师,如何设计未保存提示?


  共有25299人关注过本帖树形打印复制链接

主题:请教老师,如何设计未保存提示?

帅哥哟,离线,有人找我吗?
菜鸟foxtable
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
请教老师,如何设计未保存提示?  发帖心情 Post By:2009/3/29 10:04:00 [只看该作者]

独立窗口有一关联表控件,另有保存和退出按钮....

保存按钮代码为:DataTables("某表").Save()

退出按钮代码为:e.form.Close()

如何设计当前关联表修改后未点击保存按钮时,点击退出按钮出现图二所示提示?


图片点击可在新窗口打开查看此主题相关图片如下:001.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:002.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2009-3-29 14:29:04编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/3/29 12:11:00 [只看该作者]

If DataTables("某表").HasChanges Then
    Dim Meb As DialogResult
    MessageBox.Show("某表已经被修改,是否保存?", "提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)
    Select Case Meb
    Case DialogResult.Yes
        DataTables("某表").Save()
        e.form.Close()
    Case DialogResult.No
        e.form.Close()
    End Select
End If

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/3/29 13:38:00 [只看该作者]

不好意思,楼上代码漏了最关键的,未对Meb变量赋值。

If DataTables("某表").HasChanges Then
    Dim Meb As DialogResult
    Meb = MessageBox.Show("某表已经被修改,是否保存?", "提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)
    if  Meb = DialogResult.Yes Then
        DataTables("某表").Save()
        e.form.Close()
    Elseif  Meb = DialogResult.No Then
        e.form.Close()
    End If
Else
    e.form.Close()
End If
[此贴子已经被作者于2009-3-29 13:39:19编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
菜鸟foxtable
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
  发帖心情 Post By:2009/3/29 14:22:00 [只看该作者]

......关键字HasChanges图片点击可在新窗口打开查看

问题好象还在啊.点击否,窗口关闭,再打开,刚才新增输入的项目依然保存了.....

窗口AfterLoad和BeforeClose事件都有同样代码DataTables("某表").Load()

某表为SQL外部表.

[此贴子已经被作者于2009-3-29 14:38:56编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/3/29 15:29:00 [只看该作者]

这个应该比较难办吧。
假如你不是关闭窗口,而是判断是否进行过修改,然后关闭项目就容易办。
无论根据判断是否关闭窗口,此时的修改过的值都真真切切的存在于表中,只要你以后执行保存,修改过的数据都会进行保存。
从你的个表述看,最好的办法是当选择否后,判断CanUndo是否有撤消的信息,直至全部撤消。
[此贴子已经被作者于2009-3-29 15:31:34编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
菜鸟foxtable
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
  发帖心情 Post By:2009/3/29 15:35:00 [只看该作者]

全部取消重做这个不太好办.如何判断只取消当前表?假如还有其他表未保存呢?图片点击可在新窗口打开查看

看来得找老爹了..


 回到顶部
帅哥哟,离线,有人找我吗?
czy
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/3/29 15:38:00 [只看该作者]

CanUndo是判断指定表的。
只是帮助中没有这样的示例,偶不会代码。

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/3/29 15:41:00 [只看该作者]

借你的贴,我倒希望老六增加清除编辑标记的函数,这样更能灵活处理一些特殊的要求。

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/3/29 15:51:00 [只看该作者]

Tables("表名").CanUndo
CanUndo能返回一个集合吗?如果能够返回问题就很好解决,否则只能挠头了。

 回到顶部
帅哥哟,离线,有人找我吗?
gdlgh
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:449 积分:3506 威望:0 精华:5 注册:2008/9/1 2:32:00
  发帖心情 Post By:2009/3/29 16:39:00 [只看该作者]

试下这样?

Do While Tables("表名").CanUndo
    Syscmd.Edit.Undo()
Loop

 回到顶部
总数 29 1 2 3 下一页