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;
// 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;
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);
// 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));
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;