Страница 1 из 1

Фильтр

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

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

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

Есть у кого какие предложения?

Re: Фильтр

Добавлено: 01 июн 2011, 13:12
Masygreen
наверно это будет очень сложно :)

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

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

const
 cmMenu02     = 455668;
End;

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

HandleEvent
 cmHotKeys:
  PutHotCommand(RunMenu('iPrj_Menu'));
 cmMenu02:
  {
  }
фильтр... эээ.. там же должны все индексы совпасть .. т.е. если уже есть фильтры и сортировки в этом brows то и ваши дополнительные ограничения надо плюсовать в словарь - это докомпиляция .. наверно проще свой написать...

Re: Фильтр

Добавлено: 01 июн 2011, 13:34
n0where
Тогда если юзать стандартное - треугольничек с отростком )))Г. )) - туда создать фильтр программно какой нужно и применить его. Как такое сделать?

Re: Фильтр

Добавлено: 01 июн 2011, 13:44
Masygreen
дальше не знаю ... не делал докомпиляцию стандартного ..

Re: Фильтр

Добавлено: 01 июн 2011, 16:40
m0p3e
Если не брать в расчет стандартную возможность по установке пользовательского фильтра Ctrl+A, то остается только докомпиляция. Ничего страшного в ней нет, но в случае расширения логической таблицы вслепую (без исходников) сделать будет довольно проблематично. Меню докомпиляется вообще без проблем.

Re: Фильтр

Добавлено: 02 июн 2011, 08:33
n0where
m0p3e писал(а):Если не брать в расчет стандартную возможность по установке пользовательского фильтра Ctrl+A
Я про это и говорю. Как там создать фильтр, потом его применить и потом отменить программно

Re: Фильтр

Добавлено: 02 июн 2011, 10:27
edward_K
Открываем VipProgr.chm, ищем "Методы работы с фильтрами", применить можно например так PushFilter ... Про создание там нет ничего.

Re: Фильтр

Добавлено: 02 июн 2011, 10:47
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.
Как добавить пункт в стандартное меню - уже обсуждалось.

Re: Фильтр

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

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

m0p3e
Спасибо попробую.

Re: Фильтр

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

Re: Фильтр

Добавлено: 02 июн 2011, 13:28
n0where
Vik
Статичный не нужен. нужен динамичный.

Re: Фильтр

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

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