TcxDBTreeList и видимость колонки checkbox для 2-го уровня

evgen29
Дата: 22.06.2019 00:29:49
Здравствуйте! Необходимо сделать видимыми чекбоксы только для второго уровня вложенности. Сделал для колонки обработку события, но получается не очень - если неактивна на редактирование, то показывает цифры, если активна, то чекбокс. А мне нужно показывать чекбокс только для второго уровня.

procedure TfrmConfig.cxDBTLInGroupGetEditProperties(
  Sender: TcxTreeListColumn; ANode: TcxTreeListNode;
  var EditProperties: TcxCustomEditProperties);
begin
  IF DM.pFIBMDLPResidentGroups.FieldValues['TREE_LEVEL']=2 THEN
  EditProperties:=cxEditRepositoryInGroupCheckBox.Properties else
  EditProperties:=cxEditRepositoryInGroupText.Properties;
end;
Кроик Семён
Дата: 22.06.2019 00:55:47
Повесьте обработчик на событие OnChangeNode (или как то так) и в этом обработчике меняйте свойство колонки cxEditRepositoryInGroupCheckBox.DisableEditor (или как то так) на true/false в зависимости от ситуации
DimaBr
Дата: 22.06.2019 01:28:27
Сделал для колонки обработку события, но получается не очень - если неактивна на редактирование, то показывает цифры, если активна, если активна, то чекбокс


Вы повесили событие на GetEditingProperties а нужно на GetEditProperties. Тогда Чекбоксы будут для всего дерева, а не только для редактируемой ячейки
evgen29
Дата: 22.06.2019 10:12:43
DimaBr,
повесил на GetEditProperties исходя из текста
на самом деле и так и так пробовал.
но на GetEditProperties видно цифры, а при попытке редактировать появляются чекбоксы.
DimaBr
Дата: 22.06.2019 13:59:45
ЧЯДНТ
evgen29
Дата: 22.06.2019 20:24:59
DimaBr,
ну все-равно 1 или 0 остается, а хотелось бы их убрать совсем )))
оставить только чекбоксы для первого уровня.
evgen29
Дата: 22.06.2019 20:28:59
evgen29
DimaBr,
ну все-равно 1 или 0 остается, а хотелось бы их убрать совсем )))
оставить только чекбоксы для первого уровня.


вернее для 2 уровня )))
Dmitri Krizhanovski
Дата: 22.06.2019 21:35:10
evgen29,

Если в этом же ключе, то где-то так:
procedure TForm1.cxDBTreeList1checkGetDisplayText(Sender: TcxTreeListColumn;
  ANode: TcxTreeListNode; var Value: string);
begin
  Value := '';
end;

procedure TForm1.cxDBTreeList1checkGetEditProperties(Sender: TcxTreeListColumn;
  ANode: TcxTreeListNode; var EditProperties: TcxCustomEditProperties);
begin
  if ANode.Level = 1 then
    EditProperties := cxEditRepository1CheckBoxItem1.Properties
  else
    EditProperties := cxEditRepository1TextItem1.Properties;
end;
DimaBr
Дата: 22.06.2019 22:11:20
evgen29
DimaBr,
ну все-равно 1 или 0 остается, а хотелось бы их убрать совсем )))
оставить только чекбоксы для первого уровня.

А где в первом посте видно что хочется избавиться от 0/1 ???

Здравствуйте! Необходимо сделать видимыми чекбоксы только для второго уровня вложенности. Сделал для колонки обработку события, но получается не очень - если неактивна на редактирование, то показывает цифры, если активна, то чекбокс. А мне нужно показывать чекбокс только для второго уровня.


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

+ код
procedure TForm1.cxDBTreeList1cxDBTreeListColumn2GetEditProperties(Sender: TcxTreeListColumn; ANode: TcxTreeListNode;var EditProperties: TcxCustomEditProperties);
begin
  if ANode.Level=1 then EditProperties := cxEditRepository1CheckBoxItem1.Properties
end;

procedure TForm1.cxDBTreeList1cxDBTreeListColumn2GetDisplayText(Sender: TcxTreeListColumn; ANode: TcxTreeListNode; var Value: String);
begin
  if ANode.Level<>1 then Value := '';
end;

procedure TForm1.cxDBTreeList1FocusedNodeChanged(Sender: TcxCustomTreeList; APrevFocusedNode, AFocusedNode: TcxTreeListNode);
begin
  cxDBTreeList1cxDBTreeListColumn2.Options.Editing := AFocusedNode.Level = 1;
end;