我有一个权限表。表中有Id(int)\MKid(int)\Edit(boolean)\Del(boolean)\Insert(boolean)\Print(boolean)\Kaidan(boolean) 等字段。id 就是用户的编号。Mkid是模块的编号。edit是允许编辑的权限。KaiDan(boolean)是销售开单权限!通过此表控制用户在每个模块种不同的权限。但是有这么一种情况:可能某一个模块的某项权限根本不存在。比如说在生产模块中,销售开单KaiDan权限是不存在的。
如何让在GridEH中的某几条纪录的该列不可编辑。也就是为空的这条不可编辑。而其他记录不受影响!Id  \MKid  \Edit  \Del  \Insert \Print\KaiDan
1    23     1      1     1       0     1
1    24     0      0     0       0     Null   <--------就是这个为空的这项大家都给来看看吧!!

解决方案 »

  1.   

    DataSet.BeforeEdit判断下如果IsNull就给她Abort掉
      

  2.   

    将DBGRID的Options := Options - [dgEditing]
      

  3.   

    to:smilelhh(blue)  
    DBGRID的Options := Options - [dgEditing]  是什么意思呀??
      

  4.   

    很简单啊
    procedure TForm1.ADOQuery1AfterScroll(DataSet: TDataSet);
    begin
       if ADOQuery1.FieldValues['KaiDan']=NULL then  //--为空就设置为行选
         SortDbgrd1.Options :=[dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgRowSelect,dgConfirmDelete,dgCancelOnExit]
       else
         SortDbgrd1.Options :=[dgEditing,dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgConfirmDelete,dgCancelOnExit];
    end;
      

  5.   

    但是它反映出来的不是NULL而是0。
      

  6.   

    procedure TForm1.ADOQuery1BeforeEdit(DataSet: TDataSet);
    begin
      If ADOQuery1.FieldByName('age').IsNull  then
        Abort;
    end;
    跟你说了,我尝试过,可以
      

  7.   

    被我解决了。就是在点之前判断一下,可不可以改。不能改的话column的readonly改成true!!
    结贴!