需求明细:
1.表格 TV申购清单,默认OptionsData--Editing:true 可写权限
2.默认 列属性 [申购数量,单重,用途,需求日期] Options---Editing:true 常规情况下,这几列是可自由修改的.
3.当物料代码前四位为'temp'时, 列 [物料名称,规格型号,单位] 变为可写属性(常规的那几列保持不变)
表格 [TV申购清单]:
选择表格 TV申购清单 ---事件---OnCellClik事件
procedure TFraModleBase.TV申购清单CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); var ColumnIndex: Integer; begin with TV申购清单 do begin //先锁定列,再按情况来开放各自的修改权限. colSG物料名称.Options.Editing := False; colSG规格型号.Options.Editing := False; colSG单位.Options.Editing := False; ColumnIndex := Controller.FocusedcolumnIndex; //取得列的序号 //如果当前列为可编辑,则退出 if columns[ColumnIndex].Options.Editing = True then Exit; //如果物料代码是temp开头,则允许额外修改物料名称,规格型号,单位 if (Copy(DM.FD申购清单.FieldByName('物料代码').AsString, 1, 4) = 'temp') then begin if ColumnIndex in [colSG物料名称.Index, colSG规格型号.Index, colSG单位.Index] then begin Controller.FocusedColumn.Options.Editing := True; //设置权限为可写 Controller.EditingController.ShowEdit(Controller.FocusedColumn); //进入编辑状态 end; end; end;
这一句代码,我卡了大半天,最后还是群里的大佬指点了一下才能写出来,这方法藏得太深啦
Controller.EditingController.ShowEdit(Controller.FocusedColumn); //进入编辑状态
标签:物料,TcxGrid,TV,delphi,Controller,colSG,授权,Editing,Options From: https://www.cnblogs.com/yoooos/p/16801312.html