首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于实现Un特性的TDataSet、TDbGrid事件

用于实现Un特性的TDataSet、TDbGrid事件
EN

Stack Overflow用户
提问于 2012-01-15 02:14:17
回答 2查看 584关注 0票数 1

我计划编写一个un特性,用于连接到TDBGrid (BDE)的TTable中。我希望它能在网格单元级工作。

我想要一些关于实现这一点的好方法的建议。

我计划保存一个更改的记录、字段名和它们以前的值的列表。

我相信,我需要的是细胞的OnEnter和OnExit。

我想,TDataSet.BeforeEdit是我所需要的一半。但是,TDataSet.AfterEdit的名字有点不正确--它不是在编辑完成后调用的,而是“在TDataSet进入编辑模式之后”(引用帮助系统)。

但是TField.OnChange会工作的..。我觉得..。

我的想法是AfterEdit会抓取单元格的内容。TField.OnChange会将更改记录到我保留的堆栈中。(谢天谢地,特尔斐的将军。在我们拥有它们之前,我从来不知道我错过了什么!)

对我的想法、注意事项或更好的方法有什么建议吗?

是的,是的,BDE被废弃了,我不应该使用它,yada,yada,yada。告诉我的老板,他让我维护150万行遗留代码。是的,是的:总有一天BDE会消失,我们应该积极主动,现在就行动起来。我们知道。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-18 07:55:26

根据罗伯特的要求,我的评论被改写为一篇文章。

单元格不是已经通过输入Ctrl或Esc来支持撤销吗?

或者,如果您希望对多个单元格保持一个编辑堆栈,并一个一个地恢复它们,则可以组合dataset和字段事件。dataset OnBeforeEdit将为您提供所有单元格的基,每个字段的onchange将为您提供其OnAfterEdit,当用户返回编辑同一单元格时,它将呈现与(假想的) Field.OnBeforeEdit相同的值。

票数 1
EN

Stack Overflow用户

发布于 2012-01-15 05:27:53

  1. 如果要为BDE数据集实现撤销/重做功能,最好是继承自己的数据集,然后重写某些方法,而不是钩子事件。然后将所有TQuery替换为TYourQuery
  2. 更简单的方法是在需要撤消/重做的地方使用TClientDataSet + TDataSetProvider。将TClientDataSet.LogChanges设置为True。若要撤消编辑调用,请执行UndoLastChange。对不起,你不能重做,尽管。
  3. 从BDE迁移到某些3d派对数据访问组件可能是简单和简单的。例如,AnyDAC具有与BDE兼容的API,很好的记录在案迁移过程,用于自动迁移的工具。而且,在迁移之后,您将立即得到(2)。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8867069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档