FAQ VCL
Компоненты\DevExpress\cxGrid

:: Меню ::
:: На главную ::
:: FAQ ::
:: Заметки ::
:: Практика ::
:: Win API ::
:: Проекты ::
:: Скачать ::
:: Секреты ::
:: Ссылки ::

:: Сервис ::
:: Написать ::

:: MVP ::

:: RSS ::

Яндекс.Метрика

Как связать cxGrid с источником данных?

uses
  cxGrid;

procedure TForm1.Button1Click(Sender: TObject);
begin
  cxGrid1DBTableView1.DataController.DataSource := DataSource1;
end;


Как убрать заголовки колонок?

uses
  cxGrid;

procedure TForm1.Button1Click(Sender: TObject);
begin
  cxGrid1DBTableView1.OptionsView.Header := False;
end;


Как убрать панель группировки?

uses
  cxGrid;

procedure TForm1.Button1Click(Sender: TObject);
begin
  cxGrid1DBTableView1.OptionsView.GroupByBox := False;
end;


Как настроить отрисовку границ ячеек?

uses
  cxGrid;

procedure TForm1.Button1Click(Sender: TObject);
begin
  cxGrid1DBTableView1.OptionsView.GridLines := glBoth;
  // Возможные варианты:
  // glNone, glHorizontal, glVertical, glBoth
end;


Как настроить множественный выбор записей при помощи CheckBox?

uses
  cxGrid;

procedure TForm1.Button1Click(Sender: TObject);
begin
  // Включаем отображение CheckBox'ов в каждой строке
  cxGrid1DBTableView1.OptionsSelection.CheckBoxVisibility := [cbvDataRow, cbvColumnHeader];
  // cbvDataRow      - для отображения CheckBox'а в строке
  // cbvColumnHeader - для отображения CheckBox'а в заголовке
  //                   (для быстрого включения/отключения всех CheckBox'ов)
  // cbvGroupRow     - для отображения CheckBox'а для групп строк

  // Включаем множественный выбор
  cxGrid1DBTableView1.OptionsSelection.MultiSelect := True;
  // Отключим выбор отдельных ячеек чтобы выбиралась вся строка
  cxGrid1DBTableView1.OptionsSelection.CellSelect := False;

  // Выберем месторасположение CheckBox'а
  cxGrid1DBTableView1.OptionsSelection.CheckBoxPosition := cbpIndicator;
  // Возможные варианты:
  // cbpFirstColumn - в первой колонке таблицы
  // cbpIndicator   - в отдельном столбце в начале таблицы,
  //                  для этого нужно включить ColumnsQuickCustomization
  cxGrid1DBTableView1.OptionsCustomize.ColumnsQuickCustomization := True;

  // Если месторасположением CheckBox'а выбран cbpFirstColumn,
  // можно включить динамической отображение CheckBox'а только для выбранных строк
  // cxGrid1DBTableView1.OptionsSelection.ShowCheckBoxesDynamically := True;
end;


Как включить отображение панели фильтра?

uses
  cxGrid;

procedure TForm1.Button1Click(Sender: TObject);
begin
  cxGrid1DBTableView1.FilterBox.Visible := fvAlways;
  cxGrid1DBTableView1.FilterBox.Position := fpTop;
  // Если нужно отключить кнопки дополнительных настроек
  cxGrid1DBTableView1.FilterBox.CustomizeDialog := False;
end;


Как включить отображение панели поиска?

uses
  cxGrid, cxFindPanel;

procedure TForm1.Button1Click(Sender: TObject);
begin
  cxGrid1DBTableView1.FindPanel.DisplayMode := fpdmAlways;

  // Компактный режим
  cxGrid1DBTableView1.FindPanel.Layout := fplCompact;

  // Место расположения
  cxGrid1DBTableView1.FindPanel.Location := fplGroupByBox;
  // fplSeparatePanel - на отдельной панели
  // fplGroupByBox    - на панели группировки

  cxGrid1DBTableView1.FindPanel.Position := fppTop;
  // fppTop    - над таблицей
  // fppBottom - под таблицей (игнорируется при Location=fplGroupByBox)

  // Искать в строках группировки
  cxGrid1DBTableView1.FindPanel.SearchInGroupRows := True;
end;


Как включить отображение панели навигации?

uses
  cxGrid;

procedure TForm1.Button1Click(Sender: TObject);
begin
  cxGrid1DBTableView1.Navigator.Visible := True;
  cxGrid1DBTableView1.Navigator.InfoPanel.Visible := True;
  // Можно управлять настройками каждой кнопки через
  // cxGrid1DBTableView1.Navigator.Buttons
end;


Как отличить строки с данными от других строк (например групп)?

uses
  cxGrid;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to cxGrid1DBTableView1.Controller.SelectedRowCount-1 do
    if cxGrid1DBTableView1.Controller.SelectedRows[i].IsData then
      ShowMessage('Строка с данными')
    else
      ShowMessage('Строка без данных (например группа)');
end;


Как изменить цвет фона ячейки с использованием стилей?

uses
  cxGrid;

// Положить на форму компонент cxStyleRepository и создать в нём 2 стиля,
// первый оставить как есть и назвать его, например, cxStyleDefault,
// второй назвать, например, cxStyleSkyBlueBk и поменять ему цвет

type
  TForm1 = class(TForm)
    cxStyleRepository1: TcxStyleRepository;
    cxStyleDefault: TcxStyle;
    cxStyleSkyBlueBk: TcxStyle;

    procedure FormCreate(Sender: TObject);
  private
  public
  end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  cxStyleSkyBlueBk.Color := clSkyBlue;
end;

// Определить событие Styles.OnGetContentStyle у cxGrid1DBTableView1

procedure TForm1.cxGrid1DBTableView1StylesGetContentStyle(
  Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
  AItem: TcxCustomGridTableItem; var AStyle: TcxStyle);
begin
  if Assigned(AItem) and (AItem is TcxGridDBColumn) then
    if TcxGridDBColumn(AItem).DataBinding.FieldName.ToLower = 'field_name' then
    begin
      AStyle := cxStyleDefault;

      if ARecord.Values[AItem.Index] <> null then
        AStyle := cxStyleSkyBlueBk;
    end;
end;

При использовании материала - ссылка на сайт обязательна