procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin   if dbgrid1.Columns[1].Field.value=1 then
    begin
      if column.Index =1  then
      begin
     (sender as Tdbgrid).Canvas.TextRect(rect,0,0,'男');     (sender as Tdbgrid).Canvas.TextOut(rect.Left+2,rect.top+2,'男');
      end;
    end
    else if  dbgrid1.Columns[1].Field.value=2 then
    begin
     if column.Index =1 then
     begin
       dbgrid1.Canvas.TextRect(rect,0 ,0 ,'女');
       dbgrid1.Canvas.TextOut(rect.Left,rect.Top,'女');
     end;
    end;end ;
为什么在dbgride显示的男,女双击的时候出现1,2,如何改成男女后双击不显示原来的1,2,这样双击时看来就只显示男女。而不显示对用户来说莫名其妙的1,2

解决方案 »

  1.   

    用原来的DBGRID能实现的功能很少,建议使用InfoPower4000的TwwDBGrid,此控件功能非常强劲.
      

  2.   

    字段里是Bit类型:
    DisPlayValue(男;女);
    (我还是认为直接存“男”“女”比较好)
      

  3.   

    查询的时候就替换过来
    在sql中:
    sex = case sex when 1 then '男' else '女' end
      

  4.   

    数据库字段设为整型,1为男,2为女
    tadoquery添加所有字段,sex字段的ongettext事件里
    如下写
    procedure TForm1.ADOQuery1sexGetText(Sender: TField; var Text: String;
      DisplayText: Boolean);
    begin
        case sender.Value of
        1: text:='男';
        2:text:='女';
        end;
    end;
      

  5.   

    procedure TForm1.ADOQuery1sexGetText(Sender: TField; var Text: String;
      DisplayText: Boolean);
    begin
        if sender.value<>null then
        case sender.Value of
        1: text:='男';
        2:text:='女';
        end;
    end;
      

  6.   

    tadoquery添加所有字段,sex字段的ongettext事件里
    如下写
    procedure TForm1.ADOQuery1sexGetText(Sender: TField; var Text: String;
      DisplayText: Boolean);
    begin
        case sender.Value of
        1: text:='男';
        2:text:='女';
        end;
    end;
      

  7.   

    还是  soaringsouth(栈桥捉鳖)  的做法简单些...