Информация

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

Теги


Блоги


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


Программно открыть или закрыть TcxPopupEdit в TcxVerticalGrid

В cxVerticalGrid может быть строка, где Properties.EditProperties := PopupEdit
Как можно закрыть или открыть программно выпадающее окно.


procedure VerticalGridDropDownRow(vg: TcxVerticalGrid; aRow: TcxEditorRow; aDropedDown: boolean);
Var
  AEdit: TcxPopupEdit;
begin
  vg.SetFocus;
  vg.FocusedRow := aRow;
  vg.ShowEdit;
  if (vg.InplaceEditor <> nil) and (vg.InplaceEditor is TcxPopupEdit) then
  begin
    AEdit := TcxPopupEdit(vg.InplaceEditor);
    AEdit.DroppedDown := False;
  end;
end;


У TcxPopupEditProperties отсутствует метод или свойство, позволяющее открыть/закрыть Popup control.
Popup подразумевает работу только с ним. Нельзя открывать несколько Popup`ов одновременно. При потере фокуса Popup должен закрыться.
автор: X11 добавлено: 25 окт 16 просмотры: 1433, комментарии: 0



TcxTreeList - цикл по выделенным узлам

Как пройтись циклом по выделенным узлам TcxDBTreeList?


var
  I, d: Integer;
begin
  for I := 0 to pred(dbTree.SelectionCount) do
    d := TcxDBTreeListNode(dbTree.Selections[i]).KeyValue;
автор: X11 добавлено: 07 май 15 просмотры: 1267, комментарии: 0



Как получить видимое значение в строке типа LookupComboBox в TcxVerticalGrid?

Есть cxVerticalGrid со строкой (Properties.EditProperties) типа LookupComboBox. Как получить не значение ключевого поля, а именно то, значение, которое видит пользователь?

S := TcxLookupComboBoxProperties(cxEditorRow1.Properties.EditProperties).GetDisplayText(cxEditorRow1.Properties.Value);
автор: X11 добавлено: 14 ноя 14 просмотры: 2052, комментарии: 0



cxGrid: CellAutoHeight vs DataRowSizing

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

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

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



TcxComboboxProperties ItemIndex

Если TcxCombobox встроен, например, в строку (row) вертикальной сетки (TcxVerticalGrid), то есть проблемы с установкой значения, т.к. свойство ItemIndex в этом случае ReadOnly.

Можно попробовать установить значение через свойство Properties.Value, но это ничего не даст, в Combobox`е не будет выбрано нужное значение.

Есть простой выход - использовать ImageCombobox. Т.е. у строки в свойстве EditProperties нужно выбрать ImageComboBox. Тогда значение списка можно устанавливать через Properties.Value.

Начало проблемы здесь >> http://www.sql.ru/forum/1060510/cxcomboboxproperties-i-perechislyaemoe-svoystvo
автор: X11 добавлено: 21 ноя 13 просмотры: 2279, комментарии: 0



DevExpress - получить список скинов программно

Как получить список скинов (DevExpress skins) и загрузить их (скины) в Combobox


uses LookAndFeelPainters;
...

procedure GetSkins(comboSkins: TcxCombobox);
Var
 PaintersManager : TcxCustomLookAndFeelPainter;
 i: integer;
begin
  //загружаем список скинов
  comboSkins.Properties.Items.Clear;
  comboSkins.Properties.Items.Add('');//пустую строку тоже нужно добавить, чтобы пользоватtль мог отменять выбор скина

  for i := 0 to Pred(cxLookAndFeelPaintersManager.Count) do
    comboSkins.Properties.Items.Add(cxLookAndFeelPaintersManager.Items[i].LookAndFeelName);

end;



Как получить список скинов (DevExpress skins) и загрузить их (скины) в TcxComboboxProperties
http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=542538&msg=12170122



uses LookAndFeelPainters;
...

Var
 PaintersManager : TcxCustomLookAndFeelPainter;
 i: integer;
begin
  //загружаем список скинов
  TcxComboBoxProperties(comboSkins.Properties).Items.Clear;
  TcxComboBoxProperties(comboSkins.Properties).Items.Add('');//пустую строку тоже нужно добавить, чтобы пользоватtль мог отменять выбор скина

  for i := 0 to Pred( cxLookAndFeelPaintersManager.Count ) do
    TcxComboBoxProperties(comboSkins.Properties).Items.Add(cxLookAndFeelPaintersManager.Items[i].LookAndFeelName);
автор: X11 добавлено: 01 ноя 13 просмотры: 2354, комментарии: 5



Изменить размер кнопок у cxSpinEdit

У компоненты TcxSpinEdit нет возможности простым путём менять размеры кнопок.
Благодаря подсказке из этой темы на форуме sql.ru удалось решить проблему.

Вот как можно увеличить (изменить) размер кнопок у компоненты TcxSpinEdit
Добавляем в проект новый модуль, вот его код.

unit uSpinEditHack;

interface

uses
  cxEdit, cxSpinEdit, cxGraphics, Windows, Classes;

// этот модуль должен быть последним в верхнем списке USES
   
