Руководство разработчика

Контекстное меню для ячеек

Обработчик меню отвечает за формирование контекстного меню для показа. Но обработка вызова данного события не происходит в контексте определенной ячейки таблицы, поэтому для проверки вызова меню у ячейки применяется специальный метод ЯЧЕЙКА_МЕНЮ. Данный метод проверяет было ли вызвано меню над ячейкой таблицы или контекстное меню было вызвано вне ячеек таблицы, или вызова контекстного меню не происходило. В результате вызова данного метода выходными параметрами являются координаты ячейки, над которой осуществлялся вызов контекстного меню. Данный метод позволяет проверить вызов меню над ячейками фиксированных столбцов и строк.

Для проверки вызова меню у ячейки данных существуют методы КУР_СТРОКА и КУР_СТОЛБЕЦ, но для проверки вызова у фиксированных ячеек эти методы не подходят. Это объясняется тем, что при нажатии правой кнопки мыши над ячейкой данных для показа меню, курсор перемещается на эту ячейку, а при нажатии над фиксированной ячейкой перемещения курсора не происходит. Поэтому данные методы не стоит применять для определения контекста вызова меню ячейки, лучше использовать метод ЯЧЕЙКА_МЕНЮ.

Методы для проверки вызова меню у ячейки используются в обработчиках меню и команда, чтобы обработка этих событий происходила в контексте определенной ячейки.

В примере ниже реализована проверка вызова меню у ячейки. Если вызов меню происходит у ячейки из первой строки, то выводится текстовое сообщение.

Пример

...
ФУНКЦИЯ ЛОГИКА: Команда(ПЕРЕМ ТАБЛИЦА: элемент; СТРОКА: код)
  ПЕРЕМ ЦЕЛОЕ: столбец, строка
  ВЫБОР(код)
    #"инфо":
      ЕСЛИ элемент.ЯЧЕЙКА_МЕНЮ(столбец, строка) ТО
        ЕСЛИ строка = 1 ТО
          СООБЩЕНИЕ("Ячейка из первой строки")
        КОНЕЦ_ЕСЛИ
      КОНЕЦ_ЕСЛИ
      РЕЗУЛЬТАТ = ДА
   ИНАЧЕ
     РЕЗУЛЬТАТ = НЕТ
   КОНЕЦ_ВЫБОРА
КОНЕЦ_ФУНКЦИИ
...

См. также: