Воспользовавшись поиском понял, что моя версия (3.0.2.244) не поддерживает обработчиков нажатия клавиш. Это действительно так? И нет ни какой возможности это сделать?
Что за событие окна OnGetProfileKey и когда оно срабатывает? Создал для него обработчик, но в него управление не переходит никогда...
Нравится
"SSV" написал:моя версия (3.0.2.244) не поддерживает обработчиков нажатия клавиш. Это действительно так?
Да, в версии 3.0.2 нет этих обработчиков. Данный функционал есть в более поздних версиях. Если он Вам необходим, нужно обновляться.
"SSV" написал:Что за событие окна OnGetProfileKey и когда оно срабатывает?
Справка из SDK:
"Событие генерируется при получении ключа профиля окна.
Окно может иметь несколько профилей. Если одно и то же окно в различных разделах системы отображает различные компоненты, для каждого варианта внешнего вида этого окна создается свой профиль.
Обработчик события OnGetProfileKey позволяет получить ключ профиля окна."
Если в этот обработчик не переходит управление, значит, в Вашем окне не установлено в true свойство UseProfile. Установите его, и событие сработает перед открытием окна.
"SSV" написал:наиболее старшей
в смысле младшей?
"SSV" написал:безболезненного перехода
если доработок внесено много переход будет непрост на любую версию
"Александр Кудряшов" написал:в смысле младшей?
в смысле страшей - у меня версия 3.0.2.244, в которой нет реализации нужного функционала, скажем он реализован начиная с версии 3.0.2.444, а так как уже есть и 3.1.ххх и 3.2.ххх, то версия 3.0.2.444 из них самая старшая...
"SSV" написал:в смысле страшей - у меня версия 3.0.2.244, в которой нет реализации нужного функционала, скажем он реализован начиная с версии 3.0.2.444, а так как уже есть и 3.1.ххх и 3.2.ххх, то версия 3.0.2.444 из них самая старшая...
ах вы про билды:smile: я уж думал про более свежие версии, на 3.0.4 кстати переход бесплатный будет - только по требуемой функциональности вряд ли там оно будет, Олег уточнит надеюсь
сборки посвежее 3.0 боюсь нету...
Обработчики нажатия клавиш реализованы только начиная с версий 3.2.0.Х.
"SSV" написал:а обновление с моей до 3.2. задача не то чтобы нетривиальна, она невыполнима, правильно?
Зависит от того, насколько Ваша конфигурация отличается от базовой. Невыполнимо - вряд ли, просто если много изменений - перевод займёт больше времени.
"SSV" написал:а обновление с моей до 3.2. задача не то чтобы нетривиальна, она невыполнима, правильно?
Ну почему же... невыполнимых нет:cool: вот нетривиальная - возможно, как уже говорил смотря сколько доработано и изменено
Кстати до 3.2 смысл какой, все равно старая версия, лучше уж сразу на свеженькое...
[устраиваясь поудобнее в кресле]
в идеальном случае у вас есть полное описание доработок (a la ТЗ) и результаты работы той самой Merge - список измененных сервисов относительно коробочной исходной 3.0
Если их много - рискну предложить такую схему - берем новую версию 3.3.2, вносим в нее аналогичные доработки где перетаскиванием, где переписыванием заново - все же структура базы и логика здорово поменялась, просто перетащить исправленные сервисы не выйдет, те что были созданы "с нуля" - частично. Для начала - таблицы.
Когда все изменения на уровне наличия полей в таблицах уже внесены в новой версии - перетаскиваем данные утилитой типа Red Gate SQL DataCompare (у вас же SQL, да? :smile:). И потом вносим прочие изменения в сервисах (запросы, датасеты, формы и так далее), правим скрипты - чтобы работало так же, как доработано в "старой" версии.
Ну и в результате заказываем лицензии для свежего обновленного Terrasoft...
Как вариант - написать СОМ, который будет ловить нажатия клавишь. А там на его событии уж как-то извращаться, понимать какой раздел активен и т.д.
"Александр Кудряшов" написал:устраиваясь поудобнее в кресле
в идеальном случае у вас есть полное описание доработок (a la ТЗ) и результаты работы той самой Merge - список измененных сервисов относительно коробочной исходной 3.0Если их много - рискну предложить такую схему - берем новую версию 3.3.2, вносим в нее аналогичные доработки где перетаскиванием, где переписыванием заново - все же структура базы и логика здорово поменялась, просто перетащить исправленные сервисы не выйдет, те что были созданы "с нуля" - частично. Для начала - таблицы.
Когда все изменения на уровне наличия полей в таблицах уже внесены в новой версии - перетаскиваем данные утилитой типа Red Gate SQL DataCompare (у вас же SQL, да? :smile:). И потом вносим прочие изменения в сервисах (запросы, датасеты, формы и так далее), правим скрипты - чтобы работало так же, как доработано в "старой" версии.Ну и в результате заказываем лицензии для свежего обновленного Terrasoft...
звучит, как издевательство, чесслово...
"SSV" написал:звучит, как издевательство, чесслово...
эт я не нарочно:smile: в принципе по данной схеме уже несколько раз приходилось делать переход, все не так уж и страшно. В том числе переносили и нашу рабочую базу...
Базовые пакеты и утилиты перехода - для базовой версии подходят на "отлично", но сделать такой пакет для каждой персонально модифицированной системы невозможно, это очевидно...
Давайте пойдем от обратного.
Для чего Вы хотите отслеживать нажатия клавиш?
Я на версии 3.0.4 это реализовал еще год назад. Решение было не самое изящное, но стабильно работает (считывание пластиковых карт)
Если объясните зачем это вам, то может смогу вам помочь.
есть функция визирования встреч, иногда пользователю нужно визировать десяток, а то и больше записей, т.е. он должен тыцнуть мышой в нужную запись, потом перетащить мыша вниз и тыцнуть в кнопку интерфейса... вот хотелось чтобы ему приходилось по-меньше елозить мышой определить клавишу, скажем F5, или пробел вместо интерфейсной кнопки...
Может, в этом случае будет достаточно действия по выделенным записям?
Создать действие, в котором получать набор выделенных в реестре записей. Далее в цикле проходим по набору записей и выполняем для каждой визирование. Если при этом для каждой записи должно появляться окно редактирования, открываем его модально: в этом случае пока мы не завизируем очередную запись, окно для следующей не откроется.
В итоге получается более простой функционал: вместо того, чтобы десяток раз нажимать кнопку F5, выбираем в реестре нужные записи и запускаем один раз действие из соответствующего меню раздела.
Выделить записи в реестре можно с помощью клавиш Ctrl или Shift. Доступ к идентификаторам выделенных записей можно получить через свойство SelectedIDs объекта grdData:
var SelectedIDs = grdData.SelectedIDs; var SelectedIDsArray = GetArrayByCollection(grdData.SelectedIDs);
Далее можно работать либо напрямую с коллекцией, либо с массивом идентификаторов выделенных записей:
for (var i = 0; i < SelectedIDsArray.length; i++) { .......... }