修改符合某一条件的记录(50)

  • 主题发起人 主题发起人 dj1893
  • 开始时间 开始时间
D

dj1893

Unregistered / Unconfirmed
GUEST, unregistred user!
我在delphi中用BDE的query连接数据库。用cxgrid显示数据。其中有一列的readonly属性为false.我想在时间符合某一条件时,可编辑我用了cancel这个方法。可之后,就不能再编辑数据了。请问,我还要写什么?我必须要用query
 
if caption='可编辑' thenbegincxGrid1DBTableView1.Columns[1].Options.editing:=false;caption:='不可编辑';endelsebegin cxGrid1DBTableView1.Columns[1].options.editing:=true;caption:='可编辑';end;
 
试试cxGrid的OnEditing事件。。。procedure Tfrm1.cxgrdbtblvwPackListEditing( Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem; var AAllow: Boolean);把AAllow设置False,对应的AItem就不能编辑,设置为True,AItem就可以编辑。。。
 
嗯,没看懂第一,readonly属性为false,那么它本来就是可以编辑的。应该是为True吧?第二,为啥要用cancel,用了cancel就表示本次编辑被取消,当然就不能再写了。lz的意思是说,明前正处于编辑状态下,希望在其他字段达成某种标准的时候,使得该字段为可写?
 
to sherlockye 我就是想符合某一条件可以编辑,不符合时,就不让写。cancel后,如何可以重新继续操作。如向此表中插入记录等。
 
还是不明白呀。你的意思是正在编辑,然后某一个字段符合条件的时候,另一个字段就可以编辑了,对吧。那么你自己用变量把当前这条正在编辑的记录的各个字段的值存下来,然后cancel,调整readonly,再重新.edit/.insert,把刚才存的值又赋回去就行了。
 
在query的BeforeEdit里面写代码procedure Tbafm.Cxaqry1BeforeEdit(DataSet: TDataSet);begin if Cxaqry1.FieldByName('th027').AsInteger=1 then begin showmessage('该产品记录已审核,不能修改!'); Cxaqry1.Cancel; end elseend;
 
多人接受答案了。
 
后退
顶部