网站公告列表     爱师软件改版了...  [admin  2008年6月25日]        
加入收藏
设为首页
联系站长
您现在的位置: 爱师软件 >> 文章中心 >> VFP 程序设计 >> 正文
  [推荐]如何检查表格中记录的修改并提示用户保存           ★★★ 【字体:
如何检查表格中记录的修改并提示用户保存
作者:佚名    文章来源:WEB    点击数:    更新时间:2008-6-26    

如何检查表格中记录的修改并提示用户保存

概述
本文用示例展示了:

当使用表格来修改表中的记录,并设置了表缓存时,如何检查记录是否已被修改.
如何在用户移动记录指针到另一个记录时,提示用户保存所作的修改.

更多信息
如果不熟悉数据缓存, 请参见开发者指南第十九章. 关于使用表单和控件的更多信息, 请参阅开发者指南第九章和第十一章.

逐步示例

1 创建一个新表单. 添加 Customer 表 (位于 VFP 主目录下的 Samples\Data 目录中) 到表单的数据环境

2 设置表单的 BufferMode 属性值为:

1 - 保守式

-或者-

2 - 开放式

对于以上设置, 表格使用表缓存, 而其它控件如文本框或编辑框等则使用行缓存. 此外, 在数据环境中的 cursor 的 BufferModeOverride 属性可设置为以下值:

4 - 保守式表缓冲

-或者-

5 - 开放式表缓冲

表单的 BufferMode 属性可以按需要进行设置. 如果数据环境中的 cursor 的 BufferModeOverride 属性设置为 2 或 3 (行缓冲)本文件中的代码将不能正常运行. 这是因为表格中的 cursor 使用行缓冲时, 任何当前记录的修改将在记录指针移动时提交,同时 GETFLDSTATE() 函数将不能检查到记录的修改.

3 添加两个新的属性到表单 nRecNum 和 nWhatRow. 设置它们的值为 0.

4 添加一个表格到表单, 并设置表格的以下属性:
RecordSource = Customer
RecordSourceType = 1 - 别名

5 添加以下代码到表格的指定事件中:

Init 事件

ThisForm.nRecNum = RECNO()


BeforeRowColChange 事件

ThisForm.nRecNum = RECNO()

AfterRowColChange 事件

lMov = .F.
IF ThisForm.nWhatRow # This.ActiveRow
     ThisForm.nWhatRow = This.ActiveRow
     nHold= RECNO()
     GO ThisForm.nRecNum
     cChange = GetFldState(-1,'Customer')
     IF AT('2', cChange)>0
          This.Refresh
          lMov = .T.
          IF MessageBox("更新记录",4)= 6
              =TableUpdate(.T.)
          ELSE
              =TableRevert(.T.)
          ENDIF
    ENDIF
    GO nHold
    IF lMov
        This.Refresh
         lMov =.F.
    ENDIF
ENDIF

保存并运行表单.

当用户在表格中修改了记录并移动指针到另一行时,会被提示是否保存修改.如果用户选择"是",将激发 TableUpdate (更新)事件, 若选择"否,则激发 TableRevert (恢复)事件

 

文章录入:admin710925    责任编辑:admin710925 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    VFP中与相片处理相关代码
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    滇ICP备05001862号 爱师软件 站长:尹红泽