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

Ple*_*rds 4 delphi delphi-2006

继续该项目开始于:

如何根据其内容自动调整/缩放DBGrid(或其他类似的)列宽?

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

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

NGL*_*GLN 5

别.使用DrawText/ 绘制文本DrawTextExDT_CENTER在format参数中指定.另请参见在矩形的中心绘制文本多行.

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

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;
Run Code Online (Sandbox Code Playgroud)


bum*_*mmi 5

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

Canvas.TextRect(Rect,s,[tfCenter,tfVerticalCenter,tfSingleLine]);
Run Code Online (Sandbox Code Playgroud)