type
  TMySpinEditViewData = class(TcxSpinEditViewData)
  protected
    procedure CalculateButtonsBounds(ACanvas: TcxCanvas; AViewInfo: TcxCustomEditViewInfo; var ButtonsRect: TRect); override;
  end;

  TMySpinEditProperties = class(TcxSpinEditProperties)
  public
    class function GetViewDataClass: TcxCustomEditViewDataClass; override;
  end;

  TMySpinEdit = class(TcxSpinEdit)
  public
    class function GetPropertiesClass: TcxCustomEditPropertiesClass; override;
  end;

  TcxSpinEdit = class(TMySpinEdit);

implementation

uses
  uShares;

{ TMySpinEdit }

class function TMySpinEdit.GetPropertiesClass: TcxCustomEditPropertiesClass;
begin
  Result := TMySpinEditProperties;
end;

{ TMySpinEditProperties }

class function TMySpinEditProperties.GetViewDataClass: TcxCustomEditViewDataClass;
begin
  Result := TMySpinEditViewData;
end;

{ TMycxSpinEditViewData }

procedure TMySpinEditViewData.CalculateButtonsBounds(ACanvas: TcxCanvas;
  AViewInfo: TcxCustomEditViewInfo; var ButtonsRect: TRect);
begin

  with AViewInfo.ButtonsInfo[cxSpinForwardButtonIndex] do
  begin
    Bounds := Rect(ButtonsRect.Right - uShares.iSpinEditButtonSize , ButtonsRect.Top, ButtonsRect.Right, ButtonsRect.Bottom);
    ButtonsRect.Right := Bounds.Left + 200;
  end;

  with AViewInfo.ButtonsInfo[cxSpinBackwardButtonIndex] do
  begin
    Bounds := Rect(ButtonsRect.Left, ButtonsRect.Top, ButtonsRect.Left + uShares.iSpinEditButtonSize, ButtonsRect.Bottom);
    ButtonsRect.Left := Bounds.Right - 200;
  end;
end;

end.

{iSpinEditButtonSize - это глобальная переменная, а где-то в другой форме меняем размер кнопок и присваиваем его этой переменной}


Теперь достаточно включить в USES (верхний, в тот, что в секции interface) этот модуль и размеры кнопок можно менять. только этот модуль (uSpinEditHack) должен быть последним в списке.

Ссылка на источник
https://www.devexpress.com/Support/Center/Question/Details/Q580764



Если без хака, то работают такие странные условия.
Если менять значение всех четырёх кнопок, то изменение размера кнопок работает работает
 cxSpinEdit1.Properties.Buttons[0].Width := 42;
 cxSpinEdit1.Properties.Buttons[1].Width := 42;

если только двух, то не работает.

Есть зависимость размера кнопок от размера самой компоненты cxSpinEdit. Т.е. больше какого-то определённого значения размер кнопок не установить. Т.е. нужно отключить AutoSize, сделать высоту компоненты огромной и только тогда можно делать размеры кнопок побольше.
автор: X11 добавлено: 30 окт 13 просмотры: 1654, комментарии: 1



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 просмотры: 2817, комментарии: 2



TcxTreeList - фильтрация

Фильтрация Nod`ов в TcxTreeList/TcxDBTreeList

У Datacontroller`а есть Filter, но можно использовать другой способ.
Скрывать/отображать узлы в цикле с помощью свойства TcxTreeListNode.Visible

Примеры
procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
  ANode: TcxTreeListNode;
begin
  for I := 0 to cxDBTreeList1.AbsoluteCount - 1 do
  begin
    ANode := cxDBTreeList1.AbsoluteItems[I];
    if ANode.Values[cxDBTreeList1FilterColumn.ItemIndex] = 2 then
      ANode.Visible := false;
  end;
end;


procedure TForm1.Button2Click(Sender: TObject);
var
  I: Integer;
begin
  for I := 0 to cxDBTreeList1.AbsoluteCount - 1 do
    cxDBTreeList1.AbsoluteItems[I].Visible := true;
end;
автор: X11 добавлено: 17 авг 13 просмотры: 1639, комментарии: 0



TdxStatusBar right alignment - выравнивание по правой стороне

У TdxStatusBar от DevExpress, непосредственно у самих панелей, отсутствует свойство alignment.
Но у панелей есть свойство Fixed типа Boolean. По умолчанию оно включено (True).
Откройте у dxStatusBar список панелей, это свойство Panels. Выберите нужную панель и отключите свойство fixed.
На снимке это третья по счёту панель. После неё есть ещё две, которые и нужно было закрепить у правой части окна. Теперь обе панели, находящие справа от незафиксированной будут как бы прикреплены к правой части окна. Это связано с тем, что ширина третьей панели незафиксирована, Fixed = False.


Теперь, когда пользователь будет менять ширину окна, то все панели, находящиеся справа от такой незафиксированной панели, будут двигаться вправо, как будто у них включено свойство right alignment, т.е. на самом деле будет меняться размер незафиксированной панели.


здесь есть пример
http://www.devexpress.com/Support/Center/Question/Details/Q103177
автор: X11 добавлено: 03 июл 13 просмотры: 1372, комментарии: 0


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