delphi 怎样使dbgrideh 中符合某个条件的记录不能修改

2025-05-14 11:06:39
推荐回答(4个)
回答(1):

你可以在dbgrideh的ONCellClick事件里写符合某个条件的记录不能修改的代码,如果符合条件,dbgrideh1.ReadOnly:=true,试一试。
procedure Tform1.DBGridEh1CellClick(Column: TColumnEh);
begin
if Dateset.fieldByName('完工标记')=1 then
dbgrideh1.ReadOnly:=true
else
dbgrideh1.ReadOnly:=false;
end;

回答(2):

可以写入ADO.beforeedit事件中,代码如下:
if ado.fieldbyname('fieldname').asstring = '' then
begin
showmessage('某某字段为空,不能修改!'); //如符合条件,给出提示
abort; //退出执行
end

回答(3):

条件是动态的吗?

如果你是想不能修改某些记录,你可以在建表的时候多加个字段,boolean属性,为true是可以修改,为false是不能修改,自己在程序里控制

回答(4):

dbgrideh只不过是数据的表现形式。
如我要某个字段等于1时可编辑,其余则不可编辑
则可以
if DataSet.FieldByName('zd').asString = '1' then
dbgrideh.readonly := false
else
dbgrideh.readOnly:= True;

可以把这段代码写在数据集的afterscroll事件里。