在embarcadero docwiki中,它说:
在除TDBGrid之外的所有数据控件中,在修改字段时,当您从控件中单击时,修改将被复制到基础数据集。如果在从字段中单击Tab之前按下Esc,则数据控件将放弃修改,字段的值将恢复到进行任何修改之前的值。在Vcl.DBGrids.TDBGrid中,当您移动到另一个记录时,修改将被发布为。
我正在使用TDBGrid (以及其他数据控件),我发现他的更新行为是非常不自然的。我希望在用户点击"ENTER“时进行更新,而不仅仅是当用户”移动到另一个记录“或”从控件中移出Tab“时。
我的问题是我怎么能改变这个?有什么想法吗?
提前谢谢你。
发布于 2014-12-10 04:35:25
我认为您可能混淆了两件事,即从数据库感知控件(如TDBEdits )转发回相应的dataset TFields对象的更改,以及从字段回发到dataset数据库数据的字段值的更改。
这就是为什么我在一条评论中建议您应该在表单中添加一个TDBNavigator。连接到与您的数据库感知控件相同的DataSource,它将在DataSet处于编辑状态时启用其保存和取消按钮来显示DataSet的状态,就像用户更改其中一个控件的内容时所发生的那样。顺便说一句,只有当DataSource的AutoEdit属性被设置为True时才会发生这种状态变化(默认情况下,它是True,因此很容易忽略正在发生的事情,并且没有意识到如果您愿意的话可以阻止它)。
TDBGrid稍有不同的原因如下:
海事组织,您不应该让OnExit处理程序、焦点更改事件等来对数据集进行操作--使用它们来防止用户用数据更改(未决)和类似的事情来关闭表单是很好的,但是您应该要求用户执行一个明确的操作来确定是保存还是取消挂起的更改。不尝试直接从OnExit对数据集进行操作的原因之一是,通常有必要在GUI中对用户更改/添加的数据执行数据验证检查,这本身可能需要重点更改,以指导用户进行任何必要的纠正操作。
发布于 2014-12-10 04:30:55
在网格的OnExit中添加一个Post语句?
我也总是在我的OnFormCloseQuery事件中放置一系列Post语句。
https://stackoverflow.com/questions/27399059
复制相似问题