mitkrivich Опубликовано 14 января, 2015 Поделиться Опубликовано 14 января, 2015 Как можно высветить строку с данными в зависимости от условия другим цветом фона и шрифта, Наработки обычной Delphi не работают, поэтому зашел в тупик, подтолкните пож-ста. Ссылка на комментарий
1 Администраторы Brovin Yaroslav Опубликовано 14 января, 2015 Администраторы Поделиться Опубликовано 14 января, 2015 Нужно: Повесить обработчик события на ручную отрисовку ячеек: TGrid.OnDrawColumnCell: В обработчике в зависимости от требуемой строки или данных, нарисовать задний фон ячейки Затем поверх выполнить обычное отображение содержимого ячейки type TOpenColumn = class (TColumn); procedure TForm8.StringGrid1DrawColumnCell(Sender: TObject; const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF; const Row: Integer; const Value: TValue; const State: TGridDrawStates); begin if Row mod 2 = 0 then begin // Выполняем закраску заднего фона Canvas.Fill.Color := TAlphaColorRec.Aliceblue; Canvas.FillRect(Bounds, 0, 0, AllCorners, 1); // Рисуем поверх обычное отображение содержимого ячейки TOpenColumn(Column).DefaultDrawCell(Canvas, Bounds, Row, Value, State); end; end; Для этого примера, у меня получилось так: Alisson R Oliveira и Hevard 2 Ссылка на комментарий
0 mitkrivich Опубликовано 14 января, 2015 Автор Поделиться Опубликовано 14 января, 2015 Спасибо, работает, только вот если стоит что все время показывать ячейку , то линия на этих ячейках прирывается Ссылка на комментарий
1 Администраторы Brovin Yaroslav Опубликовано 14 января, 2015 Администраторы Поделиться Опубликовано 14 января, 2015 Вычтете из области отрисовки Bounds районы вертикальных и горизонтальных полос: InnerBounds := Bounds; InnerBounds.Left := Bounds.Left + 1; InnerBounds.Bottom := Bounds.Bottom - 1; Ссылка на комментарий
0 mitkrivich Опубликовано 15 января, 2015 Автор Поделиться Опубликовано 15 января, 2015 Я имел ввиду горизонтальную полоску - текущей записи, она получается видимой только в строках, которые не переопределены, придется ее убрать, а есть ли какие то в гриде другие возможности индикации текущей записи? Ссылка на комментарий
1 Администраторы Brovin Yaroslav Опубликовано 16 января, 2015 Администраторы Поделиться Опубликовано 16 января, 2015 Я же вам написал. Измените область отрисовки ячейки так, чтобы в нее не попадали границы ячейки, в том числе горизонтальные. Ссылка на комментарий
0 Yarpda Опубликовано 19 января, 2015 Поделиться Опубликовано 19 января, 2015 Я имел ввиду горизонтальную полоску - текущей записи, она получается видимой только в строках, которые не переопределены, придется ее убрать, а есть ли какие то в гриде другие возможности индикации текущей записи? Как я понимаю тут имеется ввиду, что при выделении данной строки (options.rowselect = true) выделяются (голубым) только те ячейки, которые мы не перерисовывали сами методом DrawColumnCell. А хотелось бы чтобы они выделялись также. Меня тоже интересует этот вопрос. Ссылка на комментарий
0 Администраторы Brovin Yaroslav Опубликовано 19 января, 2015 Администраторы Поделиться Опубликовано 19 января, 2015 У этого события TGrid.OnDrawColumnCell есть параметр const State: TGridDrawStates Который содержит указание выделена ли строка, выделена ячейка и в фокусе ячейка или нет. Используйте этот параметр для отрисовки выделения так, как вам нужно. Ссылка на комментарий
0 Yarpda Опубликовано 19 января, 2015 Поделиться Опубликовано 19 января, 2015 Спасибо, все оказалось проще чем казалось... ) Ссылка на комментарий
Вопрос
mitkrivich
Как можно высветить строку с данными в зависимости от условия другим цветом фона и шрифта,
Наработки обычной Delphi не работают, поэтому зашел в тупик, подтолкните пож-ста.
Ссылка на комментарий
8 ответов на этот вопрос
Рекомендуемые сообщения