delphi TcxGrid制作一个动态授权修改数据的功能

需求明细:

  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); //进入编辑状态

 

 

 
posted @ 2022-10-18 08:17  一曲轻扬  阅读(282)  评论(0)    收藏  举报