Последняя версия DataExpress 3 beta от 7 декабря 2019 года.
Изображение Скачать | Изображение Что нового?
См. также: Энциклопедия DX | Форум на develop-soft | Песочница
ИзображениеИзображениеИзображение

Вычисляемое поле в табличном представлении формы(ListWindow))

Все о том как сделать что-то с помощью скриптов.
Аватара пользователя
admin
Разработчик
Сообщения: 4630
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская
Благодарил (а): 20 раз
Поблагодарили: 95 раз

Re: Вычисляемое поле в табличном представлении формы(ListWindow))

Сообщение admin » Вт авг 14, 2018 9:36 pm

Наверное лучше использовать отдельный компонент TTreeView и заполнять его вручную.

Vofka18
Опытный
Сообщения: 264
Зарегистрирован: Вс мар 04, 2018 4:54 pm
Благодарил (а): 14 раз
Поблагодарили: 4 раза

Re: Вычисляемое поле в табличном представлении формы(ListWindow))

Сообщение Vofka18 » Вт авг 14, 2018 9:52 pm

Я так и пытаюсь сделать, отдельная форма на ней пустой ttreeview и запрос. И чтоб заполнить дерево, мне нужно откуда-то взять настройки иерархии, которые задаются в форме(а точнее очередность иерархии). Ну конечно надеялся откуда нибудь стянуть дерево целеком, но не судьба:-)

Аватара пользователя
Гocть
Эксперт
Сообщения: 1586
Зарегистрирован: Пн ноя 27, 2017 8:02 am
Поблагодарили: 9 раз

Re: Вычисляемое поле в табличном представлении формы(ListWindow))

Сообщение Гocть » Вт авг 14, 2018 11:26 pm

Можно скопировать иерархию из существующего дерева.
Фрилансер. Разработка на заказ. Консультирование.

Vofka18
Опытный
Сообщения: 264
Зарегистрирован: Вс мар 04, 2018 4:54 pm
Благодарил (а): 14 раз
Поблагодарили: 4 раза

Re: Вычисляемое поле в табличном представлении формы(ListWindow))

Сообщение Vofka18 » Вт авг 14, 2018 11:46 pm

Сегодня пробовал, создать свой листВиндов, и с него стянуть дерево. Но не получилось загрузить данные в окно(пример из справочника не работает, или я его не правильно использовал) завтра ещё попробую...

Vofka18
Опытный
Сообщения: 264
Зарегистрирован: Вс мар 04, 2018 4:54 pm
Благодарил (а): 14 раз
Поблагодарили: 4 раза

Re: Вычисляемое поле в табличном представлении формы(ListWindow))

Сообщение Vofka18 » Ср авг 15, 2018 10:14 am

Понимаю, что всем надоел, но я уже вошел в азарт :-)
Дерево я загрузил немного костыльно но работает

Код: Выделить всё

  ListWnd := TListWindow.Create('Запчасти', vtDefault);
  ListWnd.FormView.Form.Open;  // Разработчик должен самостоятельно открывать набор данных
  ListWnd.FormView.Form.Tree.UpdateTree;
  //ListWnd.ShowModal;
  myTree := TTreeView.Create(self);
  myTree.items:=ListWnd.formview.tree.items;
  myTree.refresh;
  myTree.Parent := self;
  myTree.SetBounds(0, 0, 300, self.width);
  myTree.align:=alLeft;
  dxQueryGrid1.align:=alLeft;

  ListWnd.FormView.Form.Close; // … и закрывать (необязательно, если окно уничтожается)
  FreeObj (ListWnd);

и тут же уперся в стену... Как получить полный путь к записи, с учетом порядка иерархии(заданного в дизайнере), что бы фильтровать запрос по дереву?

Аватара пользователя
admin
Разработчик
Сообщения: 4630
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская
Благодарил (а): 20 раз
Поблагодарили: 95 раз

Re: Вычисляемое поле в табличном представлении формы(ListWindow))

Сообщение admin » Ср авг 15, 2018 1:55 pm

Сделать маленький пример можете?

