如何计算“左”属性以使文本在DBGrid单元格中居中?

时间:2012-11-08 18:52:42

标签: delphi delphi-2006

继续该项目开始于:

How to auto fit/scale DBGrid's (or other similar) columns widths according to its contents?

如何计算“左”属性以使文本在DBGrid单元格中居中?

当我们调用OnDrawColumnCell并使用Canvas编写文本来代替网格的默认绘制时,当我们想要将其置于单元格中心时,我们如何计算文本的位置?

2 个答案:

答案 0 :(得分:5)

别。使用DrawText / DrawTextEx绘制文本,并在format参数中指定DT_CENTER。另请参阅Draw text multiline in the centre of a rect

或者如果您想要或需要自己计算:

procedure DrawCenteredText(Canvas: TCanvas; const S: String; R: TRect);
var
  Left: Integer;
begin
  Left := R.Left + (R.Right - R.Left - Canvas.TextWidth(S)) div 2;

答案 1 :(得分:5)

更多可能性的更简单方法是:

Canvas.TextRect(Rect,s,[tfCenter,tfVerticalCenter,tfSingleLine]);