Информация

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

Теги


Блоги


Записи из всех блогов с тегом: cxgrid


cxGrid: CellAutoHeight vs DataRowSizing

Есть 2 замечательных свойства: OptionsView.CellAutoHeight и OptionsCustomize.DataRowSizing.
Включены оба параметра, .т.е. = True.

Столкнулся с тем, что если изменить мышкой высоту строк, потом переоткрыть набор данных, то CellAutoHeight вообще никак не влияет. Высота всех строк будет одинакова, хотя свойство CellAutoHeight включено.

Это связано ещё с одним свойством - OptionsView.DataRowHeight. По умолчанию = 0.
Если это свойство больше 0, то свойство CellAutoHeight никак не влияет на высоту строк. Таким образом, чтобы автовысота строк работала "как надо", свойство DataRowHeight должно быть рано 0.
автор: X11 добавлено: 09 апр 14 просмотры: 1827, комментарии: 0



cxGrid - прокрутить сетку до нужной записи

Как программно в TcxGridDBTableView выполнить прокрутить (scroll) сетку до нужной записи?

TcxGridDBTableView.DataController.MakeRecordVisible(RecoedIndex);

или
TcxGridDBTableView.Controller.FocusedRow.MakeVisible;





Если нужно установить строку по центру сетки:
http://www.sql.ru/forum/1050625/tcxgrid-tcxverticalgrid-kak-skrollirovat-v-centr-na-nuzhnyy-stolbec-stroku#14909273

<TcxGridDBTableView>.Controller.TopRecordIndex 

и
<TcxGridDBTableView>.Controller.LeftPos


см. справку по этим методам
автор: X11 добавлено: 01 окт 13 просмотры: 1867, комментарии: 0



TcxGrid - summary по условию, как подсчитать количество отмеченных CheckBox`ов

TcxGridDBTableView сгруппирован по двум полям.
Есть поле типа CheckBox, нужно посчитать количество включенных чекбоксов в каждой группе, в group summary.

1. В сетке открываем Summary/Groups.
2. Добавляем groups 1 шт.
3. Добавляем Items - здесь столько записей, сколько нужно отображать итогов, у меня по трём полям. Третье поле должно подсчитываться по условию.
4. В Linked columns выбираем те поля, по которым сгруппирована сетка, у меня по двум полям.
5. В Items выбираем нужную запись, у меня это та самая колонка типа CheckBox.
6. В инспекторе свойств указываем правильные значений свойств.
7. В свойстве Column выбираем колонку типа checkbox, в ней, в итогах (summary) будем отображать количество отмеченных переключателей.
8. В свойстве Kind указываем vkSum.
9. В свойстве Format указываем !9;0;0, иначе вместо положительных цифр будем иметь значение типа "-12,000", а должно быть просто "12".


Картинка с другого сайта.


Обсуждение здесь: http://www.sql.ru/forum/1041774-1/cxgrid-summary-po-usloviu


В итоге результат вот такой:

Картинка с другого сайта.
автор: X11 добавлено: 18 авг 13 просмотры: 2719, комментарии: 2



Перенос заголовка в Band. Автоперенос в Band у TcxGridDBBandedTableView.

Как сделать многострочный заголовок (Caption) в свойствах Band, с переносом строк?


У сетки (BandedTableView, DBBandedTableView) отсутствует свойство Autoheight или что-то подобное для Band`ов. Но выход есть.
Требуется изменить значение свойства <TcxGridDBBandedTableView>.OptionsView.BandHeaderHeight типа integer. Установите в нём значение, отличное от 0, например, 40.



Картинка с другого сайта.
Рис.1
автор: X11 добавлено: 19 апр 13 просмотры: 1891, комментарии: 0



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

Как обновить или перерисовать принудительно/программно TcxGridDBTableView?


Нужно использовать

<TcxGridDBTableView>.LayoutChanged



Методы:
cxGrid1.Refresh;

и
cxGrid1.Repaint;

не помогут
автор: X11 добавлено: 15 фев 13 просмотры: 2604, комментарии: 0



Как прикрутить виртуальную колонку к cxGrid?

How to set up an unbound item in a data-aware View
Unbound Column + data-aware cxGrid



http://www.devexpress.com/Support/Center/kb/p/A1095.aspx


Обратите внимание на три условия:
Установить DataModeController.SmartRefresh в True
Установить DataModeController.GridMode в False
Правильно указать значение DataController.KeyFieldNames
Обязательно проверьте, чтобы OptionsData.Editing былы в True
автор: X11 добавлено: 05 янв 13 просмотры: 1765, комментарии: 0



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

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

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

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



Как в cxGrid показать количество записей в группе и просуммировать значение поля?

Как в TcxGrid отобразить количество записей в группе и просуммировать значение поля по группам?

Как реализовать такое, как на картинке?
Картинка с другого сайта.

Реализация содержится в справке.
Ссылка для справочной системы Delphi 2007:
ms-help://borland.bds5/ExpressDataController.BDS5/ExpressDataController/Example_TcxDataSummary_OnAfterSummary.htm


procedure TForm1.Initialize;
var
  ASummaryItem: TcxDataSummaryItem;
