Фильтр

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Фильтр

Сообщение n0where »

Вобщем есть задача:
для списка данных в галактике, аля browse, сделать фильтр по правой кнопке. Проблема в том, что надо сделать это на окне интерфейса Г., а не собственной разработки.

функции:
Можно запустить алгоритм по правой кнопке

Мысли:
Есть стандартный функционал "Фильтр" возможно ли его использование? т.е. автоматическое создание данного фильтра и применение, ну и снятие конечно.
Докомпиляцией ченидь начудить, только это крайние меры, можно ли каким то образом без этого.

Есть у кого какие предложения?
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: Фильтр

Сообщение Masygreen »

наверно это будет очень сложно :)

контекстное меню так..

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

const
 cmMenu02     = 455668;
End;

//служебное меню модуля
iPrj_Menu menu
{
 - 'Удалить запись', cmMenu02,'',hcWindows,,,scMenuContext;
}

HandleEvent
 cmHotKeys:
  PutHotCommand(RunMenu('iPrj_Menu'));
 cmMenu02:
  {
  }
фильтр... эээ.. там же должны все индексы совпасть .. т.е. если уже есть фильтры и сортировки в этом brows то и ваши дополнительные ограничения надо плюсовать в словарь - это докомпиляция .. наверно проще свой написать...
Время ведет!
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Re: Фильтр

Сообщение n0where »

Тогда если юзать стандартное - треугольничек с отростком )))Г. )) - туда создать фильтр программно какой нужно и применить его. Как такое сделать?
Последний раз редактировалось n0where 01 июн 2011, 15:09, всего редактировалось 1 раз.
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: Фильтр

Сообщение Masygreen »

дальше не знаю ... не делал докомпиляцию стандартного ..
Время ведет!
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Фильтр

Сообщение m0p3e »

Если не брать в расчет стандартную возможность по установке пользовательского фильтра Ctrl+A, то остается только докомпиляция. Ничего страшного в ней нет, но в случае расширения логической таблицы вслепую (без исходников) сделать будет довольно проблематично. Меню докомпиляется вообще без проблем.
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Re: Фильтр

Сообщение n0where »

m0p3e писал(а):Если не брать в расчет стандартную возможность по установке пользовательского фильтра Ctrl+A
Я про это и говорю. Как там создать фильтр, потом его применить и потом отменить программно
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5185
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Фильтр

Сообщение edward_K »

Открываем VipProgr.chm, ищем "Методы работы с фильтрами", применить можно например так PushFilter ... Про создание там нет ничего.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Фильтр

Сообщение m0p3e »

Живой примерчик.

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

Alter Interface DepartIer (fix 'Филиальность')

Create View
var Branches : LongInt;
as select CatForHist.atl_branch
from synonym Catalogs CatForHist
Where (( CatHist.cCat /== CatForHist.nrec ))
condition ByFilial = Container_Search ( Branches,CatForHist.Atl_Branch, 0 )
                 and iCatFunc.GetSysCodeIer ( CatForHist.nrec ) = SetEntry
;

HandleEvent
 cmOnVipLoad :
  {
   inherited::handleevent(cmOnVipLoad);
   Branches := GetCurrentBranches;
   If not ConditionActive ( tcByFilial )
     PushConditionForLeave ( tcByFilial, tnCatForHist );
  };
End;
end.
Как добавить пункт в стандартное меню - уже обсуждалось.
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Re: Фильтр

Сообщение n0where »

edward_K писал(а):Открываем VipProgr.chm, ищем "Методы работы с фильтрами", применить можно например так PushFilter ... Про создание там нет ничего.
Загрузить (но не наложить!) фильтр по заданному имени из ресурса.

Как создать данные фильтры в ресурсе?

m0p3e
Спасибо попробую.
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Re: Фильтр

Сообщение Vik »

n0where писал(а):Как создать данные фильтры в ресурсе?
Так, например:
1) Заходите в нужный интерфейс, нажимаете Ctrl + A, создаете нужный фильтр.
2) Идете в Сервис - Конфигуратор - Параметры -DataBase. Ищете параметр FiltersResource.
3) Идете по пути, указанному в FiltersResource , копируете файл ресурса и подключаете его всем
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Re: Фильтр

Сообщение n0where »

Vik
Статичный не нужен. нужен динамичный.
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5185
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Фильтр

Сообщение edward_K »

Дык вы можете использовать в статичном имя какого то вычисляемого поля
if(foundMarker(MarkerDoc.table.nrec),true,false) (fieldname=ddd)

в фильтре(строчном) например ddd=true
Мне лично больше нравятся жесткие подцепки по временной табле в bounds - это шустрее condition работает, но требует больших затрат на реализацию.
Ответить