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

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

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

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

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

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

Да я вкурсе, просто в дереве будет примерно так: Группа\Подгруппа\Подгруппа\торговая марка\инструмент\, но пока это писал, сам ответил на свой вопрос, ведь можно с конца начинать разбирать путь, а все что останется будет группа.
Или я может что-то не правильно понял? :-)
И всё-таки ещё беспокоит меня вопрос, нельзя ли из скриптов получить информацию о порядке группировки, тот что выставляется в дизайнере настройки дерева?

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

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

Сообщение admin » Чт авг 16, 2018 8:14 am

В дереве будет так:

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

Группа\Подгруппа\Подгруппа
   Торговая марка
      Инструмент

Т. е. если в настройках дерева выбран источник "Форма", то данные иерархического справочника (в данном случае "Группы") будут именно в таком виде.
Vofka18 писал(а):И всё-таки ещё беспокоит меня вопрос, нельзя ли из скриптов получить информацию о порядке группировки, тот что выставляется в дизайнере настройки дерева?

Нельзя. Или парсить метаданные формы.

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

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

Сообщение Vofka18 » Чт авг 16, 2018 9:43 am

Да, согласен, был не прав :-), ладно, буду работать с чем есть ))) по результатам отпишусь ;-)
Последний раз редактировалось admin Чт авг 16, 2018 10:53 am, всего редактировалось 1 раз.
Причина: Не надо цитировать последний пост.

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

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

Сообщение Vofka18 » Ср авг 22, 2018 3:30 pm

Ну хочу отписаться, решил не заморачиваться, и сделал как то так...
Модуль правда универсальным не получился, но может кому идея понравится :-)

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

{@module
Author=Ечин Владимир
Version=1.0
Description=Добавляет в выбор ЗЧ Поле остатков и цены.
@}
{$I myProcedure}
var
 mySat:TStatusBar;//TPanel;
 lblName,lblPrice,lblPricePlus,lblCount:TLabel;


procedure Scrolling(Sender: TObject);
begin
   //debug(TdxForm(Sender).RecId) ;
   lblName.Caption:='( '+TdxForm(Sender).Fields['Артикул']+' ) '+
    TdxForm(Sender).Fields['Наименование'];
   lblPrice.Caption:=' Закупка= '+
    varToStr(getLastPrice(TdxForm(Sender).Fields['Артикул']))+'р.';
   lblPricePlus.Caption:=' Продажа= '+
    varToStr(getPricePlus(TdxForm(Sender).Fields['Артикул']))+'р.';
   lblCount.Caption:=' Остаток= '+
    varToStr(getCount(TdxForm(Sender).Fields['Артикул']))+ ' шт.  ';
end;

procedure createLWnd(Sender: TObject; aWindow: TForm);
begin

  TListWindow(aWindow).FormView.Form.OnAfterScroll:=@Scrolling;

  mySat:=TStatusBar.create(aWindow);//.FormView);
  mySat.parent:=aWindow;//.FormView;
  mySat.Color:=clLime;
  //myPanel.align:=alTop;

  lblName:=Tlabel.Create(mySat)
  lblName.Parent:=mySat;
  lblName.Align:=alLeft;
  lblName.Caption:='Наименование запчасти';
  lblName.Font.Style:=[fsBold];
  lblName.Font.Color:=clBlue;
  lblName.Font.Size:=12;
  lblName.Show;

  lblPrice:=Tlabel.Create(mySat)
  lblPrice.Parent:=mySat;
  lblPrice.Align:=alRight;
  lblPrice.Caption:=' Закупка= ';
  lblPrice.Font.Style:=[fsBold,fsItalic];
  lblPrice.Font.Color:=clAqua;
  lblPrice.Font.Size:=12;
  lblPrice.Show;

  lblPricePlus:=Tlabel.Create(mySat)
  lblPricePlus.Parent:=mySat;
  lblPricePlus.Align:=alRight;
  lblPricePlus.Caption:=' Продажа= ';
  lblPricePlus.Font.Style:=[fsBold];
  lblPricePlus.Font.Color:=clRed;
  lblPricePlus.Font.Size:=12;
  lblPricePlus.Show;

  lblCount:=Tlabel.Create(mySat)
  lblCount.Parent:=mySat;
  lblCount.Align:=alRight;
  lblCount.Caption:='  Остаток= ';
  lblCount.Font.Style:=[fsBold];
  lblCount.Font.Color:=clGreen;
  lblCount.Font.Size:=12;
  lblCount.Show;
  //listWnd.FormView.grid.align:=alRight;
  mySat.Show();
  //listWnd.FormView.Grid.OnCellclick:=@
end;

{@action
Id= 8F76FA67-4BF0-4442-B9EB-D3CA2549B7F8
OrigName=createStatBar
Name=ModListWindow
Group=myLstWnd
UI=<ui>
  <object name="Obj" caption="Компонент списка запчастей" required="1"/>
</ui>
Description=Требуется указать компонент для списка.
@}
function createStatBar(obj:string): Boolean;
var
 C: TComponent;
begin
  C:=Self.FindComponentByFieldName(obj);
  with TdxLookupComboBox(C) do
  begin
    OnCreateListWindow:=@createLWnd;
  end;

end;
Вложения
окно списка.jpg
окно списка.jpg (116.2 КБ) 683 просмотра
Настройка.jpg
Настройка.jpg (58.54 КБ) 683 просмотра

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

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

Сообщение admin » Ср авг 22, 2018 7:49 pm

Спасибо, что делитесь своим опытом и наработками.

Обратил внимание: не желательно в модуле расширений использовать другие модули ($I myProcedure), потому что модуль становится непортируемым.

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

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

Сообщение Vofka18 » Пт авг 24, 2018 9:25 pm

Доброго времени суток.
Вот все-таки, пришлось набросать,относительно, полностью универсальный модуль для вывода статус бара с вычисляемыми полями,
собственно вот что получилось. Но без вопросов, ну никак не выходит...:
1) Как прописать фильтр для поля object, что бы отображались только объекты с источником данных, который выбран в поле form.(чет я не сообразил)
2) Не могу никак победить, след. ситуацию: одна из форм, где подключен данный модуль, является "простой формой", а значит она открывается только один раз, и инициализация модуля проходит тоже один раз, и если в последствии открывается другая форма с этим модулем(и закрывается соответственно), то при возврате к "простой форме" модуль уже не работает(что в принципе логично). Каким способом можно проводить повторную инициализацию, например при смене вкладки?
3) Нет ли случайно диалогового окна выбора цвета и шрифта, может я просто не нашел? :)
Вложения
2018-08-24_21-07-55.png
2018-08-24_21-07-55.png (93.75 КБ) 637 просмотров
2018-08-24_21-05-21.png
2018-08-24_21-05-21.png (84.13 КБ) 637 просмотров
StatusBarInLWnd.rar
(1.95 КБ) 35 скачиваний

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

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

Сообщение admin » Пт авг 24, 2018 9:47 pm

1) Так не получится. Вы можете только указать объекты какой формы показывать в списке.
2) Написать подключаемое действие не так просто, как действие для кнопки. Нужно соблюсти ряд требований. Подробности можно почитать здесь.
3) Пока не реализовал.

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

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

Сообщение admin » Пт авг 24, 2018 9:53 pm

Стало самому интересно реализовать дерево. Здесь можно глянуть.

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

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

Сообщение Vofka18 » Пт авг 24, 2018 9:56 pm

admin писал(а):1) Так не получится. Вы можете только указать объекты какой формы показывать в списке.
2) Написать подключаемое действие не так просто, как действие для кнопки. Нужно соблюсти ряд требований. Подробности можно почитать здесь.
3) Пока не реализовал.

Ясно, буду разбираться. Спасибо!;)

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

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

Сообщение Vofka18 » Пт авг 24, 2018 9:59 pm

admin писал(а):Стало самому интересно реализовать дерево. Здесь можно глянуть.

Очень интересно!!! Сегодня уже не смогу глянуть. Но завтра обязательно попробую! :)