我有如下一段代码,就是对TDBEDIT控件的READONLY进行控制,非常简单,
但是,在运行过程中,把DOCTYPE_CODE类型改变时候,比如由STD切换到XX,
希望TDBEDIT能够写,但实际却还是只读,没办法写,跟踪时,明明执行了dbedit2.ReadOnly := false;语句
却就是没有效果,太奇怪了,从来没有遇到过这种怪事,求救了。 with zq_wkpiece do
  begin
    if state in [dsinsert,dsedit] then
    begin
         if trim(fieldbyname('doctype_code').AsString) = 'STD' then
         begin
                dbedit2.Color    := clbtnshadow;
                dbedit4.Color    := clbtnshadow;                dbedit2.ReadOnly := true;
                dbedit4.ReadOnly := true;
         end else
         begin
                dbedit2.Color    := clwindow;
                dbedit4.Color    := clwindow;                dbedit2.ReadOnly := false;
                dbedit4.ReadOnly := false;

         end;
    end;   //if state in ....  then
  end;  //with zq_wkpiece do

解决方案 »

  1.   

    dataset中字段的ReadOnly会影响数据感知控件的readOnly状态
      

  2.   

    dataset相关字段READONLY也设为FALSE了,界面上的其它字段也可以编辑,就是这个二个字段,因为被TRUE过,切换为FALSE后,还是不能编辑,但其它字段都能编辑(其它字段没有切换过TRUE 和FALSE)。
      

  3.   

    我的意思是直接设置字段属性readonly。如果一定要设置控件的属性,可以在actionlist.onupdate事件实时控制界面状态