我是想根据数据的不同显示不同的图片

解决方案 »

  1.   

    为了显示图象,要设置OnDrawColumnCell事件。   
      procedure   TForm1.DBGrid1DrawColumnCell(Sender:   TObject;   const   Rect:   TRect;   
          DataCol:   Integer;   Column:   TColumn;   State:   TGridDrawState);   
      var   
      bmp:tbitmap;   
      outrect:trect;   
      bmpwidth:integer;   
      begin   
          outrect:=rect;   
          if   (column.Field   =table1.fields.FieldByName('Common_Name'))   then   
          begin   
              bmp:=tbitmap.Create;   
              try   
                  bmp.Assign(table1.fieldbyname('Graphic'));   
                  bmpwidth:=(rect.Bottom   -rect.Top   )*2;   
                  outrect.Right   :=rect.Left   +bmpwidth;   
                  dbgrid1.Canvas.StretchDraw(outrect,bmp);   
              except   
                  bmp.free;   
              end;   
              if   table1.fieldbyname('Length   (cm)').asinteger>100   then   
              begin   
                  dbgrid1.Canvas.Font.color:=clred;   
                  dbgrid1.Canvas.Font.style   :=[fsbold];   
              end;   
              outrect:=rect;   
              outrect.left:=outrect.Left   +bmpwidth;   
          end;   
          //dbgrid1.defaultdrawdatacell(rect,column.field,state);   
          dbgrid1.DefaultDrawDataCell(outrect,column.field,state);   
      end;
      

  2.   

    if   (column.Field   =table1.fields.FieldByName('Common_Name'))   then   
    也可以在这行下面加些判断条件,根据条件加载不同的图片就行了.
      

  3.   

    if   table1.fieldbyname('Length   (cm)').asinteger>100   ?
    这句是干什么用的?还请明示
      

  4.   


    再给个例子 
    Drawing an image in a cell of a Delphi DBGrid 
    http://delphi.about.com/library/weekly/aa032205a.htm
      

  5.   

    这是我的程序里的代码片断,显示用户启用或注销状态图标的procedure TSetUsersFrame.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    var
      Index: Integer;
    begin
      if DataCol = 0 then
      begin
        DBGrid1.Canvas.FillRect(Rect);   // 先清除编辑单元原有的东西
        if Column.Field.AsBoolean then Index := 9 else Index := 8;
        //  我的图片放在另外一个窗口的TImageList中,画就行了
        MainForm.BtnImages.Draw(DBGrid1.Canvas, Rect.Left + 2, Rect.Top + 1, Index);
      end;
    end;