继续进行项目开始:
如何根据其内容自动拟合/比例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]);