已编辑: 我想在 TJvDBGrid(项目的绝地 TDBGrid 后裔)上绘制垂直居中的 TIcon 图形和文本。我试图禁用 JvDBGrid 的 DefaultDrawing 方法并覆盖它,但我只能用黑色填充单元格(我认为我的代码不完整,无法进行覆盖)。
现在我成功地在单元格上绘制了图标,并且文本与默认绘图保持不变。我怎样才能使图标(垂直和水平)和文本(只是垂直)居中,像这样?
这是我的代码:
procedure TFrmXXX.JvDBGridXXXDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
Icon: TIcon;
fixRect: TRect;
imgWidth: Integer;
begin
fixRect := Rect;
if Column.Index = 0 then //always the first one
begin
Icon := GetIcon; //Returns TIcon object
try
imgWidth := (Rect.Bottom - Rect.Top);
fixRect.Right := Rect.Left + imgWidth;
(Sender as TJvDBGrid).Canvas.StretchDraw(fixRect, Icon);
finally
Icon.Free;
end;
fixRect := Rect;
fixRect.Left := fixRect.Left + imgWidth;
end;
(Sender as TJvDBGrid).DefaultDrawColumnCell(fixRect, DataCol, Column, State);
end;