Как рассчитать свойство "Left" для центрирования текста в ячейке DBGrid?

Продолжая проект начался в:

Как автоматически подгонять / масштабировать ширину столбцов DBGrid (или других подобных) в соответствии с его содержимым?

Как рассчитать свойство "Left" для центрирования текста в ячейке DBGrid?

Когда мы вызываем OnDrawColumnCell и используем Canvas для написания текста вместо отрисовки сетки по умолчанию, как мы можем рассчитать положение текста, когда мы хотим центрировать его в ячейке?

2 ответа

Решение

Не. Нарисуйте текст с DrawText / DrawTextEx и указать DT_CENTER в параметре формата. См. Также Нарисуйте текстовую мультилинию в центре прямоугольника.

Или, если вы хотите или должны рассчитать это самостоятельно:

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]);
Другие вопросы по тегам