begin
  //group by vendor
  DBTableView1VendorNo.GroupIndex := 0;
  DBTableView1VendorNo.Visible := False;
  with DBTableView1.DataController.Summary do
  begin
    BeginUpdate;
    try
      //set prefix and postfix for a group capion
      DefaultGroupSummaryItems.BeginText := '{';
      DefaultGroupSummaryItems.EndText := '}';
      //summary on ListPrice
      ASummaryItem := DefaultGroupSummaryItems.Add;
      ASummaryItem.Kind := skSum;
      ASummaryItem.ItemLink := DBTableView1ListPrice;
      ASummaryItem.Position := spFooter;
      //summary on Description
      ASummaryItem := DefaultGroupSummaryItems.Add;
      ASummaryItem.Kind := skCount;
      ASummaryItem.ItemLink := DBTableView1Description;
      ASummaryItem.Position := spFooter;
      //dummy summary on Description
      ASummaryItem := DefaultGroupSummaryItems.Add;
      ASummaryItem.Kind := skNone;
      ASummaryItem.ItemLink := DBTableView1Description;
      //subscribe to the OnAfterSummary event
      OnAfterSummary := MyAfterSummary;
    finally
      EndUpdate;
    end;
  end;
end;


procedure TForm1.MyAfterSummary(ASender: TcxDataSummary);
var
  AChildDataGroupsCount: Integer;
  AChildDataGroupIndex, AParentDataGroupIndex: TcxDataGroupIndex;
  AChildPosition: Integer;
begin
  //iterate through data groups at the level 0
  AParentDataGroupIndex := -1;
  with DBTableView1.DataController.Groups do
  begin
    AChildDataGroupsCount := ChildCount[AParentDataGroupIndex];
    for AChildPosition := 0 to AChildDataGroupsCount - 1 do
    begin
      //data group index of a child
      AChildDataGroupIndex := ChildDataGroupIndex[AParentDataGroupIndex, AChildPosition];
      CalculateGroupAverage(AChildDataGroupIndex);
    end;
  end;
end;



procedure TForm1.CalculateGroupAverage(ADataGroupIndex: TcxDataGroupIndex);
var
  AVarSum, AVarCount, AVarAverage: Variant;
begin
  with DBTableView1.DataController.Summary do
  begin
    //get sum of prices for specific data group
    //the second argument identifies a summary index in the
    //TcxDataSummary.DefaultGroupSummaryItems collection
    AVarSum := GroupSummaryValues[ADataGroupIndex, 0];
    //get records count in a group
    AVarCount := GroupSummaryValues[ADataGroupIndex, 1];
    if not (VarIsNull(AVarSum) or VarIsNull(AVarCount)) then
    begin
      AVarAverage := AVarSum / AVarCount;
      GroupSummaryValues[ADataGroupIndex, 2] := Format('%m / %d = %m', [Double(AVarSum), Integer(AVarCount), Double(AVarAverage)]);
    end;
  end;
end;
автор: X11 добавлено: 29 ноя 12 просмотры: 3576, комментарии: 0



Подсветка символов/слов в cxGrid

Подсветка символов (слов) в TcxGrid


procedure <Grid>CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var R: TRect;
    s1,S2: string;
    X,dx,cx,C,Y: integer;
begin
  if checkHighLight.EditValue = false then exit;

  ADone := true;
  R := AViewInfo.Bounds;
  s1 := AViewInfo.Text;
  C := Length(edSearch.Text);
  cx := ACanvas.TextWidth(edSearch.Text);
  ACanvas.FillRect(R);
  X := R.Left;
  if AViewInfo.Selected
    then ACanvas.Font.Color := clWhite
    else ACanvas.Font.Color := clBlack;
  ACanvas.Canvas.TextOut(R.Left + 1, R.Top + 1, S1);
  ACanvas.Font.Color := clRed;
  repeat
    Y := Pos(edSearch.Text, S1);
    if Y > 1 then begin
      S2 := Copy(S1,1,Y-1);
      dx := ACanvas.TextWidth(s2);
      Delete(S1,1,Y-1);
      Inc(X,dx);
    end;

    if Y > 0 then begin
      ACanvas.Canvas.Brush.Style := bsClear;
      ACanvas.Canvas.TextOut(X + 1, R.Top + 1, copy(S1, 1, C));
      Delete(S1,1,C);
      Inc(X,cx);
    end;
  until Y = 0;

end;


оригинал ищите на sql.ru или рубоарде


Здесь
http://www.sql.ru/forum/940778/podsvetka-slov-v-yacheykah-cxgrid-tcxgriddbtableview
ещё один вариант: подсветка слов с помощью TcxRichEdit
...
...
автор: X11 добавлено: 28 ноя 12 просмотры: 1945, комментарии: 1



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

Как разделить группы похожих записей в TcxGrid толстыми линиями?


procedure TForm1.cxGrid1DBTableView1CustomDrawCell(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var R: TRect;
begin
  if AViewInfo.GridRecord.Index = Sender.DataController.RecordCount-1 then Exit;
  if Sender.DataController.Values[AViewInfo.GridRecord.Index, 1] = Sender.DataController.Values[AViewInfo.GridRecord.Index+1, 1] then Exit;
  R := AViewInfo.ContentBounds;
  Sender.LookAndFeelPainter.DrawHeader(ACanvas, R, R, [], [], cxbsNormal,
    AViewInfo.Item.GetProperties.Alignment.Horz,  vaCenter, False, False,
    AViewInfo.Text, ACanvas.Font, ACanvas.Font.Color, ACanvas.Brush.Color);
  ACanvas.FillRect(Rect(R.Left,R.Bottom-2,R.Right,R.Bottom),clBlack);
  ADone := true;
end;




Картинка с другого сайта.
Взято из этого сообщения SQL.RU:
http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=985177&msg=13510748
автор: X11 добавлено: 22 ноя 12 просмотры: 1593, комментарии: 0


предыдущие записи