我想问如何让DBGrid根据数据源的状态(浏览、插入、修改等)在最左侧的indicator部分显示不同的图标?

解决方案 »

  1.   

    代码(可以做控件用哦):
    unit DBPicGrd;interfaceuses
      DBGrids, DB, DBTables, Grids, WinTypes, Classes, Graphics;type
      TDBPicGrid = class(TDBGrid)
      protected
        procedure DrawDataCell(const Rect: TRect;
          Field: TField; State: TGridDrawState); override;
      public
        constructor Create(AOwner : TComponent); override;
      published
        property DefaultDrawing default False;
      end;procedure Register;implementationconstructor TDBPicGrid.Create(AOwner : TComponent);
    begin
      inherited Create(AOwner);
      DefaultDrawing := False;
    end;procedure TDBPicGrid.DrawDataCell(const Rect: TRect; Field: TField; 
    State: TGridDrawState);
    var
      bmp : TBitmap;
    begin
      with Canvas do
      begin
        FillRect(Rect);
        if Field is TGraphicField then
            try
              bmp := TBitmap.Create;
              bmp.Assign(Field);
              Draw(Rect.Left, Rect.Top, bmp);
            finally
              bmp.Free;
            end
        else
          TextOut(Rect.Left, Rect.Top, Field.Text);
      end;
    end;procedure Register;
    begin
      RegisterComponents('Custom', [TDBPicGrid]);
    end;end.