我用DBGrid显示数据,那么A字段下有'ABC'的值.那么怎么在DBGrid显示时全部替换为DEF?

解决方案 »

  1.   

    那在你连的数据源上处理(ClientDataSet或Query)对应A字段的onGetText事件中处理一下
    procedure TForm1.ClientDataSet1AGetText(Sender: TField; var Text: String;
      DisplayText: Boolean);
    begin
      if Sender.Value := 'ABC' then 
        Text := 'DEF';
    end;
      

  2.   

    在A字段的OnGetText事件中写如下代码:
      if Sender.Value = 'ABC' then
        Text:='DEF'
      else
        Text := Sender.Value;
      

  3.   

    procedure TForm1.ADOQuery1AGetText(Sender: TField; var Text: String;
      DisplayText: Boolean);
    begin
        if adoquery1.RecordCount <= 0 then
        exit
        else
        if adoquery1.FieldByName(sender.FieldName).AsString = 'ABC' then
        text := 'DEF';
    end;
      

  4.   

    用cxEditRepository1: TcxEditRepository;来设定,很简单的。不同的数据集,就赋予组件不同的ReponseItm对象。
      

  5.   

    用TcxEditRepository的好处就在于,能让ID显示出来对应的名称给终端用户,而保存的时候以及取出的时候其实数据还是ID.而这个替换显示的动作就是它来实现,无须代码。
      

  6.   

    用sql语句处理
    select (case a when 'abc' then 'def' else a end) as a from table