cxGrid中有没有办法操作单个cell是否只读?

如题谢谢。我只找到操作单个列是否只读,但我现在需要一个列里的某些cell只读。

作者: chenxi_aji   发布时间: 2007-06-26

可以用这OnCellClick事件动态判断实现,从这ACellViewInfo判断,如果是点击你要的Cell时,将整列只读就可以了,否则可编辑。

作者: yi10000   发布时间: 2007-06-26

现在的问题是这样的,这几个需要判断的列在显示形式上采用的是CheckBox形式。我的目的是其中的某几个cell在点击以后不能改变原来的值,类似readonly效果,而其余那些值却是可以改变的。

作者: chenxi_aji   发布时间: 2007-06-26

试试enabled=.f.

作者: axinglqs   发布时间: 2007-06-26

试试enabled=.f
---------------------------------------------
什么的enabled?cxGridDBTableView的?

作者: chenxi_aji   发布时间: 2007-06-27

up...怎么我的信誉只有84了。。。

作者: chenxi_aji   发布时间: 2007-06-28

ongetproperties里面,根据你的要求,把properties赋值为label

作者: Ray2312   发布时间: 2010-08-26

这个简单,tableview的onEditing事件,可以根据你的条件,符合条件的设置为:AAllow := False;即可。

作者: wxsan   发布时间: 2010-08-26

如果需要条件,代码和如下类似:
  if (TableView.Controller.FocusedRecord.Values[需要判断的列] = 值) and (AItem.Index= 第几列) then
  AAllow := False
  else
  AAllow := True;

作者: wxsan   发布时间: 2010-08-26

測試正解:

Delphi(Pascal) code
procedure TFeeder_Alternative_F.cxGrid3DBTableView1Editing(
  Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem;
  var AAllow: Boolean);
begin
  inherited;
  if  AItem.ID in[0,1,2,3,4,5,6,7,9] then
  begin
    AAllow:=False;
    cxGrid3DBTableView1Column9.Properties.ReadOnly:=True;
  end;
  if AItem.ID=0 then
  begin
    if cxGrid3DBTableView1.DataController.Controller.FocusedRecord.Values[10]='0' then
    begin
      AAllow:=False;
      cxGrid3DBTableView1Column9.Properties.ReadOnly:=True;
      MessageDlg('提示:已鎖定,此筆材料不能作替代料!',mtWarning,[mbOK],0);
      Exit;
    end
  else
    begin
      if cxGrid3DBTableView1.DataController.Controller.FocusedRecord.Values[6]<>'00' then
      begin
        AAllow:=False;
        cxGrid3DBTableView1Column9.Properties.ReadOnly:=True;
        MessageDlg('提示:已鎖定,此筆材料不能作替代料!',mtWarning,[mbOK],0);
        Exit;
      end
    else
      AAllow:=True;
      cxGrid3DBTableView1Column9.Properties.ReadOnly:=False;
    end;
  end;
end;

作者: kye_jufei   发布时间: 2010-08-26

posted on 2020-11-14 23:39  癫狂编程  阅读(208)  评论(0编辑  收藏  举报

导航

好的代码像粥一样,都是用时间熬出来的