#0
by pyramid
Друзья, подскажите, как правильно управлять видимостью и доступностью пунктов главного меню 1с?Некоторым сотрудникам необходимо запретить изменять рабочую дату. Для этого я удаляю пункт меню Сервис-Параметры при помощи метода DeleteMenu, вызываемого из внешней компоненты. Однако, когда появляются или исчезают пункты меню, к примеру, пункт "Действия" при создании текстового документа, удалённый пункт появляется.И почему-то не получается делать пункты подменю серыми (MF_GRAYED), только удалять. Пункты меню, на первом уровне, делать серыми получается.
#1
by MetaEditor
да потомучто меню каждый раз перестраивается... надо ловит системное сообщение какоенибудь, например WM_INIT и туда уже этот код...
#4
by MetaEditor
скорее всего да...MF_BYPOSITION замени на MF_BYCOMMAND ...а идентификаторы посмотри в ресурсах 1crcrus.dll
#5
by pyramid
замена MF_BYPOSITION на MF_BYCOMMAND не помогла - пункты в подменю не изменяют видимость.Как ловить сообщения во внешней компоненте?
#6
by orefkov
Чтобы реализовать это, надо очень глубоко разбираться вструктуре MFC, и сделать получиться только из VC++ & MFC
#8
by Златик
А я бы сделал проще и без всяких внешних компонент.При начале работы системы запомнил бы в переменную системную дату, проверил бы ее значение из некоторого секретного места, и кроме того- с наличием определенных документов после этой даты (чтобы не вводили задним числом).В процедуре ВводНового, а также ПриОткрытии всех документов вызвал бы глобальную процедуру, которая бы принудительно устанавливала бы рабочую дату, если ИмяПользователя принадлежит опредлеленному списку.Догадываюсь, что все эти манипуляции- только для запрета правки доков задним числом. Так для этого управление рабочей датой не нужно вовсе.Достаточно подправить проверку разрешения редактирования, включив в нее не только проверку даты константы, но и наличие доков (обычно-расходных накладных) введенных после рабочей даты.
#12
by artbear
Полгода, год назад ты уже показывал этот файл? или ты что-нибудь менял в этом файле или его содержимое осталось прежним?
#13
by MMF
ничего не менял. Ну вот только что пару строчек исправил для того, чтобы элементом подменю управлять. Я как и тогда, считаю, что для доведения до нормального состояния (хотя бы вполовину АЛьФовой компоненты) надо довольно долго колупаться.
#14
by artbear
Что за компонента от АЛьФ-а? Вроде бы в Форм-Екс такого нету.Второй раз слышу о какой-то компоненте АЛьФ-а, но нигде ссылок нету, даже у него на сайте
#16
by pyramid
я - тупой.делаю так: methOn: begin if FOldWndProc = nil then beginописание оконной процедуры:begin if Handle = FMain1CWnd then begin case MSG ofend;После назначения нового обработчика оконной процедуры прекращается отрисовка окна 1с, несмотря на вызов старого обработчика в конце. Так происходит, даже если из нового обработчика вызывать только старый. Что не так?
#20
by pyramid
не помогает...100% загрузка, всё время вызов нового обработчика.кстати, почему надо в implementation ?
#22
by pyramid
разобрался.Скажите, Михаил, а без таймера можно обойтись?Сейчас делается: получили сообщение WM_INITMENU, установили таймер, и через мгновение по срабатыванию таймера устанавливаем видимость, так?
#25
by Torin
Компанента есть!, но она коммерческая! была выполнена на заказ!Возможности компаненты управлять меню убирать меню! Управлять формами! Управлять стлем окна , размером и так далее! В компаненту так же заложен еще и весть функционал ФормЕкс ! так что вот! это не пиар!Ты спросил я ответил!
#28
by MMF
Ты что, прапорщик? Я вот прочитал твой и пост и как вживую: стоим мы на плацу, а перед нами подполковник Кочнев: "Товарищи курсанты! Я обращаюсь к вам! Принято решение! Отправить вас!...." и т.д. У него в голове, в буфере речевого вывода помещалось максимум 50 символов.
#34
by orefkov
Вариант хитрый, но..."Низкий класс, не чистая работа." (с) О.БендерВо-первых, такой вариант практически ничем не отличается простоот удаления пункта меню. Ты меняешь id команды на 0xFFFFFFFF.Во-вторых, пропадает пиктограмма пункта меню, сам онсдвигается чуть влево по сравнению с остальными пунктами,и становится уже по высоте. (те отключается ownerdraw)В-третьих, при наведении на него мышки читаем в строкесостояния "Активизировать окно"
#35
by orefkov
Уж если делать, то надо так:ловить WM_INITMENUPOPUP, вызывать старую оконную процедуру,а ПОСЛЕ сделатьEnableMenuItem(MenuHandle,32803,MF_BYCOMMAND|MF_GRAYED);
#47
by MMF
а я больше не знаю файлообменников :-( вариант отличается от только Case MSG of WM_INITMENUPOPUP,WM_INITMENU: (тут я прибил в процессе отладки WM_INITMENU)
#49
by pyramid
продолжим?спасибо Олегу Садовникову и MMF за идеи.пример лежит на . исходники надо?чтобы задизаблить Сервис-Параметры, вызываем Меню.Затемнить('Сервис|Параметры'), точки и амперсанды игнорируются.нормально работает только в POPUP меню, в пунктах верхнего уровня не работает нормально.Вопрос таков: Сервис-Параметры из меню запретили. Как отловить нажатие кнопки Параметры из Панели инструментов?
#51
by pyramid
закинул---В продолжение темы:Уважаемые гуру, как поймать событие открытия формы "Настройка параметров системы", и запретить в нём элемент диалога ID: 4195 (edit для ввода рабочей даты)?
#53
by Данила хМастер
Мужики! А чего, нельзя просто delом из интерфейса "Сервис" убрать?У меня получилось 8~)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Управление бух. итогами
- Управление режимом ввода с клавиатуры ?
- Можно ли выгрузить структуру главного меню интерфейса в дерево значений
- Управление доступом в Управление торговлей
- выгрузка данных из Управление торговлей в Управление складом
- v7: Программное управление панелью инструментов главного окна.
В этой группе 1С
- Что означает в 8.0 "Объект поставщика не редактируется?"
- Полу ОФФ: Обучение 1С. План лекций
- Клиент банк для банка НАДРА Украина ктото делал?
- Попрошайка: Формы МХ-1, МХ-3, МХ-20 в виде mxl
- Структура конфигурации несовместима с текущей версией программы
- Сохранение документа без запроса на сохранение? (7.7)
- Уступка прав требования. Есть мысли. Покритикуйте, плс ...
- Даллы в литры. Как?
- Как в УПП сделать ввод остатков?
- выгрузка из ресторана в общепит
- Как правильно произносить "1С"?
- Сегодня ДР у bazvan-а.
- Описание для 1CML32.DLL и UNIZIP32.DLL
- 1SACCSEL - dbf - 1,5 Gb
- Как вернуть в документ результат из обработки?
- Написание внешней компоненты на C# ... кто нить поделится готовым Solution ??
- Помогите с регистром...
- Как программно скопировать документ в 7.7 ?
- Автоматическое "Формирование записей книги покупок". А правильно ли оно работает
- Как в 1С8 поменять цвет фона?