Vofka18
Опытный
Сообщения: 264
Зарегистрирован: Вс мар 04, 2018 4:54 pm
Благодарил (а): 14 раз
Поблагодарили: 4 раза

Re: Вычисляемое поле в табличном представлении формы(ListWindow))

Сообщение Vofka18 » Ср авг 15, 2018 4:38 pm

admin писал(а):Сделать маленький пример можете?

Вот пример, сейчас поясню:
Логин-Ечин
Пароль-1
В дизайнере первая форма "Выбор товара"(скрипт пишу пока в ней, для экскрементов). В дальнейшем хочу ей подменить окно списка(как еще не думал но вроде как это реально сделать)
Справочник "Запчасти" подчиняется иерархии Группа-Товарная группа-инструмент.
На форме "Выбор товара" есть запрос(пока не доработанный), и текстовое поле(заполняется скриптом из дерева) по которому в будущем будут фильтроваться запчасти.
И собсно вопрос как фильтровать, если иерархия не только по группе?
Хочется сохранить функционал дизайнера, т.е. если в дизайнере изменить порядки иерархии, чтоб все сохраняло функционал. Это я к тому, что б не вручную собирать строчку для фильтрации в каждой записи справочника(типа CONCAT ([!Группа],'/',[!Товарная группа],'/',[!Инструмент]))? ведь порядок может поменятся.
Вложения
СЕРВИС ЦЕНТР.7z
(112.4 КБ) 42 скачивания

Аватара пользователя
admin
Разработчик
Сообщения: 4630
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская
Благодарил (а): 20 раз
Поблагодарили: 95 раз

Re: Вычисляемое поле в табличном представлении формы(ListWindow))

Сообщение admin » Ср авг 15, 2018 8:52 pm

Для фильтрации надо брать не путь, а отдельные узлы, начиная от выбранного узла и вверх до корневого родителя. У Вас получается каждый уровень - это отдельное поле. На верхнем уровне - группа, на следующем - товарная группа и т. д. Т. е. надо брать значения с каждого уровня и подставлять в соответствующие поля фильтра источника. Можно, например, в OnSelectecionChanged дерева запоминать значения узлов в переменных (setvar) и обновлять запрос. А в фильтре источника подставляем значения из переменных (getvar). Что-то типа такого:

Код: Выделить всё

procedure MyTreeSelectionChanged(Sender: TObject);
var
   Tr: TTreeView;
   N: TTreeNode;
begin
   Tr := TTreeView(Sender);
   N := Tr.Selected;
   EvalExpr(Format('setvar("instrument", "%s")', [N.Text]), nil);
   EvalExpr(Format('setvar("tovar group", "%s")', [N.Parent.Text]), nil);
   ...
   dxQueryGrid1.Refresh;
end;

В фильтре источника:

Код: Выделить всё

[!инструмент|название]=gevar('instrument') &
[!товарная группа|название]=getvar('tovar group') & ...

Vofka18
Опытный
Сообщения: 264
Зарегистрирован: Вс мар 04, 2018 4:54 pm
Благодарил (а): 14 раз
Поблагодарили: 4 раза

Re: Вычисляемое поле в табличном представлении формы(ListWindow))

Сообщение Vofka18 » Ср авг 15, 2018 9:36 pm

Дело в том, что группа может быть многоуровневая, и опять же, порядок например торговая марка и инструмент может поменяться(понятно, что можно залезть в скриптах и поменять)но хотел нечто универсальное.
Ну да ладно, суть ясна, буду значит так делать. На нет, как говорится, и суда нет :-)
Спасибо! Но боюсь это не последний мой вопрос :)

Аватара пользователя
admin
Разработчик
Сообщения: 4630
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская
Благодарил (а): 20 раз
Поблагодарили: 95 раз

Re: Вычисляемое поле в табличном представлении формы(ListWindow))

Сообщение admin » Ср авг 15, 2018 9:42 pm

Многоуровневая группа будет выглядеть в дереве как: Группа\Подгруппа\Подгруппа\... Такое тоже можно передать в фильтр.