DataSet not in edit or insert mode如何避免(100分)

C

Cinway

Unregistered / Unconfirmed
GUEST, unregistred user!
DataSet not in edit or insert mode如何避免
用了TQuery和TDataSource控件,对应的字段有TDBEdit控件,TDataSource的AutoEdit=TRUE的时候用户点击修改TDBEdit的内容可以直接进入dsEdit状态。可是我不想让用户这样做而是相设置个修改按钮让用户先点击。于是把TDataSource的AutoEdit修改成FALSE。这样新的问题出现了。用户还是可以点击修改TDBEdit按钮的内容,只是修改完后焦点移出TDBEdit的时候出现警告提示“DataSet not in edit or insert mode”。必须按Esc才能取消刚才的修改。
请问如何办才能捕捉刚才的提示?要是每个TDBEdit都编程就完蛋了。
 
把所有的TEdit.ReadOnly设成True
修改按钮里
for i:=0 to ComponentCount-1 do
if Components is TDBEdit then
(Components as TDBEdit).ReadOnly := False;

完成后
再把它们的ReadOnly设置成True即可
 
最彻底的办法是不用DbEdit,数据表打开后,用一个过程把字段值赋给各Edit等控件,
要保存时,用UpdateSql或AdoCommand控件直接用Sql语句对数据表进行修改插入等操作。
 
to cinway:
szf的方法试过没有,我以前用过这样的方法。应该可以达到你的要求。
另外,我还想提供一个相近的方法,可参照使用。
for index:=1 to self.ComponentCount do begin
(findComponent('DBedit'+inttostr(inttostr(index-1))) as TDBedit).Readonly :=
false;
end;
 
多人接受答案了。
 
顶部