我计划编写一个un特性,用于连接到TDBGrid (BDE)的TTable中。我希望它能在网格单元级工作。
我想要一些关于实现这一点的好方法的建议。
我计划保存一个更改的记录、字段名和它们以前的值的列表。
我相信,我需要的是细胞的OnEnter和OnExit。
我想,TDataSet.BeforeEdit是我所需要的一半。但是,TDataSet.AfterEdit的名字有点不正确--它不是在编辑完成后调用的,而是“在TDataSet进入编辑模式之后”(引用帮助系统)。
但是TField.OnChange会工作的..。我觉得..。
我的想法是AfterEdit会抓取单元格的内容。TField.OnChange会将更改记录到我保留的堆栈中。(谢天谢地,特尔斐的将军。在我们拥有它们之前,我从来不知道我错过了什么!)
对我的想法、注意事项或更好的方法有什么建议吗?
是的,是的,BDE被废弃了,我不应该使用它,yada,yada,yada。告诉我的老板,他让我维护150万行遗留代码。是的,是的:总有一天BDE会消失,我们应该积极主动,现在就行动起来。我们知道。谢谢。
发布于 2012-01-18 07:55:26
根据罗伯特的要求,我的评论被改写为一篇文章。
单元格不是已经通过输入Ctrl或Esc来支持撤销吗?
或者,如果您希望对多个单元格保持一个编辑堆栈,并一个一个地恢复它们,则可以组合dataset和字段事件。dataset OnBeforeEdit将为您提供所有单元格的基,每个字段的onchange将为您提供其OnAfterEdit,当用户返回编辑同一单元格时,它将呈现与(假想的) Field.OnBeforeEdit相同的值。
发布于 2012-01-15 05:27:53
TQuery替换为TYourQuery。TClientDataSet + TDataSetProvider。将TClientDataSet.LogChanges设置为True。若要撤消编辑调用,请执行UndoLastChange。对不起,你不能重做,尽管。https://stackoverflow.com/questions/8867069
复制相似问题