我是用dbgrideh控件作为单据录入. 保存后想再次调出修改, 如果 flg2 是为ture 则不能修改,只能新增 ,试了几个事件都没有办法控制, 请教各位了, 谢谢.这是我写的代码, 颜色显示是正确的 procedure Tfrmysyz_add.DBGridEh1GetCellParams(Sender: TObject;
Column: TColumnEh; AFont: TFont; var Background: TColor;
State: TGridDrawState);
begin
inherited;
try
if Column.Field.DataSet.FieldValues['flg2'] then
begin
//Column.ReadOnly:=true;
DBGridEh1.FieldColumns['fyaoid'].ReadOnly:=true;
DBGridEh1.FieldColumns['tujin'].ReadOnly:=true;
DBGridEh1.FieldColumns['yongfa'].ReadOnly:=true;
DBGridEh1.FieldColumns['yongl'].ReadOnly:=true;
DBGridEh1.FieldColumns['sl'].ReadOnly:=true;
DBGridEh1.FieldColumns['dj'].ReadOnly:=true;
Background:=clRed
end
else
begin
// Column.ReadOnly:=false;
DBGridEh1.FieldColumns['fyaoid'].ReadOnly:=false;
DBGridEh1.FieldColumns['tujin'].ReadOnly:=false;
DBGridEh1.FieldColumns['yongfa'].ReadOnly:=false;
DBGridEh1.FieldColumns['yongl'].ReadOnly:=false;
DBGridEh1.FieldColumns['sl'].ReadOnly:=false;
DBGridEh1.FieldColumns['dj'].ReadOnly:=false;
Background:=clWindow;
end;
except end;end;
Column: TColumnEh; AFont: TFont; var Background: TColor;
State: TGridDrawState);
begin
inherited;
try
if Column.Field.DataSet.FieldValues['flg2'] then
begin
//Column.ReadOnly:=true;
DBGridEh1.FieldColumns['fyaoid'].ReadOnly:=true;
DBGridEh1.FieldColumns['tujin'].ReadOnly:=true;
DBGridEh1.FieldColumns['yongfa'].ReadOnly:=true;
DBGridEh1.FieldColumns['yongl'].ReadOnly:=true;
DBGridEh1.FieldColumns['sl'].ReadOnly:=true;
DBGridEh1.FieldColumns['dj'].ReadOnly:=true;
Background:=clRed
end
else
begin
// Column.ReadOnly:=false;
DBGridEh1.FieldColumns['fyaoid'].ReadOnly:=false;
DBGridEh1.FieldColumns['tujin'].ReadOnly:=false;
DBGridEh1.FieldColumns['yongfa'].ReadOnly:=false;
DBGridEh1.FieldColumns['yongl'].ReadOnly:=false;
DBGridEh1.FieldColumns['sl'].ReadOnly:=false;
DBGridEh1.FieldColumns['dj'].ReadOnly:=false;
Background:=clWindow;
end;
except end;end;
用
if Column.Field.DataSet.FieldByName('flg2').AsBoolean = True then
试试
begin
inherited;
if ls_modify_flg='N' then
begin
if DataSet.FieldByName('flg2').AsBoolean then
begin
//DataSet.FieldByName('zh').DataSet.Cancel;
DataSet.Cancel ;
raise Exception.Create('本条记录已经锁定,不能修改!');
Abort;
end;
end;
end;
按照楼上的方法,是可以控制了, 但是我要有些列的值又可以改 就不行了