不让修改某行(客户信誉度=极差时不让其修改): procedure TCustmanaFrm.dbgridColEnter(Sender: TObject); begin if Vartostr(Qry_Dbgrid['Cust_Grade'])='极差' then {only remove dgediting from the (dbgrid)options } dbgCustmanaBrowse.Options:=[dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgRowSelect,dgConfirmDelete,dgCancelOnExit] else dbgCustmanaBrowse.Options:=[dgediting,dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgRowSelect,dgConfirmDelete,dgCancelOnExit]; {only add dgediting to the options } end; 某列也可以按照类似方法
if dbgird.columns[列数(integer)].readonly := false then
dbgird.columns[列数(integer)].readonly := true;
if...... then 中间的冒号去掉
GRID是下面的结构序号 费用 审核 成本
1 3000 是 360
2 2000 否 400
....
10 300 是 500如果审核为“是”,则该行对应的“费用”这个单元格只读,其他不影响。上面的表格中要求
columns[1,2]和columns[10,2]这两个单元格只读,其余单元格不影响。
procedure TCustmanaFrm.dbgridColEnter(Sender: TObject);
begin
if Vartostr(Qry_Dbgrid['Cust_Grade'])='极差' then
{only remove dgediting from the (dbgrid)options }
dbgCustmanaBrowse.Options:=[dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgRowSelect,dgConfirmDelete,dgCancelOnExit]
else
dbgCustmanaBrowse.Options:=[dgediting,dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgRowSelect,dgConfirmDelete,dgCancelOnExit];
{only add dgediting to the options }
end;
某列也可以按照类似方法