Как рассчитать свойство "Left" для центрирования текста в ячейке 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]);