Блог


Последние записи


Теги

Информация

Delphi, DevExpress, примеры, решения

Фильтр по тегу: программно


Как выделить и сфокусировать строку в cxGrid программно?

Например, при показе формы нужно в TcxGrid выделить программно и сфокусировать строку.

Делается это просто:

  with <TcxGridDBTableView> do
    if DataController.RecordCount > 0 then
      Controller.FocusedRow.Selected := True;
добавлено: 10 дек 12 просмотры: 4320, комментарии: 0



Программно заставить выпасть календарь cxDateEdit

Как программно заставить "выпасть", календарь.

Тип колонки: Properies := DateEdit.

Пользователь нажимает на кнопку, в cxGrid выпадает календарь

with dbgDatas do
    begin
      DataController.Append;
      OptionsData.Editing := True;//после выбора можно отключать или держать это свойство включенным всегда
      dbgDatasdate_out.FocusWithSelection;//колонка с календарём
      Site.SetFocus();
      if Assigned(Controller.FocusedColumn) then Controller.FocusedColumn.Editing := True;
    end;
добавлено: 27 июл 12 просмотры: 2699, комментарии: 0



Фильтрация в cxGrid

Программная фильтрация cxGrid
  try
    <cxGridDBTableView>.DataController.Filter.Active := false;
    actResetFilterGroupSortExecute(nil);
    iMaxID := 120;
    <cxGridDBTableView>..DataController.Filter.BeginUpdate;
    WITH <cxGridDBTableView>.DataController.Filter.Root do begin
      Clear;
      AddItem(<TcxGridDBClolumn>, foGreater, iMaxID, 'фильтрпо значению: ' + IntToStr(iMaxID));
    end;
    <cxGridDBTableView>.DataController.Filter.Active := true;
  finally
    <cxGridDBTableView>.DataController.Filter.EndUpdate;
  end;

{чтобы добавить условие ИЛИ
<cxGridDBTableView>.DataController.Filter.Root.BoolOperatorKind := fboOr
}



Как отменить фильтр в cxGrid программно?
<cxGridDBTableView>.DataController.Filter.Clear;



Показывать все значения фильтра или только доступные.
Выпадающие списки фильтров в заголовках показывают по умолчанию все значения вне зависимости от текущей фильтрации. А как оставлять в списках только те значения, которые доступны на момент после фильтрации?
Или так. Установлен фильтр по одному столбцу. Когда требуется еще и по второму столбцу отфильтровать, надо, чтобы в выпадающем списке фильтра выводились бы лишь те значения, которые есть в отфильтрованном наборе, а не все. Всё просто.
cxGridDBTableView.DataController.Filter.AutoDataSetFilter := True;



Ещё один метод фильтрации - TcxGridDBDataController FilterRecord
http://www.devexpress.com/Support/Center/Question/Details/Q321574

uses
  cxGridDBDataDefinitions;


procedure TForm1.Button1Click(Sender: TObject);
begin
  tvCustomer.DataController.OnFilterRecord := tvCustomerDataControllerFilterRecord;
end;

procedure TForm1.tvCustomerDataControllerFilterRecord(
  ADataController: TcxCustomDataController; ARecordIndex: Integer;
  var Accept: Boolean);
var
 ADetailRecordsCount: Integer;
 ADetailDataController: TcxGridDBDataController;
begin
 ADetailDataController :=  ADataController.GetDetailDataController(ARecordIndex, 0) as TcxGridDBDataController;
 Accept := ADetailDataController.RecordCount > 10;
end;
добавлено: 13 июл 12 просмотры: 7511, комментарии: 0