描述
有一DBGrid连接数据集,在退出或界面切换的时候如果数据改变了未保存则提示用户,我通过判断DBGrid.DataSource.DataSet.State in [dsEdit,dsInsert]。
问题
如果我直接在DBGrid中的某个字段的下拉选择项中选择,从而改变数据。
DBGrid.DataSource.DataSet.State in [dsEdit,dsInsert]返回false,大家教教我!
有一DBGrid连接数据集,在退出或界面切换的时候如果数据改变了未保存则提示用户,我通过判断DBGrid.DataSource.DataSet.State in [dsEdit,dsInsert]。
问题
如果我直接在DBGrid中的某个字段的下拉选择项中选择,从而改变数据。
DBGrid.DataSource.DataSet.State in [dsEdit,dsInsert]返回false,大家教教我!
解决方案 »
- 如何调用7z.dll压缩多个文件?
- 在用Delphi+DBGRID来做数据库时,在前台如何来及时发映在后台的数据变化。先给50分,解后再给150分。
- 求win2000下sniffer的源码
- foxnt 求助: 手提电脑 SHARP(夏普) PC-UM20 的MODEM驱动
- delphi 如何和sqlserver连上?
- 新手问问题了:麻烦大家推荐一本比较好的Delphi教材
- 为什么升级ADOUPDATE2后仍出现错误?“ACCESS VIOLATION”
- 关于检测PC是否在线的函授 InternetGetConnectedState
- 如何用socket传送结构数组?
- query的一个小问题?
- delphi多线程操作同一个listview,怎么办?
- 这段代码从c++转成delphi时遇到的问题
if ADOQuery1.Modified then
ADOQuery1.Post;
我最主要是想记录数据是否被编辑过或改变了
ShowMessage(Inttostr(Ord(DataSet.State)));
根据显示的值对比TDataSetState的定义,看他究竟处于什么状态,知道了这个状态,把这个状态再把状态定义加到你的判断代码中去即可。DBGrid.DataSource.DataSet.State in [dsEdit,dsInsert,新加入的状态值]。
其中 TDataSetState的定义如下:
type TDataSetState = (dsInactive, dsBrowse, dsEdit, dsInsert, dsSetKey, dsCalcFields, dsFilter, dsNewValue, dsOldValue, dsCurValue, dsBlockRead, dsInternalCalc, dsOpening);
我试了下,这个状态是dsBrowse。这样就不好处理了,哎