继续项目开始于:
如何根据其内容自动调整/缩放 DBGrid 的(或其他类似的)列宽?
如何计算“左”属性以使 DBGrid 单元格中的文本居中?
当我们调用 OnDrawColumnCell 并使用 Canvas 写一个文本来代替网格的默认绘制时,我们要如何计算文本在单元格上居中的位置?
继续项目开始于:
如何根据其内容自动调整/缩放 DBGrid 的(或其他类似的)列宽?
如何计算“左”属性以使 DBGrid 单元格中的文本居中?
当我们调用 OnDrawColumnCell 并使用 Canvas 写一个文本来代替网格的默认绘制时,我们要如何计算文本在单元格上居中的位置?
不。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]);