你可以在DBGrid的OnDrawDataCell事件中实现

解决方案 »

  1.   

    这个事件是当用户填充数据时才触发的,还是用query查出一批数据时也触发?
      

  2.   

    用字段编辑器!
    方法:
    1、双击要显示的表,出现字段编辑器后单击右键,选择Add Fields
    2、当出现Add Fields对话框时选择你所要的字段,默认是全选
    3、选择字段类型设为boolean的字段,然后将DisplayValues属性设为“男;女”(注意,你可不要输入引号!)
    OK,搞定!
      

  3.   

    我服了!
    你有没有用字段编辑器?
    你选择的是不是boolean的字段?
    你在DELPHI的帮助文件中输入DisplayValues看看能出来什么?
    不要说男女,就是显示中华人民共和国和中华全国都可以!
      

  4.   

    哎呀,老大,I 服了 u ,too.
    搞定了,是不是默认的顺序就是false,true?不过,还要怯怯的问一句:要是在程序里面,动态的,就没有那个字段对象的话,怎么个语句?......
    是query1.?
      

  5.   

    简直是想问到底,算了,干脆我把代码原原本本的提供出来。procedure TForm7.BitBtn1Click(Sender: TObject);
    var
    ShowSEX:TBooleanField;
    begin
    Query1.SQL.Clear;
    Query1.SQL.Add('SELECT SEX FROM PERSON');
    ShowSEX:=TBooleanField.Create(Self);
    ShowSEX.FieldName:='SEX';
    ShowSEX.Name:=Query1.Name+ShowSEX.FieldName;
    ShowSEX.DisplayValues:='男;女';
    ShowSEX.Index:=Query1.FieldCount;
    ShowSEX.DataSet:=Query1;
    Query1.FieldDefs.UpDate;
    Query1.Open;
    end;注意:你可不能臭到把“procedure TForm7.BitBtn1Click(Sender: TObject);”也粘贴到你的程序里面!!!
      

  6.   

    简直是想问到底,算了,干脆我把代码原原本本的提供出来。procedure TForm7.BitBtn1Click(Sender: TObject);
    var
    ShowSEX:TBooleanField;
    begin
    Query1.SQL.Clear;
    Query1.SQL.Add('SELECT SEX FROM PERSON');
    ShowSEX:=TBooleanField.Create(Self);
    ShowSEX.FieldName:='SEX';
    ShowSEX.Name:=Query1.Name+ShowSEX.FieldName;
    ShowSEX.DisplayValues:='男;女';
    ShowSEX.Index:=Query1.FieldCount;
    ShowSEX.DataSet:=Query1;
    Query1.FieldDefs.UpDate;
    Query1.Open;
    end;注意:你可不能臭到把“procedure TForm7.BitBtn1Click(Sender: TObject);”也粘贴到你的程序里面!!!
      

  7.   

    老大,我怎么还是搞不定.....
    error message:
    Invalid use of Keyword
    Token *
    Line number 1请再伸出援助之手吧,看在我是mm的份上? :)注:我没有把“procedure TForm7.BitBtn1Click(Sender: TObject);”也粘贴到程序里面!!! 而且把表名和字段也改过来了.
      

  8.   

    啊哟,啊哟,是我弄错了,搞定了.呵呵.
    不过....怎么dbgrid里就这么一列了,其他的字段到哪儿去辣.
    呵呵,我是不是有着打破沙锅问到底的精神.
      

  9.   

    你是MM??????
    看来我得出手了呵呵
    用字段对象吧。
    1、双击要显示的表,出现字段编辑器后单击右键,选择Add Fields
    2、当出现Add Fields对话框时选择你所要的字段,默认是全选,
    3、新建一个字段,取名叫sex,设为STRING型,这个字段成为计算字段;
    你可以将性别这个字段的visible属性设为false;再把SEX字段的displaylable
    设置为'性别';
    4。在QUERY或TABLE部件的Oncalculate事件中编程如下:
      if query1.fieldbyname('性别').asinteger=1   then
                query1.fieldbyname('sex').asstring:='男'
           else query1.fieldbyname('sex').asstring:='女';
    大概意思你应该知道了。。:)
      

  10.   

    不直接在SQL里做容易,这么写:
    select *,
      case sex
        when true then '男'
        when false then '女'
      end as SexID
    from person
      

  11.   

    re hank:
       如果是静态的,你的方法是完全可以的,thx;:)
       可是如果是动态,你的意思是表中每个现成的字段都要重做一遍吗?不要告诉我答案是肯定的亚. :-<  
       我觉得只显示了那一个字段是因为你把自己创建的那个字段对象的dataset连上了query1,那么它就独占了......?不明白。
       另://悄悄的说:我在上学哪,老板让做课题,呵呵,不得已呀。还请您老人家体谅体谅。re bpc:
       静态的完全可以。thx。:)
       可是,怎么在程序中动态创建计算字段又实现功能?再:不会到时候也成了dbgrid里只有那么一个字段了吧。 :(to goodman1999
       你那句代码:sql语句里面有什么case 的麽?搞不定也。 :(
      

  12.   

    Query1.SQL.Add('SELECT SEX FROM PERSON');
    激活Query1,
    把字段全部添入Query1控件。
    响应SEX字段的OnGetText消息,看参数定义
    if 是男的  DisplayText:='男'else DisplayText:='女'
      

  13.   

    spring,没声了还不加分,看这些大哥哥们回答的多努力!!汗都出了。