Странная наблюдается закономерность. Как и в случае с SearchItems, https://forum.quik.ru/messages/forum10/message15516/topic36/#message15516 пользоваться функциями QLUA непосредственно в реальных ситуациях крайне неудобно. Всегда нужны какие-от дополнительные обертки, костыли ... Вот и SetUpdateCallback для CreateDataSource. В руководстве приведен замечательный пример, который сразу же вызывает вопросы (такие же как и в случае с SearchItems) Там функция обратного вызова содержит явное использование источника данных, который никак туда не передается. Это что же, для каждого источника писать свою функцию, даже когда нужна одинаковая стандартная обработка ? Фактически так и есть и остроумное решение https://forum.quik.ru/messages/forum10/message1689/topic233/#message1689 лишь скрывает этот факт (еще одна обертка).
С другой стороны, ds:SetUpdateCallback(ucb) эквивалентен ds.SetUpdateCallback(ds,ucb) и источник данных должен быть доступен в SetUpdateCallback через self, но тогда что мешает явно передать его ucb ?
Андрей 77 написал: function ucb(index,ds) c = ds:C(index) ... end
for i=1,n do sec.ds = CreateDataSource(sec.ClassCode,sec.SecCode,sec.Int) sec.ds:SetUpdateCallback(ucb) end
т е Вам не нравится такое решение:
for i=1,n do sec.ds = CreateDataSource(sec.ClassCode,sec.SecCode,sec.Int) sec.ds:SetUpdateCallback(function (index) ucb(index,ds) end) end -------- по причине лишнего вызова функции? Понятно.