Delphi DBGridEh 嵌入图片,显示文字,且上下左右居中

Delphi DBGridEh 嵌入图片,并且自适应单元格的大小

Image_bmp01,Image_bmp02为渐变效果的图片



uses EhLibVCL

procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject;

  const Rect: TRect; DataCol: Integer; Column: TColumnEh;

  State: TGridDrawState);

var
  txth, OffSet_X, OffSet_Y: Integer;
  TMP_Rect: TRect;
  lpDTP: TDrawTextParams;

begin
//  if ADOQuery1.RecNo mod 2 = 0 then
//  begin
//    DBGridEh1.Canvas.Brush.Color := clRed;
//    DBGridEh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
//  end
//  else
//  begin
//    DBGridEh1.Canvas.Brush.Color := clGreen;
//    DBGridEh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);

//  end;


  TMP_Rect := Rect;
  lpDTP.cbSize := SizeOf(lpDTP);
  lpDTP.uiLengthDrawn := Length(Column.DisplayText);
  lpDTP.iLeftMargin := 0;
  lpDTP.iRightMargin := 0;
  txth := EhLibVCL.WindowsDrawTextEx(DBGridEh_YuYueKanBan.Canvas.Handle, Column.DisplayText, Length(Column.DisplayText),
      TMP_Rect, 0 or DT_CALCRECT, lpDTP);
  OffSet_X := (Rect.Right - Rect.Left) shr 1 - (DBGridEh_YuYueKanBan.Canvas.TextWidth(Column.DisplayText) shr 1);

  OffSet_Y := (Rect.Bottom - Rect.top - txth) div 2;//((Rect.Bottom - Rect.top) div 2) - (txth div 2);


  if ADOQuery1.RecNo mod 2 = 0 then begin
//    DBGridEh1.Canvas.Draw(Rect.Left, Rect.Top, Image_bmp01.Picture.Graphic);
    DBGridEh1.Canvas.StretchDraw(Rect, Image_bmp01.Picture.Graphic);

    DBGridEh1.Canvas.Brush.Style := bsClear; //透明

    DBGridEh1.Canvas.Font:= DBGridEh1.Font;

    DBGridEh1.Canvas.TextOut(Rect.Left + OffSet_X, Rect.Top + OffSet_Y, Trim(Column.DisplayText));

  end
  else
  begin
//    DBGridEh1.Canvas.Draw(Rect.Left, Rect.Top, Image_bmp02.Picture.Graphic);
    DBGridEh1.Canvas.StretchDraw(Rect, Image_bmp02.Picture.Graphic);
    DBGridEh1.Canvas.Brush.Style := bsClear; //透明

    DBGridEh1.Canvas.Font:= DBGridEh1.Font;

    DBGridEh1.Canvas.TextOut(Rect.Left + OffSet_X, Rect.Top + OffSet_Y, Trim(Column.DisplayText));
  end;

end;


procedure TForm1.FormCreate(Sender: TObject); //减少刷新
begin
  DBGridEh1.DoubleBuffered := True;
end;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值