继续该项目开始于:
How to auto fit/scale DBGrid's (or other similar) columns widths according to its contents?
如何计算“左”属性以使文本在DBGrid单元格中居中?
当我们调用OnDrawColumnCell并使用Canvas编写文本来代替网格的默认绘制时,当我们想要将其置于单元格中心时,我们如何计算文本的位置?
答案 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]);