Страница 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 работает, но требует больших затрат на реализацию.