如何计算 "Left" 属性以在 DBGrid 单元格中居中文本?



继续进行项目开始:

如何根据其内容自动拟合/比例DBGrid(或其他类似)列的宽度?

如何计算"左"属性以将文本置于dbgrid单元格中?

当我们调用OnDrawColumnCell并使用画布来更换网格的默认绘制时写文本时,当我们想将其集中在单元格上时,我们如何计算文本的位置?

不要。用DrawText/DrawTextEx绘制文本,并在格式参数中指定DT_CENTER。另请参见在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;

一种更简单的方法,更多的可能性将是:

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

最新更新