編集: 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;