Добавить комментарий

Delphi

Работа с группами в cxGrid

var
   i, j, gi    : integer;
   groupValues : TcxDataSummaryValues;
   Records     : TList;

begin  
  // Перебираем все выделенные элементы.
  for I := 0 to cxGridDBTableView.Controller.SelectedRecordCount-1 do
  begin
    // Если выделенная строка - данные
    if cxGridDBTableView.Controller.SelectedRecords[i].IsData then
    begin
      // Сделаем задуманное
      DoIt(cxGridDBTableView.Controller.SelectedRecords[i].RecordIndex);
    end
      else
    begin // Если выделенная строка - группировка
      // Убедимся, что группы есть.
      if cxGridDBTableView.DataController.Groups.GroupingItemCount>0 then
      begin
        // Получим весь массив значений группировок для текущей записи
        cxGridDBTableView
          .DataController
          .GetGroupValues(cxGridDBTableView.Controller.SelectedRecords[i].RecordIndex, 
                          groupValues);
        // Найдём, на каком уровне выделена группировка.
        gi := -1;
        for j := 0 to cxGridDBTableView.DataController.Groups.GroupingItemCount - 1 do
        begin
          gi := cxGridDBTableView
                  .DataController
                  .Groups.GetDataGroupIndexByGroupValue(gi, groupValues[j]);
          if cxGridDBTableView
               .Controller
               .SelectedRecords[i].DisplayTexts[0] = groupValues[j] then break;
        end;
        // Теперь в gi у нас индекс выделенной группы.
        Records := TList.Create;
        try
          // Получим индексы всех записей этой группы.
          MainTV.DataController.Groups.LoadRecordIndexes(Records, gi);
          // Сделаем с ними задуманное 
          for j := 0 to Records.Count-1 do
          begin
            DoIt(Integer(Records.Items[j]));
          end;
        finally
          Records.Free;
        end;
      end;
    end;
  end;
end;
Метки:

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Допустимые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и абзацы переносятся автоматически.
  • Вы можете цитировать другие сообщения, используя тэг [quote]

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и абзацы переносятся автоматически.