SetTableNotificationCallback

Задание функции обратного вызова для обработки событий в таблице. В случае успешного завершения функция возвращает «1», иначе – «0».
ВАЖНО! Недопустим вызов функций Clear и DestroyTable для t_id внутри функции обратного вызова f_cb, назначенной на таблицу с данным t_id.

Для SetTableNotificaticationCall

NUMBER SetTableNotificationCallback (NUMBER t_id, FUNCTION f_cb)

Для функции:

FUNCTION (NUMBER t_id, NUMBER msg, NUMBER par1, NUMBER par2)&l

Для SetTableNotificationCallback:

  • t_id – идентификатор таблицы,
  • f_cb – функция обратного вызова для обработки событий в таблице.

Для функции:

  • t_id – идентификатор таблицы, для которой обрабатывается сообщение,
  • par1 и par2 – значения параметров определяются типом сообщения msg,
  • msg – код сообщения.

Доступные коды событий:

  • QTABLE_LBUTTONDOWN – нажата левая кнопка мыши, при этом par1 содержит номер строки, par2 – номер колонки,
  • QTABLE_RBUTTONDOWN – нажата правая кнопка мыши, при этом par1 содержит номер строки, par2 – номер колонки,
  • QTABLE_LBUTTONDBLCLK – двойное нажатие левой кнопки мыши, при этом par1 содержит номер строки, par2 – номер колонки,
  • QTABLE_RBUTTONDBLCLK – двойное нажатие правой кнопки мыши, при этом par1 содержит номер строки, par2 – номер колонки,
  • QTABLE_SELCHANGED – изменение текущей (выделенной) строки, при этом par1 равен номеру новой выделенной строки,
  • QTABLE_CHAR – нажата символьная клавиша, при этом par2 содержит код клавиши, par1 – текущую выделенную строку,
  • QTABLE_VKEY – нажата клавиша, при этом par2 содержит код клавиши, par1 – текущую выделенную строку,
  • QTABLE_MBUTTONDOWN – нажата вниз средняя кнопка мыши, при этом par1 содержит номер строки, par2 – номер колонки,
  • QTABLE_MBUTTONDBLCLK – двойное нажатие средней кнопки мыши, при этом par1 содержит номер строки, par2 – номер колонки,
  • QTABLE_LBUTTONUP – отпущена левая кнопка мыши, при этом par1 содержит номер строки, par2 – номер колонки,
  • QTABLE_RBUTTONUP – отпущена правая кнопка мыши, при этом par1 содержит номер строки, par2 – номер колонки,
  • QTABLE_CLOSE – закрытие таблицы, при этом par1 и par2 равны нулю.

Примеры:

  • 37
-- Создаем новую переменную
QTable ={}
QTable.__index = QTable
-- Функция инициализации таблицы
function QTable.new()
    local t_id = AllocTable()
    if t_id ~= nil then
        q_table = {}
	setmetatable(q_table, QTable)
	q_table.t_id=t_id
	q_table.caption = ""
	q_table.created = false
	q_table.curr_col=0
	-- Таблица с описанием параметров столбцов
	q_table.columns={}
	return q_table
    else
        return nil
    end
end
Создаем и инициализируем экземпляр таблицы QTable
test_table = QTable:new()

-- Функция инициализации таблицы
function InitTable()
    tt = test_table.t_id
    AddColumn(tt, 1, 'Колонка №1', true,QTABLE_STRING_TYPE,12)
    AddColumn(tt, 2, 'Колонка №2', true,QTABLE_CACHED_STRING_TYPE,12)
    AddColumn(tt, 3, 'Колонка №3', true,QTABLE_STRING_TYPE,7)

    -- Подписываемся на события
    SetTableNotificationCallback(tt, OnTableEvent)

    -- Создаем окно с таблицей
    CreateWindow(tt)
    -- Присваиваем окну заголовок
    SetWindowCaption(tt, "Окно с таблицей")
    -- Задаем позицию окна
    SetWindowPos(tt, 0, 70, 692, 240)
end

-- Функция обрабатывает события в таблице
function OnTableEvent(t_id, msg, par1, par2)
    -- Если был клик левой кнопкой
    if msg == QTABLE_LBUTTONDBLCLK then
        -- Если это общий стоп
	if par1 == 1 -- Номер строки
	    and par2 == 1 then -- Номер колонки
		
	        -- Вызываем необходимую функцию
			
	else		
	    if par2 == 2 then
			
	        -- Вызываем необходимую функцию
			
	    end
	end
    end
end