我用一个ADOQUERY控件得到一定的记录集,然后将一个DATASOURCE控件的DataSet设为该AODQUERY.再将DBGRID的DATASOURCE属性设为这个DATASOUSRCE.
在DBGRID中能将ADOQUERY查询的结果的行数显示出来,但是却显示不出内容,我查了几遍也没查出来.请帮忙.另外,我想知道让DBGRID中的相邻两行在显示时出现不同的底色应该怎么做?麻烦了.

解决方案 »

  1.   

    看看DBGRID。COLUMNS[I]。fieldName 是否在DATASET的字段中?
      

  2.   

    不知你是否编辑了column属性?
    如果编辑了是否定义了相关的field;
    select语句是否与每个字段匹配
      

  3.   

    1、DBGrid的Columns设置与数据关联时的表现形式。如果你加了某一个列但未给此Column指定Field,会出现这种情况。解决方法:删掉DBGrid所有的Columns。
    2、在DBGRID的OnDrawDataCell中写代码罢。procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; State: TGridDrawState);
    begin
      if DBGrid1.DataSource.DataSet.RecNo mod 2 = 1 then
        DBGrid1.Canvas.Font.Color := clRed
      else
        DBGrid1.Canvas.Font.Color := clGreen;
      DBGrid1.DefaultDrawDataCell(Rect, Field, State);
    end;
      

  4.   

    谢谢! 显示的问题我照hrp123说的设了下Dbgrid.columns[i].fieldname后就解决了.
    还想请问第二个问题如何解决?即如何让DbGrid每相邻的两行底色显示不同呢?
      

  5.   

    to (长风浪子)
    这个事件我一直不有触发,我只是想在加载数据到DBGRID后,相隔的行都不要有同一种底色.因为我没有用COLLINE
      

  6.   

    为什么我的DrawDataCell事件无法触发,是不是有细节没有注意到啊?
      

  7.   

    DBGrid ,DrawColumnCell 事件 :procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
      if ADOQuery1.RecNo mod 2 = 1 then
        dbgrid1.Canvas.Brush.Color := clRed ;
      else
        dbgrid1.Canvas.Brush.Color := clWhite;
      dbgrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); 
    end;