我目前正在开发一个动态使用数据库的应用程序。
这意味着它被设计为在任何时间与任何数据库和任何结构一起工作。
我担心的是,我希望“标记”或书签某些记录,因此我将需要使用过滤器属性来做一些搜索,最后,我希望删除过滤器,并能够搜索书签记录...
但是,似乎只有在指定的过滤器上设置了过滤器,书签才有效,所以如果我选择第二个书签项目,我收到的记录与我预期的完全不同,即我做了一个过滤器,并将第一条记录加入书签,当我删除过滤器并转到书签#1时,我仍然只转到record nr。1.
有没有其他方法可以做到这一点?或者它需要以不同的方式来做这件事?
希望这里的人有一些疯狂的真正的解决方案:)
发布于 2010-10-25 17:20:07
Delphi中的一个数据集只能为一条记录添加书签。TDataset.BookMark是该已添加书签的记录的占位符。过滤数据集时创建的书签在过滤器消失后也有效。因此,如果您过滤数据集,并为一条记录添加书签,然后删除该过滤器,并转到您的书签记录,则应该会得到相同的记录。
如果不确定书签是否仍然有效,特别是在编辑数据集时;则可以使用TDataset.BookmarkValid方法来验证书签。
如果你想要一个书签列表(不仅仅是一个书签记录),那么你必须将它们保存在一个列表或数组中。在Delphi2009和更新版本中,TBookMark数据类型被定义为TBytes。在以前的版本中,TBookMark被定义为string。因此,如果您使用的是Delphi2009之前的Delphi版,您可以使用TStringList的实例来保存您的书签列表。如果您使用的是Delphi2009或更高版本,则可以使用TList泛型类型(以Generics.Collections单元声明)的实例来存储书签列表。
如果您使用的是DBGrid,则DBGrid有一个名为SelectedRows的属性,其类型为TBookMarkList。您可以使用它保存网格中选定行的书签列表。您需要在DBGrid的选项中启用多选。
https://stackoverflow.com/questions/4012885
复制相似问题