1.可以在DBGrid的DrawColumnCell事件里面自己画~~判断你的那个控制字段~~然后在画出不同显示

解决方案 »

  1.   

    2.在Query的Field的OnGetText里面~~
    判断你的那个控制字段~~
    GetText(Sender: TField; var Text: String;
      DisplayText: Boolean);
    设置那个Text就是最终显示出来的~~
      

  2.   

    第一个方法我想要代码
    第二个方法对我不合适,因为,这个字段要在DBGRID上显示了两次,只能在DBGRID上控制。
      

  3.   

    if field.fieldname='显示字段' then
     if fieldbyname('控制字段').asstring<>'2' then
    begin
    //可在此设定一些CANVAS如字体大小等内容
     dbgrid1.canvas.textout('--');
    end;
      

  4.   

    我不明白为什么OnGetText不适合你?应该可以的吧。
      

  5.   


    在Query的OnCalcField 实践中写入 
      if DataSet.控制字段 = 2 then 
        DataSet.计算字段 :=  IntToStr(DataSet.控制字段)
      else
        DataSet.计算字段 := '--'
      

  6.   

    可以在dbgrid的onDrawColumnCell事件里,if(Field.DataType=ftString)and(field.Asstring<>'') then
       DbGrid1.Canvas.TextOut(rect.left,rect.top,'--');  DBGrid1.DefaultDrawDataCell(Rect, Field, State);
      

  7.   

    to jabmoon(刺月) : 我再详细一下,现在有两种类型的数据,比如:应聘者和职位调整,应聘者要有应聘职位,职位调整者有调整职位,现在这两个职务我用一个字段保存,但在显示时DBGRID提供了两列,一列为应聘职位,如果是某记录是应聘者则填写应聘职位,但调整职位者在此栏的内容为“--”
    数据库为:
    姓名      职位              类型
    张某      软件工程师         1   (代表应聘者)
    刘二      企划部经理         2   (代表职位调整者)在DBGRID中显示时姓名      应聘职位        调整职位
    张某      软件工程师       --
    刘二        --             企划部经理         
      

  8.   

    偶觉得用计算字段就可以了嘛,在你的dbgrid中使用不同的计算字段作为显示字段
      

  9.   

    就在要显示字段的OnGetText事件上!!!
      

  10.   

    你好,请按以下过程试一下 1. 在你的Query物件中添加你所有的字段('姓名','职位','类型'),再增加一个计算字段('计算字段')它的数据类型为 string,宽度跟'职位'一样,它用来显示 '调整职位' 2.你的Query中现有四个字段了,设置'类型'字段的Visibled:=false,'职位'的Displaylabel:=应聘职位,'计算字段'的Displaylabel:=调整职位
     3.添加以下的过程:(Query自已的OnCalcFields事件)procedure TForm1.Query1CalcFields(DataSet: TDataSet);
    var
      str:string;
    begin
      if  dataset.FieldByName('类型').asstring='1' then
        dataset.FieldByName('计算字段').asstring:='   ------';
      if  dataset.FieldByName('类型').asstring='2' then
       begin
        str:=dataset.FieldByName('职位').asstring;
        dataset.FieldByName('计算字段').asstring:=str;
        dataset.FieldByName('职位').asstring:='   ------';
       end;
    end;
       我已测试通过了,你不妨试一下,如果可以的话就来QQ上找我,QQ:86895156