Set Table Notification Callback #
Задание функции обратного вызова для обработки событий в таблице. В случае успешного завершения функция возвращает «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)
Параметры: #
Для 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 равны нулю.
Примеры: #
-- Создаем новую переменную
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
