Показать сообщение отдельно
Старый 20.06.2005, 17:11   #5  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 646 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
В Вашей постановке вопроса, на самом деле можно, но долго программируя То есть, перехватываем нажатие Ctrl+F + изменяем контекстное меню, чтобы в нем появился пункт фильтр + по возврату данных из формы поиска разбирать их и накладывать фильтр. В общем, как Вы видите, обходной путь найти можно, но стоимость такого решения будет очень высока, и в целесообразности я бы очень сильно усомнился.

Чтобы ответить аргументировано, разобью Вашу задачу на две:
1. Вызов формы поиска, при нажатии Ctrl+F.
2. Обработка результатов ввода в форму поиска.

1 задача менее сложна, так как заключается только в том, чтобы добавить обработку определенной комбинации клавиш в метод task и изменение контекстного меню для конкретного контрола. Однако решить ее в общем случае невозможно (по крайней мере, сейчас я не готов предложить решение). Таким образом, это придется делать для каждой формы и для каждого поля, в котором Вы собираетесь организовывать поиск по значению display-метода. Кроме того, нужны будут некоторые модификации для формы SysFormSearch.

2ую задачу можно решать двумя способами. Первый (наиболее логичный и не всегда применимый) - разбирать значение, которое пришло из SysFormSearch, и на основании этого накладывать фильтр на физически существующие в системе поля. Очевидно, что это сделать можно далеко не всегда. И в каждом случае нужно будет делать свой разбор. Второй - создать временную таблицу с двумя полями: RecId в фильтруемой таблице и значение display-метода. При этом вам нужно будет каждый раз при обработке поиска заполнять эту таблицу для всех (!!!) строк фильтруемой таблицы. Далее, надо будет подсунуть временную таблицу в запрос.

Ну и наконец, главная причина, по которой этого делать не стоит: Microsoft сейчас активно изменяет контролы на форме. В частности, в SP3 появилась возможность копировать в буфер обмена значения display-методов (кстати, можете предложить через буфер копировать значения в Excel и делать там Автофильтр ) Вы совершенно не застрахованы от того, что эту функциональность не реализуют на уровне ядра в следующем SP. Таким образом, инвестиции в разработку этой функции будут совершенно безсмысленны.

P.S.: Если это настолько критично, добавьте в таблицу нормальное поле, которое будет инициализироваться с помощью display-метода в методах insert() и update() таблицы. Много нервов сэкономите
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me