Создайте ваш собственный метод drawcell на примере того, что приведен
ниже:
procedure Tsearchfrm.Grid1DrawCell(Sender: TObject; Col, Row: Longint;
Rect: TRect; State: TGridDrawState);
var
l_oldalign: word;
beginif (row = 0) or (col < 2) then{устанавливаем заголовок в жирном начертании}
grid1.canvas.font.style := grid1.canvas.font.style + [fsbold];
if col <> 1 thenbegin
l_oldalign := settextalign(grid1.canvas.handle, ta_right);
{NB использует для рисования правую сторону квадрата}
grid1.canvas.textrect(rect, rect.right - 2, Rect.top + 2, grid1.cells[col,
row]);
settextalign(grid1.canvas.handle, l_oldalign);
endelsebegin
grid1.canvas.textrect(rect, rect.left + 2, rect.top + 2, grid1.cells[col,
row]);
end;
grid1.canvas.font.style := grid1.canvas.font.style - [fsbold];
end;
Перевод контента на русский язык:
Метод Grid1DrawCell, ответственный за отрисовку ячеек в StringGrid, используется для кастомизации внешнего вида ячеек, включая стили шрифта и выравнивание текста.
В этом конкретном реализации метод проверяет, является ли текущая строка 0 или если номер столбца меньше 2. Если выполнено любое из этих условий, он устанавливает стиль шрифта для канваса грида в жирный, эффективно делая заголовочную ячейку жирной.
Затем метод проверяет, является ли текущий номер столбца не равен 1. Если это условие истинно, он сохраняет текущее выравнивание текста, устанавливает выравнивание текста в правую сторону и отрисовывает текст в ячейке с помощью Canvas.TextRect. После отрисовки текста метод восстанавливает оригинальное выравнивание текста.
Если номер столбца равен 1, он просто отрисовывает текст в ячейке без изменения выравнивания текста.
Наконец, метод сбрасывает стиль шрифта для канваса грида обратно в его 기본ное состояние.
Вот улучшенная версия этого кода с некоторыми минорными изменениями и дополнительными комментариями:
procedureTsearchfrm.Grid1DrawCell(Sender:TObject;Col,Row:Longint;Rect:TRect;State:TGridDrawState);varl_oldalign:word;begin// Установка жирного стиля шрифта для заголовочных ячеекif(Row=0)or(Col<2)thenGrid1.Canvas.Font.Style:=Grid1.Canvas.Font.Style+[fsBold];// Проверка правого выравнивания текста для столбцов, кроме первогоifCol<>1thenbeginl_oldalign:=SetTextAlign(Grid1.Canvas.Handle,taRight);try// Отрисовка текста в ячейке с правым выравниваниемGrid1.Canvas.TextRect(Rect,Rect.Right-2,Rect.Top+2,Grid1.Cells[Col,Row]);finally// Восстановление оригинального выравнивания текстаSetTextAlign(Grid1.Canvas.Handle,l_oldalign);end;else// Отрисовка текста в ячейке с левым выравниванием для первого столбцаGrid1.Canvas.TextRect(Rect,Rect.Left+2,Rect.Top+2,Grid1.Cells[Col,Row]);// Сброс стиля шрифта обратно в его 기본ное состояниеGrid1.Canvas.Font.Style:=Grid1.Canvas.Font.Style-[fsBold];end;
Код остался largely неизменным от оригинала, но включает некоторые минорные улучшения, такие как использование блока try-finally, чтобы обеспечить восстановление выравнивания текста, независимо от возникновения исключения при отрисовке текста.
В статье описывается создание метода drawcell для StringGrid 4, позволяющего выполнять выравнивание колонок с помощью установки жирного начертания и текстового правления.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.