4

继续项目开始于:

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

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

当我们调用 OnDrawColumnCell 并使用 Canvas 写一个文本来代替网格的默认绘制时,我们要如何计算文本在单元格上居中的位置?

4

2 回答 2

5

不。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;
于 2012-11-08T19:02:33.917 回答
5

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

Canvas.TextRect(Rect,s,[tfCenter,tfVerticalCenter,tfSingleLine]);
于 2012-11-08T19:14:16.237 回答