0

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

1 に答える 1