当值为true时displayvalue中的值将被显示

解决方案 »

  1.   

    我不用TField的
    不在设计时定义字段
      

  2.   

    1.可以在先设置你所用AdoTable/AdoQuery的Field:
    打开Fields Editor窗口,再选"New Field",设置Name为"status",Type选"String",Size输入可以容纳"是/不是"的宽度(8).Field type 选择"Calculate",按确定.
    2.在AdoTable/AdoQuery的"OnCaclFields"事件中输入以一以下代码:
      if Dataset.Fieldbyname('yes').asboolean then
        Dataset['status']:='是'
      else
        Dataset['status']:='不是';
    3.为Dbgrid添加AdoTable/AdoQuery的"status"字段
      

  3.   

    //....
        procedure BooleanFieldGetText(Sender: TField; var Text: String;
          DisplayText: Boolean);
      public//....procedure TForm1.Table1AfterOpen(DataSet: TDataSet);
    begin
      DataSet.FieldByName('field1').OnGetText := BooleanFieldGetText;
    end;procedure TForm1.BooleanFieldGetText(Sender: TField; var Text: String;
      DisplayText: Boolean);
    const
      cBoolStr: array[Boolean] of string = ('否', '是');
    begin
      Text := cBoolStr[Sender.AsBoolean];
    end;
    //....//不过我还是建议你直接不要用逻辑类的字段,直接用字符类型多方便
    //没有必要减少存储空间来增加自己的麻烦