Delphi 如何在TDataSet之后重置/清除活动记录。查找成功

Delphi 如何在TDataSet之后重置/清除活动记录。查找成功,delphi,dataset,Delphi,Dataset,我正在尝试修改旧的Delphi2007应用程序 在某些情况下,我希望在调用TDataSet.Locate函数之前,通过提供无效键来确保没有为表选择任何记录。一般程序是: 用户从网格中选择列表中的项目(例如,1号键) 用户在其他屏幕(例如X、Y、Z)中执行某些操作,这些屏幕都使用1号键检索其他表中的数据 但是在一个屏幕上(假设是X屏幕),我希望网格忘记 已选择项,但仍应具有列表和数据,只是再次未选择任何内容。所有其他屏幕不应加载任何数据,除非用户再次从步骤1开始从列表中选择项目 当前应用程序将始终

我正在尝试修改旧的Delphi2007应用程序

在某些情况下,我希望在调用TDataSet.Locate函数之前,通过提供无效键来确保没有为表选择任何记录。一般程序是:

  • 用户从网格中选择列表中的项目(例如,1号键)
  • 用户在其他屏幕(例如X、Y、Z)中执行某些操作,这些屏幕都使用1号键检索其他表中的数据
  • 但是在一个屏幕上(假设是X屏幕),我希望网格忘记 已选择项,但仍应具有列表和数据,只是再次未选择任何内容。所有其他屏幕不应加载任何数据,除非用户再次从步骤1开始从列表中选择项目
  • 当前应用程序将始终选择一个项目,而用户不会专门选择任何内容,这将是列表中的第一条记录,而且几乎肯定不会是正确的记录。通过确保默认情况下选择了最近的更改记录,可以稍微改进它,这有时是正确的,但在大多数情况下不是正确的。我认为更好的方法是 要求用户始终在列表的第一个屏幕中选择一个项目,并在完成屏幕Z后再次选择

    因此,我尝试的第一件事是对无效索引进行定位。但它当然不起作用,因为如果新定位失败(找不到记录),定位将不会更改最后一条活动记录。因此,始终会有一个激活的记录


    我的问题是,在成功定位后,有没有办法重置/清除激活记录?

    激活一个总是返回false的过滤条件。另一方面,我看不出做这种事有什么意义。您能详细说明一下您的意图吗?TDataSet的整个设计基于这样一个理念:如果数据集不是空的,那么数据集的光标正好位于一条记录上;这是活动记录,您无法避免这种行为。我很惊讶你会担心这件事。您实际使用的是哪个TDataSet子体?看起来像一个。这就是检查
    布尔值
    结果的要点。如果
    Locate
    返回
    False
    ,您根本不应该尝试处理活动行。对不起,伙计们,我知道如果我问如何执行xyz,我很难提供帮助,但我的意图不清楚。我想我现在可能会尝试过滤条件。