powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Отметить изменения в cxGrid
6 сообщений из 6, страница 1 из 1
Отметить изменения в cxGrid
    #39483948
Sonia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, уважаемые!

Хочу сделать отображание логов в грид с окраской цветом в каких ячейках были изменения. Есть идея перед открытием формы в цикле пробегать по всем столбцам-строчкам и сравнивать значения. Делаю так:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
procedure ColoringChanges(TV: TcxGridDBTableView);
  var
    I: Integer;
    J: Integer;
  begin
    for I := 1 to TV.ColumnCount  do
      for J := 2 to TV.ViewData.RecordCount  do
       // Не сильно мудрено???
        if (TV.ViewData.Records[J].Values[TV.Columns[I]] <> TV.ViewData.Records[J-1].Values[TV.Columns[I]]) then
        begin
          .....
        end;
  end;


Дальше наступает ступор: как получить конкретную ячейку (типа [i,j] ) и окрасить ее??

Верна ли вообще сама идея или надо делать как-то через события, например, через OnCustomDrawCell?
Тогда аналогичный вопрос, как сравнить текущее значение AViewInfo.Value со значением в предыдущей строке (не смогла его получить) того же столбца? и окрасить ячейку?

P.S. Примеры типа: пример 1
пример 2
пример 3
пример 4

посмотрела, кроме каши в голове, ничего не образовалось...
Ткните носом, пожалуйста!
Заранее спасибо!
...
Рейтинг: 0 / 0
Отметить изменения в cxGrid
    #39484015
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sonia,

не надо пробегать заранее -- достаточно на OnCustomDraw получать значения текущей и предыдущей ячейки, сравнивать и красить.
...
Рейтинг: 0 / 0
Отметить изменения в cxGrid
    #39484020
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот, теперь у двоих каша в голове. Нифига не понял из приведенного кода. Какие изменения? По сравненнию с предыдущей записью? Можно через Styles.OnGetContentStyle сделать, ничего ручками рисовать не надо будет. Как вариант, можно мержинг ячеек заюзать - тоже своеобразное решение будет
...
Рейтинг: 0 / 0
Отметить изменения в cxGrid
    #39484528
Sonia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JaDi, пробовала, не получилось. Значение текущей ячейки получаю так: AViewInfo.Value, а как получить значение предыдущей? и как обе расскрасить, ведь ACanvas красит только текущую...
...
Рейтинг: 0 / 0
Отметить изменения в cxGrid
    #39484531
Sonia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
white_nigger, да, надо сравнить по каждой колонке все записи и выделить изменения (то есть нужно выделить последнюю не измененную ячейку и следующую измененную). А разве Styles.OnGetContentStyle не всю колонку красит ?(прочитала где-то такую фишку на форуме)
...
Рейтинг: 0 / 0
Отметить изменения в cxGrid
    #39484677
Sonia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос решен (решила просто шрифт менять - роли не играет):
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
procedure TfmShowQueryGridDialog.GridDBTableViewCustomDrawCell(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
  ANextRecordIndex: Integer;
  ACycleChanged: Boolean;
begin
  with TcxGridDBTableView(Sender).DataController do
  begin
     ANextRecordIndex :=  TcxGridDBTableView(Sender).Controller.FindNextRecord(AViewInfo.GridRecord.RecordIndex, true, {false} true,  ACycleChanged);
     if Values[AViewInfo.GridRecord.RecordIndex, AViewInfo.Item.Index] <> Values[ANextRecordIndex,AViewInfo.Item.Index] then
        ACanvas.Font.Color := clRed;
  end;
end;



Источник: https://www.devexpress.com/Support/Center/Question/Details/Q251029/custom-draw-cell-based-on-comparsion-of-cell-in-next-row
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Отметить изменения в cxGrid
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]