使用TImage列表中的图像将字形绘制到DBGrid中的数据单元格时出现问题:
我正在放置一个"复选标记"代替文字"完成"在特定的数据单元格中。它可以工作,但是在图像未覆盖的单元部分中始终存在黑色。我已经尝试放大bmp图像的像素大小以匹配单元格大小,但它似乎总是为我调整图像大小。使用Delphi 10.2,在D7中没问题?
尝试了许多设置背景颜色,笔和画笔颜色等的组合。这是一个代码尝试的简单示例:
procedure TFUpRepWS.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
with Column do begin
if ((FieldName = 'Done') and (Field.AsString = 'x')) then begin
//below shows black outside of check mark image in the cell
ImageList1.Draw(DBGrid1.Canvas,Rect.Left,Rect.Top,0)
end
else DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
end;
答案 0 :(得分:2)
始终执行默认单元格绘制DefaultDrawColumnCell。这将确保细胞看起来像其他细胞。然后绘制图像。试试这个:
procedure TFUpRepWS.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
with Column do
begin
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
if ((FieldName = 'Done') and (Field.AsString = 'x')) then
ImageList1.Draw(DBGrid1.Canvas, Rect.Left, Rect.Top, 0);
end;
end;
我猜你所描述的是因为没有代码可以描绘细胞背景。