D5,Zeos6.6,SQLite.
我有srcAccount.AutoEdit = False;
在TDBGrid选项中,所有编辑函数都设置为False。只有选项被设置为真是指示,研磨线和标题。
我有一个表单,上面有几个TDBEdits和一个TDBGrid,上面显示了所有的活期帐户。
当用户单击新帐户的“新建”按钮时
dbedAcct.SetFocus;
tblAccounts.Insert;如果在单击New按钮后,用户希望滚动以检查帐户名称或碰巧在网格中单击,则会保存新数据并退出插入模式。
我怎样才能阻止这种情况的发生?我需要他们能检查帐户名。
或者,这是D5的一个bug吗?如果是的话,我该如何解决这个问题呢?
我也尝试过使用SMDBGrid,它也做了同样的事情。http://www.scalabium.com/smdbgrid.htm
发布于 2016-05-05 16:39:35
我需要他们能检查帐户名。
如果允许用户对网格进行数据输入,则不能使用相同的网格+数据集。通过尝试同时使用网格进行数据输入和查找,您正在为自己创建这个问题。一个简单的解决方案是使用网格进行查找,并有一个单独的表单(或与网格相同的窗体上的面板)来执行插入,并且这些表单需要连接到不同的dataset实例。
问题是,在数据集插入记录的过程中,不能滚动数据集(因为您需要查找其他记录)。数据集允许滚动所需的dsBrowse状态和插入所需的dsInsert状态是相互排斥的。试图滚动数据集将自动发布挂起的插入,正如您已经找到的。
因此,您实际上需要两个dataset实例,一个用于查找,一个用于插入。如果您使用两个客户端ClientDataSet实例,它可能非常简单,因为您可以使用CDS的数据属性( CDS's data property,cdsLookup.Data := cdsLive.Data)将数据从一个轻松地复制到另一个实例,因此为查找创建一个本地副本非常简单。或者,如果您愿意,可以使用克隆游标-请参阅http://edn.embarcadero.com/article/29416。
https://stackoverflow.com/questions/37055674
复制相似问题